songtradr_api_client_ruby 1.12.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/Gemfile.lock +76 -0
  4. data/README.md +223 -0
  5. data/Rakefile +10 -0
  6. data/docs/AllowedValuesApi.md +200 -0
  7. data/docs/CategoryMediumDTO.md +22 -0
  8. data/docs/CategoryMinimalDTO.md +18 -0
  9. data/docs/ConfigAccessDTO.md +20 -0
  10. data/docs/ConfigIdentifierDTO.md +20 -0
  11. data/docs/ContributorTypeDTO.md +18 -0
  12. data/docs/ErrorResponse.md +26 -0
  13. data/docs/FieldSummaryDTO.md +22 -0
  14. data/docs/FileDTO.md +50 -0
  15. data/docs/FileListDTO.md +24 -0
  16. data/docs/FileMinimalWithUrlDTO.md +22 -0
  17. data/docs/FileSmallDTO.md +46 -0
  18. data/docs/FileUploadDTO.md +22 -0
  19. data/docs/FileWIthUrlDTO.md +20 -0
  20. data/docs/FilesSummaryDTO.md +30 -0
  21. data/docs/ForgotPasswordDTO.md +20 -0
  22. data/docs/GenreDTO.md +20 -0
  23. data/docs/GenreMinimalDTO.md +18 -0
  24. data/docs/GenresSummaryDTO.md +22 -0
  25. data/docs/InitPutRecordingAudioDTO.md +22 -0
  26. data/docs/JwtTokenDTO.md +22 -0
  27. data/docs/LoginDTO.md +24 -0
  28. data/docs/MusicalFeaturesDTO.md +186 -0
  29. data/docs/PLineDTO.md +20 -0
  30. data/docs/PartyApi.md +75 -0
  31. data/docs/PartyLargeDTO.md +32 -0
  32. data/docs/PartySmallDTO.md +20 -0
  33. data/docs/PlaylistApi.md +221 -0
  34. data/docs/PlaylistLargeDTO.md +38 -0
  35. data/docs/ProductMediumDTO.md +34 -0
  36. data/docs/ProductPartyDTO.md +20 -0
  37. data/docs/RecordingApi.md +789 -0
  38. data/docs/RecordingForSimilaritySearchDTO.md +20 -0
  39. data/docs/RecordingGenrePredictionDTO.md +22 -0
  40. data/docs/RecordingLargeDTO.md +40 -0
  41. data/docs/RecordingListDTO.md +24 -0
  42. data/docs/RecordingMediumDTO.md +36 -0
  43. data/docs/RecordingMinimalWithMusicalFeaturesDTO.md +20 -0
  44. data/docs/RecordingMinimalWithTaggramsDTO.md +22 -0
  45. data/docs/RecordingMinimalWithTagstrengthsDTO.md +20 -0
  46. data/docs/RecordingPartyDTO.md +20 -0
  47. data/docs/RecordingPlaylistDTO.md +24 -0
  48. data/docs/RecordingSmallDTO.md +24 -0
  49. data/docs/RecordingTagSmallDTO.md +18 -0
  50. data/docs/SaveFileRecordingDTO.md +236 -0
  51. data/docs/SavePlaylistDTO.md +34 -0
  52. data/docs/SaveRecordingGenreDTO.md +22 -0
  53. data/docs/SaveRecordingPartyDTO.md +20 -0
  54. data/docs/SaveRecordingPlaylistDTO.md +22 -0
  55. data/docs/SaveRecordingTagDTO.md +20 -0
  56. data/docs/SaveReferrerDTO.md +20 -0
  57. data/docs/SaveTaggramsDTO.md +82 -0
  58. data/docs/SaveUserDTO.md +28 -0
  59. data/docs/SearchFilterValuesDTO.md +98 -0
  60. data/docs/SearchRecordingGranularAbstractionDTO.md +20 -0
  61. data/docs/SearchRecordingGranularDTO.md +20 -0
  62. data/docs/SignUpDTO.md +24 -0
  63. data/docs/TagDTO.md +22 -0
  64. data/docs/TagSmallDTO.md +20 -0
  65. data/docs/TaggramDTO.md +26 -0
  66. data/docs/TagsSummaryDTO.md +22 -0
  67. data/docs/TagstrengthDTO.md +26 -0
  68. data/docs/TitleDTO.md +18 -0
  69. data/docs/TokenRequest.md +18 -0
  70. data/docs/TrackToMediumProductDTO.md +22 -0
  71. data/docs/UpdatePasswordDTO.md +20 -0
  72. data/docs/UsageDTO.md +18 -0
  73. data/docs/UserApi.md +1936 -0
  74. data/docs/UserDTO.md +56 -0
  75. data/getspec.rb +10 -0
  76. data/git_push.sh +57 -0
  77. data/lib/songtradr_api_client_ruby/api/allowed_values_api.rb +213 -0
  78. data/lib/songtradr_api_client_ruby/api/party_api.rb +84 -0
  79. data/lib/songtradr_api_client_ruby/api/playlist_api.rb +222 -0
  80. data/lib/songtradr_api_client_ruby/api/recording_api.rb +900 -0
  81. data/lib/songtradr_api_client_ruby/api/user_api.rb +2642 -0
  82. data/lib/songtradr_api_client_ruby/api_client.rb +428 -0
  83. data/lib/songtradr_api_client_ruby/api_error.rb +58 -0
  84. data/lib/songtradr_api_client_ruby/configuration.rb +380 -0
  85. data/lib/songtradr_api_client_ruby/models/category_medium_dto.rb +250 -0
  86. data/lib/songtradr_api_client_ruby/models/category_minimal_dto.rb +225 -0
  87. data/lib/songtradr_api_client_ruby/models/config_access_dto.rb +287 -0
  88. data/lib/songtradr_api_client_ruby/models/config_identifier_dto.rb +239 -0
  89. data/lib/songtradr_api_client_ruby/models/contributor_type_dto.rb +225 -0
  90. data/lib/songtradr_api_client_ruby/models/error_response.rb +276 -0
  91. data/lib/songtradr_api_client_ruby/models/field_summary_dto.rb +253 -0
  92. data/lib/songtradr_api_client_ruby/models/file_dto.rb +450 -0
  93. data/lib/songtradr_api_client_ruby/models/file_list_dto.rb +269 -0
  94. data/lib/songtradr_api_client_ruby/models/file_minimal_with_url_dto.rb +253 -0
  95. data/lib/songtradr_api_client_ruby/models/file_small_dto.rb +432 -0
  96. data/lib/songtradr_api_client_ruby/models/file_upload_dto.rb +244 -0
  97. data/lib/songtradr_api_client_ruby/models/file_w_ith_url_dto.rb +239 -0
  98. data/lib/songtradr_api_client_ruby/models/files_summary_dto.rb +287 -0
  99. data/lib/songtradr_api_client_ruby/models/forgot_password_dto.rb +267 -0
  100. data/lib/songtradr_api_client_ruby/models/genre_dto.rb +239 -0
  101. data/lib/songtradr_api_client_ruby/models/genre_minimal_dto.rb +225 -0
  102. data/lib/songtradr_api_client_ruby/models/genres_summary_dto.rb +248 -0
  103. data/lib/songtradr_api_client_ruby/models/init_put_recording_audio_dto.rb +238 -0
  104. data/lib/songtradr_api_client_ruby/models/jwt_token_dto.rb +248 -0
  105. data/lib/songtradr_api_client_ruby/models/login_dto.rb +257 -0
  106. data/lib/songtradr_api_client_ruby/models/musical_features_dto.rb +1532 -0
  107. data/lib/songtradr_api_client_ruby/models/p_line_dto.rb +234 -0
  108. data/lib/songtradr_api_client_ruby/models/party_large_dto.rb +288 -0
  109. data/lib/songtradr_api_client_ruby/models/party_small_dto.rb +239 -0
  110. data/lib/songtradr_api_client_ruby/models/playlist_large_dto.rb +353 -0
  111. data/lib/songtradr_api_client_ruby/models/product_medium_dto.rb +316 -0
  112. data/lib/songtradr_api_client_ruby/models/product_party_dto.rb +236 -0
  113. data/lib/songtradr_api_client_ruby/models/recording_for_similarity_search_dto.rb +239 -0
  114. data/lib/songtradr_api_client_ruby/models/recording_genre_prediction_dto.rb +253 -0
  115. data/lib/songtradr_api_client_ruby/models/recording_large_dto.rb +366 -0
  116. data/lib/songtradr_api_client_ruby/models/recording_list_dto.rb +269 -0
  117. data/lib/songtradr_api_client_ruby/models/recording_medium_dto.rb +340 -0
  118. data/lib/songtradr_api_client_ruby/models/recording_minimal_with_musical_features_dto.rb +236 -0
  119. data/lib/songtradr_api_client_ruby/models/recording_minimal_with_taggrams_dto.rb +248 -0
  120. data/lib/songtradr_api_client_ruby/models/recording_minimal_with_tagstrengths_dto.rb +236 -0
  121. data/lib/songtradr_api_client_ruby/models/recording_party_dto.rb +236 -0
  122. data/lib/songtradr_api_client_ruby/models/recording_playlist_dto.rb +247 -0
  123. data/lib/songtradr_api_client_ruby/models/recording_small_dto.rb +268 -0
  124. data/lib/songtradr_api_client_ruby/models/recording_tag_small_dto.rb +225 -0
  125. data/lib/songtradr_api_client_ruby/models/save_file_recording_dto.rb +1847 -0
  126. data/lib/songtradr_api_client_ruby/models/save_playlist_dto.rb +350 -0
  127. data/lib/songtradr_api_client_ruby/models/save_recording_genre_dto.rb +243 -0
  128. data/lib/songtradr_api_client_ruby/models/save_recording_party_dto.rb +273 -0
  129. data/lib/songtradr_api_client_ruby/models/save_recording_playlist_dto.rb +248 -0
  130. data/lib/songtradr_api_client_ruby/models/save_recording_tag_dto.rb +234 -0
  131. data/lib/songtradr_api_client_ruby/models/save_referrer_dto.rb +229 -0
  132. data/lib/songtradr_api_client_ruby/models/save_taggrams_dto.rb +574 -0
  133. data/lib/songtradr_api_client_ruby/models/save_user_dto.rb +317 -0
  134. data/lib/songtradr_api_client_ruby/models/search_filter_values_dto.rb +867 -0
  135. data/lib/songtradr_api_client_ruby/models/search_recording_granular_abstraction_dto.rb +270 -0
  136. data/lib/songtradr_api_client_ruby/models/search_recording_granular_dto.rb +235 -0
  137. data/lib/songtradr_api_client_ruby/models/sign_up_dto.rb +262 -0
  138. data/lib/songtradr_api_client_ruby/models/tag_dto.rb +250 -0
  139. data/lib/songtradr_api_client_ruby/models/tag_small_dto.rb +239 -0
  140. data/lib/songtradr_api_client_ruby/models/taggram_dto.rb +271 -0
  141. data/lib/songtradr_api_client_ruby/models/tags_summary_dto.rb +250 -0
  142. data/lib/songtradr_api_client_ruby/models/tagstrength_dto.rb +269 -0
  143. data/lib/songtradr_api_client_ruby/models/title_dto.rb +225 -0
  144. data/lib/songtradr_api_client_ruby/models/token_request.rb +224 -0
  145. data/lib/songtradr_api_client_ruby/models/track_to_medium_product_dto.rb +248 -0
  146. data/lib/songtradr_api_client_ruby/models/update_password_dto.rb +238 -0
  147. data/lib/songtradr_api_client_ruby/models/usage_dto.rb +220 -0
  148. data/lib/songtradr_api_client_ruby/models/user_dto.rb +481 -0
  149. data/lib/songtradr_api_client_ruby/version.rb +15 -0
  150. data/lib/songtradr_api_client_ruby.rb +108 -0
  151. data/openapi-generator-config.yaml +10 -0
  152. data/songtradr_api_client_ruby.gemspec +39 -0
  153. data/spec/api/allowed_values_api_spec.rb +68 -0
  154. data/spec/api/party_api_spec.rb +46 -0
  155. data/spec/api/playlist_api_spec.rb +72 -0
  156. data/spec/api/recording_api_spec.rb +192 -0
  157. data/spec/api/user_api_spec.rb +507 -0
  158. data/spec/api_client_spec.rb +223 -0
  159. data/spec/configuration_spec.rb +82 -0
  160. data/spec/models/category_medium_dto_spec.rb +46 -0
  161. data/spec/models/category_minimal_dto_spec.rb +34 -0
  162. data/spec/models/config_access_dto_spec.rb +48 -0
  163. data/spec/models/config_identifier_dto_spec.rb +40 -0
  164. data/spec/models/contributor_type_dto_spec.rb +34 -0
  165. data/spec/models/error_response_spec.rb +58 -0
  166. data/spec/models/field_summary_dto_spec.rb +46 -0
  167. data/spec/models/file_dto_spec.rb +142 -0
  168. data/spec/models/file_list_dto_spec.rb +52 -0
  169. data/spec/models/file_minimal_with_url_dto_spec.rb +46 -0
  170. data/spec/models/file_small_dto_spec.rb +130 -0
  171. data/spec/models/file_upload_dto_spec.rb +46 -0
  172. data/spec/models/file_w_ith_url_dto_spec.rb +40 -0
  173. data/spec/models/files_summary_dto_spec.rb +70 -0
  174. data/spec/models/forgot_password_dto_spec.rb +44 -0
  175. data/spec/models/genre_dto_spec.rb +40 -0
  176. data/spec/models/genre_minimal_dto_spec.rb +34 -0
  177. data/spec/models/genres_summary_dto_spec.rb +46 -0
  178. data/spec/models/init_put_recording_audio_dto_spec.rb +46 -0
  179. data/spec/models/jwt_token_dto_spec.rb +46 -0
  180. data/spec/models/login_dto_spec.rb +52 -0
  181. data/spec/models/musical_features_dto_spec.rb +706 -0
  182. data/spec/models/p_line_dto_spec.rb +40 -0
  183. data/spec/models/party_large_dto_spec.rb +76 -0
  184. data/spec/models/party_small_dto_spec.rb +40 -0
  185. data/spec/models/playlist_large_dto_spec.rb +98 -0
  186. data/spec/models/product_medium_dto_spec.rb +82 -0
  187. data/spec/models/product_party_dto_spec.rb +40 -0
  188. data/spec/models/recording_for_similarity_search_dto_spec.rb +40 -0
  189. data/spec/models/recording_genre_prediction_dto_spec.rb +46 -0
  190. data/spec/models/recording_large_dto_spec.rb +100 -0
  191. data/spec/models/recording_list_dto_spec.rb +52 -0
  192. data/spec/models/recording_medium_dto_spec.rb +88 -0
  193. data/spec/models/recording_minimal_with_musical_features_dto_spec.rb +40 -0
  194. data/spec/models/recording_minimal_with_taggrams_dto_spec.rb +46 -0
  195. data/spec/models/recording_minimal_with_tagstrengths_dto_spec.rb +40 -0
  196. data/spec/models/recording_party_dto_spec.rb +40 -0
  197. data/spec/models/recording_playlist_dto_spec.rb +52 -0
  198. data/spec/models/recording_small_dto_spec.rb +52 -0
  199. data/spec/models/recording_tag_small_dto_spec.rb +34 -0
  200. data/spec/models/save_file_recording_dto_spec.rb +880 -0
  201. data/spec/models/save_playlist_dto_spec.rb +86 -0
  202. data/spec/models/save_recording_genre_dto_spec.rb +46 -0
  203. data/spec/models/save_recording_party_dto_spec.rb +44 -0
  204. data/spec/models/save_recording_playlist_dto_spec.rb +46 -0
  205. data/spec/models/save_recording_tag_dto_spec.rb +40 -0
  206. data/spec/models/save_referrer_dto_spec.rb +40 -0
  207. data/spec/models/save_taggrams_dto_spec.rb +226 -0
  208. data/spec/models/save_user_dto_spec.rb +72 -0
  209. data/spec/models/search_filter_values_dto_spec.rb +274 -0
  210. data/spec/models/search_recording_granular_abstraction_dto_spec.rb +44 -0
  211. data/spec/models/search_recording_granular_dto_spec.rb +40 -0
  212. data/spec/models/sign_up_dto_spec.rb +52 -0
  213. data/spec/models/tag_dto_spec.rb +46 -0
  214. data/spec/models/tag_small_dto_spec.rb +40 -0
  215. data/spec/models/taggram_dto_spec.rb +58 -0
  216. data/spec/models/tags_summary_dto_spec.rb +46 -0
  217. data/spec/models/tagstrength_dto_spec.rb +58 -0
  218. data/spec/models/title_dto_spec.rb +34 -0
  219. data/spec/models/token_request_spec.rb +34 -0
  220. data/spec/models/track_to_medium_product_dto_spec.rb +46 -0
  221. data/spec/models/update_password_dto_spec.rb +40 -0
  222. data/spec/models/usage_dto_spec.rb +34 -0
  223. data/spec/models/user_dto_spec.rb +148 -0
  224. data/spec/spec_helper.rb +111 -0
  225. metadata +412 -0
@@ -0,0 +1,1847 @@
1
+ =begin
2
+ #Songtradr API
3
+
4
+ #This is the Songtradr API. Use it to retrieve deep music metadata and trigger processes like auto-tagging. You can also use the API to manage your account and musicube cloud data. **Authentication** 1. Reach out to support@songtradr.com to receive a free account or use your login data if you are already signed up. 2. To authenticate, you need to login via the POST /api/v1/user/login endpoint. 3. The endpoint responds with a jwtToken which you can use in all following API requests as a bearer token. **Rate Limiting** The current limit is 120 Requests per minute. Reach out to us via support@songtradr.com if you need to request more. **Getting Started with auto-tagging** 1. If you want to get your own files auto-tagged, use the POST /api/v1/user/file/{name}/initUpload endpoint. It responds with a presigned S3 link where you can upload your file. 2. You can check the processing status of your file via the GET /api/v1/user/file/{name}/filesStatus endpoint. 3. As soon as processing is done, you can request the generated data via the GET /api/v1/user/files endpoint. **Getting Started with search** You can either search the released music via the /public/recording endpoints or your own private uploaded music via the /user/file/ endpoints. 1. If you want to search the world's released music, a good starting point is the GET /api/v1/public/recording/search endpoint. Please find the extensive list of parameters that serve as semantic search filters. 2. If you want to search your own previously uploaded music, a good starting point is the GET GET /api/v1/user/files endpoint. It has the same extensive list of parameters that serve as semantic search filters.
5
+
6
+ The version of the OpenAPI document: 1.12.21
7
+ Contact: info@songtradr.com
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 7.0.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module SongtradrApiClientRuby
17
+ # Data crafted by AI or users.
18
+ class SaveFileRecordingDTO
19
+ attr_accessor :isrc
20
+
21
+ attr_accessor :name
22
+
23
+ attr_accessor :folder
24
+
25
+ attr_accessor :primary_mood_cluster_affinity
26
+
27
+ # Search for a language of the lyrics
28
+ attr_accessor :primary_mood_cluster
29
+
30
+ attr_accessor :secondary_mood_cluster_affinity
31
+
32
+ # Search for a language of the lyrics
33
+ attr_accessor :secondary_mood_cluster
34
+
35
+ attr_accessor :tertiary_mood_cluster_affinity
36
+
37
+ # Search for a language of the lyrics
38
+ attr_accessor :tertiary_mood_cluster
39
+
40
+ attr_accessor :valence_affinity
41
+
42
+ attr_accessor :arousal_affinity
43
+
44
+ attr_accessor :pleasantness_affinity
45
+
46
+ attr_accessor :engagement_affinity
47
+
48
+ # Search for a valence
49
+ attr_accessor :valence
50
+
51
+ # Search for an arousal
52
+ attr_accessor :arousal
53
+
54
+ # Search for pleasantness
55
+ attr_accessor :pleasantness
56
+
57
+ # Search for an engagement
58
+ attr_accessor :engagement
59
+
60
+ # Search for a vocal gender or instrumental songs
61
+ attr_accessor :vocals
62
+
63
+ attr_accessor :vocals_affinity
64
+
65
+ # Search for a dominant instrument
66
+ attr_accessor :dominant_instrument
67
+
68
+ attr_accessor :dominant_instrument_affinity
69
+
70
+ attr_accessor :secondary_instrument_affinity
71
+
72
+ # Search for a dominant instrument
73
+ attr_accessor :secondary_instrument
74
+
75
+ attr_accessor :tertiary_instrument_affinity
76
+
77
+ # Search for a dominant instrument
78
+ attr_accessor :tertiary_instrument
79
+
80
+ # Search for energy
81
+ attr_accessor :energy
82
+
83
+ attr_accessor :energy_affinity
84
+
85
+ # Search for type of sound generation
86
+ attr_accessor :sound_generation
87
+
88
+ attr_accessor :sound_generation_affinity
89
+
90
+ # Search for tempo
91
+ attr_accessor :tempo
92
+
93
+ attr_accessor :tempo_affinity
94
+
95
+ # Search for a tonal scale
96
+ attr_accessor :scale
97
+
98
+ attr_accessor :scale_affinity
99
+
100
+ # Search for rhythm
101
+ attr_accessor :rhythm
102
+
103
+ attr_accessor :rhythm_affinity
104
+
105
+ # Search for a sound character
106
+ attr_accessor :primary_sound_character
107
+
108
+ attr_accessor :primary_sound_character_affinity
109
+
110
+ attr_accessor :timbre_affinity
111
+
112
+ attr_accessor :roughness_affinity
113
+
114
+ attr_accessor :tonality_affinity
115
+
116
+ attr_accessor :harmony_affinity
117
+
118
+ attr_accessor :texture_affinity
119
+
120
+ attr_accessor :groovyness_affinity
121
+
122
+ attr_accessor :space_affinity
123
+
124
+ # Search for timbre
125
+ attr_accessor :timbre
126
+
127
+ # Search for roughness
128
+ attr_accessor :roughness
129
+
130
+ # Search for tonality
131
+ attr_accessor :tonality
132
+
133
+ # Search for a degree of harmoniousness
134
+ attr_accessor :harmony
135
+
136
+ # Search for texture
137
+ attr_accessor :texture
138
+
139
+ # Search for groovyness
140
+ attr_accessor :groovyness
141
+
142
+ # Search for space
143
+ attr_accessor :space
144
+
145
+ attr_accessor :bpm
146
+
147
+ # Search for a harmonic key
148
+ attr_accessor :key
149
+
150
+ attr_accessor :key_affinity
151
+
152
+ attr_accessor :production_rating
153
+
154
+ attr_accessor :production_rating_affinity
155
+
156
+ attr_accessor :performance_rating
157
+
158
+ attr_accessor :performance_rating_affinity
159
+
160
+ attr_accessor :song_rating
161
+
162
+ attr_accessor :song_rating_affinity
163
+
164
+ attr_accessor :audience_gender
165
+
166
+ attr_accessor :audience_gender_affinity
167
+
168
+ attr_accessor :audience_region
169
+
170
+ attr_accessor :audience_region_affinity
171
+
172
+ attr_accessor :secondary_audience_region_affinity
173
+
174
+ attr_accessor :secondary_audience_region
175
+
176
+ attr_accessor :tertiary_audience_region_affinity
177
+
178
+ attr_accessor :tertiary_audience_region
179
+
180
+ attr_accessor :audience_age
181
+
182
+ attr_accessor :audience_age_affinity
183
+
184
+ attr_accessor :secondary_audience_age
185
+
186
+ attr_accessor :secondary_audience_age_affinity
187
+
188
+ attr_accessor :tertiary_audience_age
189
+
190
+ attr_accessor :tertiary_audience_age_affinity
191
+
192
+ # Search for origin decade
193
+ attr_accessor :origin_decade
194
+
195
+ attr_accessor :origin_decade_affinity
196
+
197
+ attr_accessor :language_of_performance
198
+
199
+ attr_accessor :language_of_performance_affinity
200
+
201
+ attr_accessor :origin_region
202
+
203
+ attr_accessor :origin_region_affinity
204
+
205
+ attr_accessor :taggrams
206
+
207
+ attr_accessor :embeddings
208
+
209
+ attr_accessor :level1_genre
210
+
211
+ attr_accessor :level1_genre_affinity
212
+
213
+ attr_accessor :secondary_level1_genre
214
+
215
+ attr_accessor :secondary_level1_genre_affinity
216
+
217
+ attr_accessor :tertiary_level1_genre
218
+
219
+ attr_accessor :tertiary_level1_genre_affinity
220
+
221
+ attr_accessor :level2_genre
222
+
223
+ attr_accessor :level2_genre_affinity
224
+
225
+ attr_accessor :secondary_level2_genre
226
+
227
+ attr_accessor :secondary_level2_genre_affinity
228
+
229
+ attr_accessor :tertiary_level2_genre
230
+
231
+ attr_accessor :tertiary_level2_genre_affinity
232
+
233
+ # Search for curatebility
234
+ attr_accessor :curateability
235
+
236
+ attr_accessor :curateability_affinity
237
+
238
+ # Search for use case
239
+ attr_accessor :use_case
240
+
241
+ attr_accessor :use_case_affinity
242
+
243
+ # Search for social media suitability
244
+ attr_accessor :social_media
245
+
246
+ attr_accessor :social_media_affinity
247
+
248
+ # Search for Industry suitability
249
+ attr_accessor :industry_suitability
250
+
251
+ attr_accessor :industry_suitability_affinity
252
+
253
+ attr_accessor :created_by_version
254
+
255
+ attr_accessor :tags
256
+
257
+ attr_accessor :genres
258
+
259
+ attr_accessor :parties
260
+
261
+ attr_accessor :iswc
262
+
263
+ attr_accessor :proprietary_id_gema
264
+
265
+ attr_accessor :title
266
+
267
+ attr_accessor :version_title
268
+
269
+ class EnumAttributeValidator
270
+ attr_reader :datatype
271
+ attr_reader :allowable_values
272
+
273
+ def initialize(datatype, allowable_values)
274
+ @allowable_values = allowable_values.map do |value|
275
+ case datatype.to_s
276
+ when /Integer/i
277
+ value.to_i
278
+ when /Float/i
279
+ value.to_f
280
+ else
281
+ value
282
+ end
283
+ end
284
+ end
285
+
286
+ def valid?(value)
287
+ !value || allowable_values.include?(value)
288
+ end
289
+ end
290
+
291
+ # Attribute mapping from ruby-style variable name to JSON key.
292
+ def self.attribute_map
293
+ {
294
+ :'isrc' => :'isrc',
295
+ :'name' => :'name',
296
+ :'folder' => :'folder',
297
+ :'primary_mood_cluster_affinity' => :'primaryMoodClusterAffinity',
298
+ :'primary_mood_cluster' => :'primaryMoodCluster',
299
+ :'secondary_mood_cluster_affinity' => :'secondaryMoodClusterAffinity',
300
+ :'secondary_mood_cluster' => :'secondaryMoodCluster',
301
+ :'tertiary_mood_cluster_affinity' => :'tertiaryMoodClusterAffinity',
302
+ :'tertiary_mood_cluster' => :'tertiaryMoodCluster',
303
+ :'valence_affinity' => :'valenceAffinity',
304
+ :'arousal_affinity' => :'arousalAffinity',
305
+ :'pleasantness_affinity' => :'pleasantnessAffinity',
306
+ :'engagement_affinity' => :'engagementAffinity',
307
+ :'valence' => :'valence',
308
+ :'arousal' => :'arousal',
309
+ :'pleasantness' => :'pleasantness',
310
+ :'engagement' => :'engagement',
311
+ :'vocals' => :'vocals',
312
+ :'vocals_affinity' => :'vocalsAffinity',
313
+ :'dominant_instrument' => :'dominantInstrument',
314
+ :'dominant_instrument_affinity' => :'dominantInstrumentAffinity',
315
+ :'secondary_instrument_affinity' => :'secondaryInstrumentAffinity',
316
+ :'secondary_instrument' => :'secondaryInstrument',
317
+ :'tertiary_instrument_affinity' => :'tertiaryInstrumentAffinity',
318
+ :'tertiary_instrument' => :'tertiaryInstrument',
319
+ :'energy' => :'energy',
320
+ :'energy_affinity' => :'energyAffinity',
321
+ :'sound_generation' => :'soundGeneration',
322
+ :'sound_generation_affinity' => :'soundGenerationAffinity',
323
+ :'tempo' => :'tempo',
324
+ :'tempo_affinity' => :'tempoAffinity',
325
+ :'scale' => :'scale',
326
+ :'scale_affinity' => :'scaleAffinity',
327
+ :'rhythm' => :'rhythm',
328
+ :'rhythm_affinity' => :'rhythmAffinity',
329
+ :'primary_sound_character' => :'primarySoundCharacter',
330
+ :'primary_sound_character_affinity' => :'primarySoundCharacterAffinity',
331
+ :'timbre_affinity' => :'timbreAffinity',
332
+ :'roughness_affinity' => :'roughnessAffinity',
333
+ :'tonality_affinity' => :'tonalityAffinity',
334
+ :'harmony_affinity' => :'harmonyAffinity',
335
+ :'texture_affinity' => :'textureAffinity',
336
+ :'groovyness_affinity' => :'groovynessAffinity',
337
+ :'space_affinity' => :'spaceAffinity',
338
+ :'timbre' => :'timbre',
339
+ :'roughness' => :'roughness',
340
+ :'tonality' => :'tonality',
341
+ :'harmony' => :'harmony',
342
+ :'texture' => :'texture',
343
+ :'groovyness' => :'groovyness',
344
+ :'space' => :'space',
345
+ :'bpm' => :'bpm',
346
+ :'key' => :'key',
347
+ :'key_affinity' => :'keyAffinity',
348
+ :'production_rating' => :'productionRating',
349
+ :'production_rating_affinity' => :'productionRatingAffinity',
350
+ :'performance_rating' => :'performanceRating',
351
+ :'performance_rating_affinity' => :'performanceRatingAffinity',
352
+ :'song_rating' => :'songRating',
353
+ :'song_rating_affinity' => :'songRatingAffinity',
354
+ :'audience_gender' => :'audienceGender',
355
+ :'audience_gender_affinity' => :'audienceGenderAffinity',
356
+ :'audience_region' => :'audienceRegion',
357
+ :'audience_region_affinity' => :'audienceRegionAffinity',
358
+ :'secondary_audience_region_affinity' => :'secondaryAudienceRegionAffinity',
359
+ :'secondary_audience_region' => :'secondaryAudienceRegion',
360
+ :'tertiary_audience_region_affinity' => :'tertiaryAudienceRegionAffinity',
361
+ :'tertiary_audience_region' => :'tertiaryAudienceRegion',
362
+ :'audience_age' => :'audienceAge',
363
+ :'audience_age_affinity' => :'audienceAgeAffinity',
364
+ :'secondary_audience_age' => :'secondaryAudienceAge',
365
+ :'secondary_audience_age_affinity' => :'secondaryAudienceAgeAffinity',
366
+ :'tertiary_audience_age' => :'tertiaryAudienceAge',
367
+ :'tertiary_audience_age_affinity' => :'tertiaryAudienceAgeAffinity',
368
+ :'origin_decade' => :'originDecade',
369
+ :'origin_decade_affinity' => :'originDecadeAffinity',
370
+ :'language_of_performance' => :'languageOfPerformance',
371
+ :'language_of_performance_affinity' => :'languageOfPerformanceAffinity',
372
+ :'origin_region' => :'originRegion',
373
+ :'origin_region_affinity' => :'originRegionAffinity',
374
+ :'taggrams' => :'taggrams',
375
+ :'embeddings' => :'embeddings',
376
+ :'level1_genre' => :'level1Genre',
377
+ :'level1_genre_affinity' => :'level1GenreAffinity',
378
+ :'secondary_level1_genre' => :'secondaryLevel1Genre',
379
+ :'secondary_level1_genre_affinity' => :'secondaryLevel1GenreAffinity',
380
+ :'tertiary_level1_genre' => :'tertiaryLevel1Genre',
381
+ :'tertiary_level1_genre_affinity' => :'tertiaryLevel1GenreAffinity',
382
+ :'level2_genre' => :'level2Genre',
383
+ :'level2_genre_affinity' => :'level2GenreAffinity',
384
+ :'secondary_level2_genre' => :'secondaryLevel2Genre',
385
+ :'secondary_level2_genre_affinity' => :'secondaryLevel2GenreAffinity',
386
+ :'tertiary_level2_genre' => :'tertiaryLevel2Genre',
387
+ :'tertiary_level2_genre_affinity' => :'tertiaryLevel2GenreAffinity',
388
+ :'curateability' => :'curateability',
389
+ :'curateability_affinity' => :'curateabilityAffinity',
390
+ :'use_case' => :'useCase',
391
+ :'use_case_affinity' => :'useCaseAffinity',
392
+ :'social_media' => :'socialMedia',
393
+ :'social_media_affinity' => :'socialMediaAffinity',
394
+ :'industry_suitability' => :'industrySuitability',
395
+ :'industry_suitability_affinity' => :'industrySuitabilityAffinity',
396
+ :'created_by_version' => :'createdByVersion',
397
+ :'tags' => :'tags',
398
+ :'genres' => :'genres',
399
+ :'parties' => :'parties',
400
+ :'iswc' => :'iswc',
401
+ :'proprietary_id_gema' => :'proprietaryIdGema',
402
+ :'title' => :'title',
403
+ :'version_title' => :'versionTitle'
404
+ }
405
+ end
406
+
407
+ # Returns all the JSON keys this model knows about
408
+ def self.acceptable_attributes
409
+ attribute_map.values
410
+ end
411
+
412
+ # Attribute type mapping.
413
+ def self.openapi_types
414
+ {
415
+ :'isrc' => :'String',
416
+ :'name' => :'String',
417
+ :'folder' => :'String',
418
+ :'primary_mood_cluster_affinity' => :'Float',
419
+ :'primary_mood_cluster' => :'String',
420
+ :'secondary_mood_cluster_affinity' => :'Float',
421
+ :'secondary_mood_cluster' => :'String',
422
+ :'tertiary_mood_cluster_affinity' => :'Float',
423
+ :'tertiary_mood_cluster' => :'String',
424
+ :'valence_affinity' => :'Float',
425
+ :'arousal_affinity' => :'Float',
426
+ :'pleasantness_affinity' => :'Float',
427
+ :'engagement_affinity' => :'Float',
428
+ :'valence' => :'String',
429
+ :'arousal' => :'String',
430
+ :'pleasantness' => :'String',
431
+ :'engagement' => :'String',
432
+ :'vocals' => :'String',
433
+ :'vocals_affinity' => :'Float',
434
+ :'dominant_instrument' => :'String',
435
+ :'dominant_instrument_affinity' => :'Float',
436
+ :'secondary_instrument_affinity' => :'Float',
437
+ :'secondary_instrument' => :'String',
438
+ :'tertiary_instrument_affinity' => :'Float',
439
+ :'tertiary_instrument' => :'String',
440
+ :'energy' => :'String',
441
+ :'energy_affinity' => :'Float',
442
+ :'sound_generation' => :'String',
443
+ :'sound_generation_affinity' => :'Float',
444
+ :'tempo' => :'String',
445
+ :'tempo_affinity' => :'Float',
446
+ :'scale' => :'String',
447
+ :'scale_affinity' => :'Float',
448
+ :'rhythm' => :'String',
449
+ :'rhythm_affinity' => :'Float',
450
+ :'primary_sound_character' => :'String',
451
+ :'primary_sound_character_affinity' => :'Float',
452
+ :'timbre_affinity' => :'Float',
453
+ :'roughness_affinity' => :'Float',
454
+ :'tonality_affinity' => :'Float',
455
+ :'harmony_affinity' => :'Float',
456
+ :'texture_affinity' => :'Float',
457
+ :'groovyness_affinity' => :'Float',
458
+ :'space_affinity' => :'Float',
459
+ :'timbre' => :'String',
460
+ :'roughness' => :'String',
461
+ :'tonality' => :'String',
462
+ :'harmony' => :'String',
463
+ :'texture' => :'String',
464
+ :'groovyness' => :'String',
465
+ :'space' => :'String',
466
+ :'bpm' => :'Float',
467
+ :'key' => :'String',
468
+ :'key_affinity' => :'Float',
469
+ :'production_rating' => :'String',
470
+ :'production_rating_affinity' => :'Float',
471
+ :'performance_rating' => :'String',
472
+ :'performance_rating_affinity' => :'Float',
473
+ :'song_rating' => :'String',
474
+ :'song_rating_affinity' => :'Float',
475
+ :'audience_gender' => :'String',
476
+ :'audience_gender_affinity' => :'Float',
477
+ :'audience_region' => :'String',
478
+ :'audience_region_affinity' => :'Float',
479
+ :'secondary_audience_region_affinity' => :'Float',
480
+ :'secondary_audience_region' => :'String',
481
+ :'tertiary_audience_region_affinity' => :'Float',
482
+ :'tertiary_audience_region' => :'String',
483
+ :'audience_age' => :'String',
484
+ :'audience_age_affinity' => :'Float',
485
+ :'secondary_audience_age' => :'String',
486
+ :'secondary_audience_age_affinity' => :'Float',
487
+ :'tertiary_audience_age' => :'String',
488
+ :'tertiary_audience_age_affinity' => :'Float',
489
+ :'origin_decade' => :'String',
490
+ :'origin_decade_affinity' => :'Float',
491
+ :'language_of_performance' => :'String',
492
+ :'language_of_performance_affinity' => :'Float',
493
+ :'origin_region' => :'String',
494
+ :'origin_region_affinity' => :'Float',
495
+ :'taggrams' => :'SaveTaggramsDTO',
496
+ :'embeddings' => :'Array<Float>',
497
+ :'level1_genre' => :'String',
498
+ :'level1_genre_affinity' => :'Float',
499
+ :'secondary_level1_genre' => :'String',
500
+ :'secondary_level1_genre_affinity' => :'Float',
501
+ :'tertiary_level1_genre' => :'String',
502
+ :'tertiary_level1_genre_affinity' => :'Float',
503
+ :'level2_genre' => :'String',
504
+ :'level2_genre_affinity' => :'Float',
505
+ :'secondary_level2_genre' => :'String',
506
+ :'secondary_level2_genre_affinity' => :'Float',
507
+ :'tertiary_level2_genre' => :'String',
508
+ :'tertiary_level2_genre_affinity' => :'Float',
509
+ :'curateability' => :'String',
510
+ :'curateability_affinity' => :'Float',
511
+ :'use_case' => :'String',
512
+ :'use_case_affinity' => :'Float',
513
+ :'social_media' => :'String',
514
+ :'social_media_affinity' => :'Float',
515
+ :'industry_suitability' => :'String',
516
+ :'industry_suitability_affinity' => :'Float',
517
+ :'created_by_version' => :'String',
518
+ :'tags' => :'Array<SaveRecordingTagDTO>',
519
+ :'genres' => :'Array<SaveRecordingGenreDTO>',
520
+ :'parties' => :'Array<SaveRecordingPartyDTO>',
521
+ :'iswc' => :'String',
522
+ :'proprietary_id_gema' => :'String',
523
+ :'title' => :'String',
524
+ :'version_title' => :'String'
525
+ }
526
+ end
527
+
528
+ # List of attributes with nullable: true
529
+ def self.openapi_nullable
530
+ Set.new([
531
+ ])
532
+ end
533
+
534
+ # Initializes the object
535
+ # @param [Hash] attributes Model attributes in the form of hash
536
+ def initialize(attributes = {})
537
+ if (!attributes.is_a?(Hash))
538
+ fail ArgumentError, "The input argument (attributes) must be a hash in `SongtradrApiClientRuby::SaveFileRecordingDTO` initialize method"
539
+ end
540
+
541
+ # check to see if the attribute exists and convert string to symbol for hash key
542
+ attributes = attributes.each_with_object({}) { |(k, v), h|
543
+ if (!self.class.attribute_map.key?(k.to_sym))
544
+ fail ArgumentError, "`#{k}` is not a valid attribute in `SongtradrApiClientRuby::SaveFileRecordingDTO`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
545
+ end
546
+ h[k.to_sym] = v
547
+ }
548
+
549
+ if attributes.key?(:'isrc')
550
+ self.isrc = attributes[:'isrc']
551
+ end
552
+
553
+ if attributes.key?(:'name')
554
+ self.name = attributes[:'name']
555
+ end
556
+
557
+ if attributes.key?(:'folder')
558
+ self.folder = attributes[:'folder']
559
+ end
560
+
561
+ if attributes.key?(:'primary_mood_cluster_affinity')
562
+ self.primary_mood_cluster_affinity = attributes[:'primary_mood_cluster_affinity']
563
+ end
564
+
565
+ if attributes.key?(:'primary_mood_cluster')
566
+ self.primary_mood_cluster = attributes[:'primary_mood_cluster']
567
+ end
568
+
569
+ if attributes.key?(:'secondary_mood_cluster_affinity')
570
+ self.secondary_mood_cluster_affinity = attributes[:'secondary_mood_cluster_affinity']
571
+ end
572
+
573
+ if attributes.key?(:'secondary_mood_cluster')
574
+ self.secondary_mood_cluster = attributes[:'secondary_mood_cluster']
575
+ end
576
+
577
+ if attributes.key?(:'tertiary_mood_cluster_affinity')
578
+ self.tertiary_mood_cluster_affinity = attributes[:'tertiary_mood_cluster_affinity']
579
+ end
580
+
581
+ if attributes.key?(:'tertiary_mood_cluster')
582
+ self.tertiary_mood_cluster = attributes[:'tertiary_mood_cluster']
583
+ end
584
+
585
+ if attributes.key?(:'valence_affinity')
586
+ self.valence_affinity = attributes[:'valence_affinity']
587
+ end
588
+
589
+ if attributes.key?(:'arousal_affinity')
590
+ self.arousal_affinity = attributes[:'arousal_affinity']
591
+ end
592
+
593
+ if attributes.key?(:'pleasantness_affinity')
594
+ self.pleasantness_affinity = attributes[:'pleasantness_affinity']
595
+ end
596
+
597
+ if attributes.key?(:'engagement_affinity')
598
+ self.engagement_affinity = attributes[:'engagement_affinity']
599
+ end
600
+
601
+ if attributes.key?(:'valence')
602
+ self.valence = attributes[:'valence']
603
+ end
604
+
605
+ if attributes.key?(:'arousal')
606
+ self.arousal = attributes[:'arousal']
607
+ end
608
+
609
+ if attributes.key?(:'pleasantness')
610
+ self.pleasantness = attributes[:'pleasantness']
611
+ end
612
+
613
+ if attributes.key?(:'engagement')
614
+ self.engagement = attributes[:'engagement']
615
+ end
616
+
617
+ if attributes.key?(:'vocals')
618
+ self.vocals = attributes[:'vocals']
619
+ end
620
+
621
+ if attributes.key?(:'vocals_affinity')
622
+ self.vocals_affinity = attributes[:'vocals_affinity']
623
+ end
624
+
625
+ if attributes.key?(:'dominant_instrument')
626
+ self.dominant_instrument = attributes[:'dominant_instrument']
627
+ end
628
+
629
+ if attributes.key?(:'dominant_instrument_affinity')
630
+ self.dominant_instrument_affinity = attributes[:'dominant_instrument_affinity']
631
+ end
632
+
633
+ if attributes.key?(:'secondary_instrument_affinity')
634
+ self.secondary_instrument_affinity = attributes[:'secondary_instrument_affinity']
635
+ end
636
+
637
+ if attributes.key?(:'secondary_instrument')
638
+ self.secondary_instrument = attributes[:'secondary_instrument']
639
+ end
640
+
641
+ if attributes.key?(:'tertiary_instrument_affinity')
642
+ self.tertiary_instrument_affinity = attributes[:'tertiary_instrument_affinity']
643
+ end
644
+
645
+ if attributes.key?(:'tertiary_instrument')
646
+ self.tertiary_instrument = attributes[:'tertiary_instrument']
647
+ end
648
+
649
+ if attributes.key?(:'energy')
650
+ self.energy = attributes[:'energy']
651
+ end
652
+
653
+ if attributes.key?(:'energy_affinity')
654
+ self.energy_affinity = attributes[:'energy_affinity']
655
+ end
656
+
657
+ if attributes.key?(:'sound_generation')
658
+ self.sound_generation = attributes[:'sound_generation']
659
+ end
660
+
661
+ if attributes.key?(:'sound_generation_affinity')
662
+ self.sound_generation_affinity = attributes[:'sound_generation_affinity']
663
+ end
664
+
665
+ if attributes.key?(:'tempo')
666
+ self.tempo = attributes[:'tempo']
667
+ end
668
+
669
+ if attributes.key?(:'tempo_affinity')
670
+ self.tempo_affinity = attributes[:'tempo_affinity']
671
+ end
672
+
673
+ if attributes.key?(:'scale')
674
+ self.scale = attributes[:'scale']
675
+ end
676
+
677
+ if attributes.key?(:'scale_affinity')
678
+ self.scale_affinity = attributes[:'scale_affinity']
679
+ end
680
+
681
+ if attributes.key?(:'rhythm')
682
+ self.rhythm = attributes[:'rhythm']
683
+ end
684
+
685
+ if attributes.key?(:'rhythm_affinity')
686
+ self.rhythm_affinity = attributes[:'rhythm_affinity']
687
+ end
688
+
689
+ if attributes.key?(:'primary_sound_character')
690
+ self.primary_sound_character = attributes[:'primary_sound_character']
691
+ end
692
+
693
+ if attributes.key?(:'primary_sound_character_affinity')
694
+ self.primary_sound_character_affinity = attributes[:'primary_sound_character_affinity']
695
+ end
696
+
697
+ if attributes.key?(:'timbre_affinity')
698
+ self.timbre_affinity = attributes[:'timbre_affinity']
699
+ end
700
+
701
+ if attributes.key?(:'roughness_affinity')
702
+ self.roughness_affinity = attributes[:'roughness_affinity']
703
+ end
704
+
705
+ if attributes.key?(:'tonality_affinity')
706
+ self.tonality_affinity = attributes[:'tonality_affinity']
707
+ end
708
+
709
+ if attributes.key?(:'harmony_affinity')
710
+ self.harmony_affinity = attributes[:'harmony_affinity']
711
+ end
712
+
713
+ if attributes.key?(:'texture_affinity')
714
+ self.texture_affinity = attributes[:'texture_affinity']
715
+ end
716
+
717
+ if attributes.key?(:'groovyness_affinity')
718
+ self.groovyness_affinity = attributes[:'groovyness_affinity']
719
+ end
720
+
721
+ if attributes.key?(:'space_affinity')
722
+ self.space_affinity = attributes[:'space_affinity']
723
+ end
724
+
725
+ if attributes.key?(:'timbre')
726
+ self.timbre = attributes[:'timbre']
727
+ end
728
+
729
+ if attributes.key?(:'roughness')
730
+ self.roughness = attributes[:'roughness']
731
+ end
732
+
733
+ if attributes.key?(:'tonality')
734
+ self.tonality = attributes[:'tonality']
735
+ end
736
+
737
+ if attributes.key?(:'harmony')
738
+ self.harmony = attributes[:'harmony']
739
+ end
740
+
741
+ if attributes.key?(:'texture')
742
+ self.texture = attributes[:'texture']
743
+ end
744
+
745
+ if attributes.key?(:'groovyness')
746
+ self.groovyness = attributes[:'groovyness']
747
+ end
748
+
749
+ if attributes.key?(:'space')
750
+ self.space = attributes[:'space']
751
+ end
752
+
753
+ if attributes.key?(:'bpm')
754
+ self.bpm = attributes[:'bpm']
755
+ end
756
+
757
+ if attributes.key?(:'key')
758
+ self.key = attributes[:'key']
759
+ end
760
+
761
+ if attributes.key?(:'key_affinity')
762
+ self.key_affinity = attributes[:'key_affinity']
763
+ end
764
+
765
+ if attributes.key?(:'production_rating')
766
+ self.production_rating = attributes[:'production_rating']
767
+ end
768
+
769
+ if attributes.key?(:'production_rating_affinity')
770
+ self.production_rating_affinity = attributes[:'production_rating_affinity']
771
+ end
772
+
773
+ if attributes.key?(:'performance_rating')
774
+ self.performance_rating = attributes[:'performance_rating']
775
+ end
776
+
777
+ if attributes.key?(:'performance_rating_affinity')
778
+ self.performance_rating_affinity = attributes[:'performance_rating_affinity']
779
+ end
780
+
781
+ if attributes.key?(:'song_rating')
782
+ self.song_rating = attributes[:'song_rating']
783
+ end
784
+
785
+ if attributes.key?(:'song_rating_affinity')
786
+ self.song_rating_affinity = attributes[:'song_rating_affinity']
787
+ end
788
+
789
+ if attributes.key?(:'audience_gender')
790
+ self.audience_gender = attributes[:'audience_gender']
791
+ end
792
+
793
+ if attributes.key?(:'audience_gender_affinity')
794
+ self.audience_gender_affinity = attributes[:'audience_gender_affinity']
795
+ end
796
+
797
+ if attributes.key?(:'audience_region')
798
+ self.audience_region = attributes[:'audience_region']
799
+ end
800
+
801
+ if attributes.key?(:'audience_region_affinity')
802
+ self.audience_region_affinity = attributes[:'audience_region_affinity']
803
+ end
804
+
805
+ if attributes.key?(:'secondary_audience_region_affinity')
806
+ self.secondary_audience_region_affinity = attributes[:'secondary_audience_region_affinity']
807
+ end
808
+
809
+ if attributes.key?(:'secondary_audience_region')
810
+ self.secondary_audience_region = attributes[:'secondary_audience_region']
811
+ end
812
+
813
+ if attributes.key?(:'tertiary_audience_region_affinity')
814
+ self.tertiary_audience_region_affinity = attributes[:'tertiary_audience_region_affinity']
815
+ end
816
+
817
+ if attributes.key?(:'tertiary_audience_region')
818
+ self.tertiary_audience_region = attributes[:'tertiary_audience_region']
819
+ end
820
+
821
+ if attributes.key?(:'audience_age')
822
+ self.audience_age = attributes[:'audience_age']
823
+ end
824
+
825
+ if attributes.key?(:'audience_age_affinity')
826
+ self.audience_age_affinity = attributes[:'audience_age_affinity']
827
+ end
828
+
829
+ if attributes.key?(:'secondary_audience_age')
830
+ self.secondary_audience_age = attributes[:'secondary_audience_age']
831
+ end
832
+
833
+ if attributes.key?(:'secondary_audience_age_affinity')
834
+ self.secondary_audience_age_affinity = attributes[:'secondary_audience_age_affinity']
835
+ end
836
+
837
+ if attributes.key?(:'tertiary_audience_age')
838
+ self.tertiary_audience_age = attributes[:'tertiary_audience_age']
839
+ end
840
+
841
+ if attributes.key?(:'tertiary_audience_age_affinity')
842
+ self.tertiary_audience_age_affinity = attributes[:'tertiary_audience_age_affinity']
843
+ end
844
+
845
+ if attributes.key?(:'origin_decade')
846
+ self.origin_decade = attributes[:'origin_decade']
847
+ end
848
+
849
+ if attributes.key?(:'origin_decade_affinity')
850
+ self.origin_decade_affinity = attributes[:'origin_decade_affinity']
851
+ end
852
+
853
+ if attributes.key?(:'language_of_performance')
854
+ self.language_of_performance = attributes[:'language_of_performance']
855
+ end
856
+
857
+ if attributes.key?(:'language_of_performance_affinity')
858
+ self.language_of_performance_affinity = attributes[:'language_of_performance_affinity']
859
+ end
860
+
861
+ if attributes.key?(:'origin_region')
862
+ self.origin_region = attributes[:'origin_region']
863
+ end
864
+
865
+ if attributes.key?(:'origin_region_affinity')
866
+ self.origin_region_affinity = attributes[:'origin_region_affinity']
867
+ end
868
+
869
+ if attributes.key?(:'taggrams')
870
+ self.taggrams = attributes[:'taggrams']
871
+ end
872
+
873
+ if attributes.key?(:'embeddings')
874
+ if (value = attributes[:'embeddings']).is_a?(Array)
875
+ self.embeddings = value
876
+ end
877
+ end
878
+
879
+ if attributes.key?(:'level1_genre')
880
+ self.level1_genre = attributes[:'level1_genre']
881
+ end
882
+
883
+ if attributes.key?(:'level1_genre_affinity')
884
+ self.level1_genre_affinity = attributes[:'level1_genre_affinity']
885
+ end
886
+
887
+ if attributes.key?(:'secondary_level1_genre')
888
+ self.secondary_level1_genre = attributes[:'secondary_level1_genre']
889
+ end
890
+
891
+ if attributes.key?(:'secondary_level1_genre_affinity')
892
+ self.secondary_level1_genre_affinity = attributes[:'secondary_level1_genre_affinity']
893
+ end
894
+
895
+ if attributes.key?(:'tertiary_level1_genre')
896
+ self.tertiary_level1_genre = attributes[:'tertiary_level1_genre']
897
+ end
898
+
899
+ if attributes.key?(:'tertiary_level1_genre_affinity')
900
+ self.tertiary_level1_genre_affinity = attributes[:'tertiary_level1_genre_affinity']
901
+ end
902
+
903
+ if attributes.key?(:'level2_genre')
904
+ self.level2_genre = attributes[:'level2_genre']
905
+ end
906
+
907
+ if attributes.key?(:'level2_genre_affinity')
908
+ self.level2_genre_affinity = attributes[:'level2_genre_affinity']
909
+ end
910
+
911
+ if attributes.key?(:'secondary_level2_genre')
912
+ self.secondary_level2_genre = attributes[:'secondary_level2_genre']
913
+ end
914
+
915
+ if attributes.key?(:'secondary_level2_genre_affinity')
916
+ self.secondary_level2_genre_affinity = attributes[:'secondary_level2_genre_affinity']
917
+ end
918
+
919
+ if attributes.key?(:'tertiary_level2_genre')
920
+ self.tertiary_level2_genre = attributes[:'tertiary_level2_genre']
921
+ end
922
+
923
+ if attributes.key?(:'tertiary_level2_genre_affinity')
924
+ self.tertiary_level2_genre_affinity = attributes[:'tertiary_level2_genre_affinity']
925
+ end
926
+
927
+ if attributes.key?(:'curateability')
928
+ self.curateability = attributes[:'curateability']
929
+ end
930
+
931
+ if attributes.key?(:'curateability_affinity')
932
+ self.curateability_affinity = attributes[:'curateability_affinity']
933
+ end
934
+
935
+ if attributes.key?(:'use_case')
936
+ self.use_case = attributes[:'use_case']
937
+ end
938
+
939
+ if attributes.key?(:'use_case_affinity')
940
+ self.use_case_affinity = attributes[:'use_case_affinity']
941
+ end
942
+
943
+ if attributes.key?(:'social_media')
944
+ self.social_media = attributes[:'social_media']
945
+ end
946
+
947
+ if attributes.key?(:'social_media_affinity')
948
+ self.social_media_affinity = attributes[:'social_media_affinity']
949
+ end
950
+
951
+ if attributes.key?(:'industry_suitability')
952
+ self.industry_suitability = attributes[:'industry_suitability']
953
+ end
954
+
955
+ if attributes.key?(:'industry_suitability_affinity')
956
+ self.industry_suitability_affinity = attributes[:'industry_suitability_affinity']
957
+ end
958
+
959
+ if attributes.key?(:'created_by_version')
960
+ self.created_by_version = attributes[:'created_by_version']
961
+ end
962
+
963
+ if attributes.key?(:'tags')
964
+ if (value = attributes[:'tags']).is_a?(Array)
965
+ self.tags = value
966
+ end
967
+ end
968
+
969
+ if attributes.key?(:'genres')
970
+ if (value = attributes[:'genres']).is_a?(Array)
971
+ self.genres = value
972
+ end
973
+ end
974
+
975
+ if attributes.key?(:'parties')
976
+ if (value = attributes[:'parties']).is_a?(Array)
977
+ self.parties = value
978
+ end
979
+ end
980
+
981
+ if attributes.key?(:'iswc')
982
+ self.iswc = attributes[:'iswc']
983
+ end
984
+
985
+ if attributes.key?(:'proprietary_id_gema')
986
+ self.proprietary_id_gema = attributes[:'proprietary_id_gema']
987
+ end
988
+
989
+ if attributes.key?(:'title')
990
+ self.title = attributes[:'title']
991
+ end
992
+
993
+ if attributes.key?(:'version_title')
994
+ self.version_title = attributes[:'version_title']
995
+ end
996
+ end
997
+
998
+ # Show invalid properties with the reasons. Usually used together with valid?
999
+ # @return Array for valid properties with the reasons
1000
+ def list_invalid_properties
1001
+ invalid_properties = Array.new
1002
+ if @isrc.nil?
1003
+ invalid_properties.push('invalid value for "isrc", isrc cannot be nil.')
1004
+ end
1005
+
1006
+ if @created_by_version.nil?
1007
+ invalid_properties.push('invalid value for "created_by_version", created_by_version cannot be nil.')
1008
+ end
1009
+
1010
+ invalid_properties
1011
+ end
1012
+
1013
+ # Check to see if the all the properties in the model are valid
1014
+ # @return true if the model is valid
1015
+ def valid?
1016
+ return false if @isrc.nil?
1017
+ primary_mood_cluster_validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1018
+ return false unless primary_mood_cluster_validator.valid?(@primary_mood_cluster)
1019
+ secondary_mood_cluster_validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1020
+ return false unless secondary_mood_cluster_validator.valid?(@secondary_mood_cluster)
1021
+ tertiary_mood_cluster_validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1022
+ return false unless tertiary_mood_cluster_validator.valid?(@tertiary_mood_cluster)
1023
+ valence_validator = EnumAttributeValidator.new('String', ["very sad", "sad", "moderate valence", "positive", "very positive", "varying valence"])
1024
+ return false unless valence_validator.valid?(@valence)
1025
+ arousal_validator = EnumAttributeValidator.new('String', ["very calm", "calm", "moderate arousal", "energetic", "very energetic", "varying arousal"])
1026
+ return false unless arousal_validator.valid?(@arousal)
1027
+ pleasantness_validator = EnumAttributeValidator.new('String', ["very unpleasant", "unpleasant", "neutral pleasantness", "pleasant", "very pleasant", "varying pleasantness"])
1028
+ return false unless pleasantness_validator.valid?(@pleasantness)
1029
+ engagement_validator = EnumAttributeValidator.new('String', ["very unengaging", "unengaging", "neutral engagement", "engaging", "very engaging", "varying engagement"])
1030
+ return false unless engagement_validator.valid?(@engagement)
1031
+ vocals_validator = EnumAttributeValidator.new('String', ["instrumental", "female vocals", "male vocals", "mixed vocals", "diverse gender vocals"])
1032
+ return false unless vocals_validator.valid?(@vocals)
1033
+ dominant_instrument_validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1034
+ return false unless dominant_instrument_validator.valid?(@dominant_instrument)
1035
+ secondary_instrument_validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1036
+ return false unless secondary_instrument_validator.valid?(@secondary_instrument)
1037
+ tertiary_instrument_validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1038
+ return false unless tertiary_instrument_validator.valid?(@tertiary_instrument)
1039
+ energy_validator = EnumAttributeValidator.new('String', ["very quiet", "quiet", "moderate", "loud", "very loud", "dynamic"])
1040
+ return false unless energy_validator.valid?(@energy)
1041
+ sound_generation_validator = EnumAttributeValidator.new('String', ["acoustic", "electric", "electronic", "mixed sound generation"])
1042
+ return false unless sound_generation_validator.valid?(@sound_generation)
1043
+ tempo_validator = EnumAttributeValidator.new('String', ["very slow", "slow", "mid-tempo", "fast", "very fast", "varying tempo"])
1044
+ return false unless tempo_validator.valid?(@tempo)
1045
+ scale_validator = EnumAttributeValidator.new('String', ["major key", "minor key", "neutral key"])
1046
+ return false unless scale_validator.valid?(@scale)
1047
+ rhythm_validator = EnumAttributeValidator.new('String', ["common time", "triple meter", "complex time signature", "binary rhythm", "ternary rhythm"])
1048
+ return false unless rhythm_validator.valid?(@rhythm)
1049
+ primary_sound_character_validator = EnumAttributeValidator.new('String', ["brassy", "bright", "clear", "deep", "distorted", "flat", "full", "groovy", "melodious", "natural", "resonant", "shrill", "steady", "thin", "warm"])
1050
+ return false unless primary_sound_character_validator.valid?(@primary_sound_character)
1051
+ timbre_validator = EnumAttributeValidator.new('String', ["very warm", "warm", "moderate timbre", "bright", "very bright"])
1052
+ return false unless timbre_validator.valid?(@timbre)
1053
+ roughness_validator = EnumAttributeValidator.new('String', ["very clear", "clear", "moderate roughness", "distorted", "very distorted"])
1054
+ return false unless roughness_validator.valid?(@roughness)
1055
+ tonality_validator = EnumAttributeValidator.new('String', ["monotonous", "moderate melodiousness", "melodious", "atonal"])
1056
+ return false unless tonality_validator.valid?(@tonality)
1057
+ harmony_validator = EnumAttributeValidator.new('String', ["very dissonant", "dissonant", "moderate harmonies", "harmonious", "very harmonious"])
1058
+ return false unless harmony_validator.valid?(@harmony)
1059
+ texture_validator = EnumAttributeValidator.new('String', ["very thin", "thin", "moderate texture", "full", "very full"])
1060
+ return false unless texture_validator.valid?(@texture)
1061
+ groovyness_validator = EnumAttributeValidator.new('String', ["very steady", "steady", "moderate rhythm feel", "groovy", "very groovy"])
1062
+ return false unless groovyness_validator.valid?(@groovyness)
1063
+ space_validator = EnumAttributeValidator.new('String', ["very compact", "compact", "moderate space", "wide", "very wide"])
1064
+ return false unless space_validator.valid?(@space)
1065
+ key_validator = EnumAttributeValidator.new('String', ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B", "unclear"])
1066
+ return false unless key_validator.valid?(@key)
1067
+ production_rating_validator = EnumAttributeValidator.new('String', ["low production quality", "medium production quality", "high production quality"])
1068
+ return false unless production_rating_validator.valid?(@production_rating)
1069
+ performance_rating_validator = EnumAttributeValidator.new('String', ["low performance quality", "medium performance quality", "high performance quality"])
1070
+ return false unless performance_rating_validator.valid?(@performance_rating)
1071
+ song_rating_validator = EnumAttributeValidator.new('String', ["low song quality", "medium song quality", "high song quality"])
1072
+ return false unless song_rating_validator.valid?(@song_rating)
1073
+ audience_gender_validator = EnumAttributeValidator.new('String', ["male", "female"])
1074
+ return false unless audience_gender_validator.valid?(@audience_gender)
1075
+ audience_region_validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1076
+ return false unless audience_region_validator.valid?(@audience_region)
1077
+ secondary_audience_region_validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1078
+ return false unless secondary_audience_region_validator.valid?(@secondary_audience_region)
1079
+ tertiary_audience_region_validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1080
+ return false unless tertiary_audience_region_validator.valid?(@tertiary_audience_region)
1081
+ audience_age_validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1082
+ return false unless audience_age_validator.valid?(@audience_age)
1083
+ secondary_audience_age_validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1084
+ return false unless secondary_audience_age_validator.valid?(@secondary_audience_age)
1085
+ tertiary_audience_age_validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1086
+ return false unless tertiary_audience_age_validator.valid?(@tertiary_audience_age)
1087
+ origin_decade_validator = EnumAttributeValidator.new('String', ["pre-1950s", "1950s", "1960s", "1970s", "1980s", "1990s", "2000s", "2010s", "2020s"])
1088
+ return false unless origin_decade_validator.valid?(@origin_decade)
1089
+ language_of_performance_validator = EnumAttributeValidator.new('String', ["en", "de", "no", "fr", "es", "pt", "fi", "ru", "it", "la", "el", "ar", "nl", "ja", "pl", "sv", "zu", "da", "cs", "hu", "af", "hi", "tr", "zh", "ms", "pa", "id", "ko", "vi"])
1090
+ return false unless language_of_performance_validator.valid?(@language_of_performance)
1091
+ origin_region_validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1092
+ return false unless origin_region_validator.valid?(@origin_region)
1093
+ level1_genre_validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1094
+ return false unless level1_genre_validator.valid?(@level1_genre)
1095
+ secondary_level1_genre_validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1096
+ return false unless secondary_level1_genre_validator.valid?(@secondary_level1_genre)
1097
+ tertiary_level1_genre_validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1098
+ return false unless tertiary_level1_genre_validator.valid?(@tertiary_level1_genre)
1099
+ level2_genre_validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1100
+ return false unless level2_genre_validator.valid?(@level2_genre)
1101
+ secondary_level2_genre_validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1102
+ return false unless secondary_level2_genre_validator.valid?(@secondary_level2_genre)
1103
+ tertiary_level2_genre_validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1104
+ return false unless tertiary_level2_genre_validator.valid?(@tertiary_level2_genre)
1105
+ curateability_validator = EnumAttributeValidator.new('String', ["curateable", "uncurateable"])
1106
+ return false unless curateability_validator.valid?(@curateability)
1107
+ use_case_validator = EnumAttributeValidator.new('String', ["background", "sport", "focus", "christmas", "film", "summer", "adverts", "party", "relax"])
1108
+ return false unless use_case_validator.valid?(@use_case)
1109
+ social_media_validator = EnumAttributeValidator.new('String', ["Spotify", "TikTok", "Unfitting", "YouTube"])
1110
+ return false unless social_media_validator.valid?(@social_media)
1111
+ industry_suitability_validator = EnumAttributeValidator.new('String', ["Automobiles and Parts", "Consumer Products and Services", "Financial Services", "Food, Beverage and Tobacco", "Health Care", "Insurance", "Media", "Politics, Government and Organizations", "Real Estate", "Retail", "Technology", "Telecommunications", "Travel and Leisure"])
1112
+ return false unless industry_suitability_validator.valid?(@industry_suitability)
1113
+ return false if @created_by_version.nil?
1114
+ true
1115
+ end
1116
+
1117
+ # Custom attribute writer method checking allowed values (enum).
1118
+ # @param [Object] primary_mood_cluster Object to be assigned
1119
+ def primary_mood_cluster=(primary_mood_cluster)
1120
+ validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1121
+ unless validator.valid?(primary_mood_cluster)
1122
+ fail ArgumentError, "invalid value for \"primary_mood_cluster\", must be one of #{validator.allowable_values}."
1123
+ end
1124
+ @primary_mood_cluster = primary_mood_cluster
1125
+ end
1126
+
1127
+ # Custom attribute writer method checking allowed values (enum).
1128
+ # @param [Object] secondary_mood_cluster Object to be assigned
1129
+ def secondary_mood_cluster=(secondary_mood_cluster)
1130
+ validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1131
+ unless validator.valid?(secondary_mood_cluster)
1132
+ fail ArgumentError, "invalid value for \"secondary_mood_cluster\", must be one of #{validator.allowable_values}."
1133
+ end
1134
+ @secondary_mood_cluster = secondary_mood_cluster
1135
+ end
1136
+
1137
+ # Custom attribute writer method checking allowed values (enum).
1138
+ # @param [Object] tertiary_mood_cluster Object to be assigned
1139
+ def tertiary_mood_cluster=(tertiary_mood_cluster)
1140
+ validator = EnumAttributeValidator.new('String', ["aggressive", "amusing", "anxious", "calm", "devotional", "dreamy", "energetic", "enigmatic", "epic", "erotic", "positive", "sad", "scary", "wild"])
1141
+ unless validator.valid?(tertiary_mood_cluster)
1142
+ fail ArgumentError, "invalid value for \"tertiary_mood_cluster\", must be one of #{validator.allowable_values}."
1143
+ end
1144
+ @tertiary_mood_cluster = tertiary_mood_cluster
1145
+ end
1146
+
1147
+ # Custom attribute writer method checking allowed values (enum).
1148
+ # @param [Object] valence Object to be assigned
1149
+ def valence=(valence)
1150
+ validator = EnumAttributeValidator.new('String', ["very sad", "sad", "moderate valence", "positive", "very positive", "varying valence"])
1151
+ unless validator.valid?(valence)
1152
+ fail ArgumentError, "invalid value for \"valence\", must be one of #{validator.allowable_values}."
1153
+ end
1154
+ @valence = valence
1155
+ end
1156
+
1157
+ # Custom attribute writer method checking allowed values (enum).
1158
+ # @param [Object] arousal Object to be assigned
1159
+ def arousal=(arousal)
1160
+ validator = EnumAttributeValidator.new('String', ["very calm", "calm", "moderate arousal", "energetic", "very energetic", "varying arousal"])
1161
+ unless validator.valid?(arousal)
1162
+ fail ArgumentError, "invalid value for \"arousal\", must be one of #{validator.allowable_values}."
1163
+ end
1164
+ @arousal = arousal
1165
+ end
1166
+
1167
+ # Custom attribute writer method checking allowed values (enum).
1168
+ # @param [Object] pleasantness Object to be assigned
1169
+ def pleasantness=(pleasantness)
1170
+ validator = EnumAttributeValidator.new('String', ["very unpleasant", "unpleasant", "neutral pleasantness", "pleasant", "very pleasant", "varying pleasantness"])
1171
+ unless validator.valid?(pleasantness)
1172
+ fail ArgumentError, "invalid value for \"pleasantness\", must be one of #{validator.allowable_values}."
1173
+ end
1174
+ @pleasantness = pleasantness
1175
+ end
1176
+
1177
+ # Custom attribute writer method checking allowed values (enum).
1178
+ # @param [Object] engagement Object to be assigned
1179
+ def engagement=(engagement)
1180
+ validator = EnumAttributeValidator.new('String', ["very unengaging", "unengaging", "neutral engagement", "engaging", "very engaging", "varying engagement"])
1181
+ unless validator.valid?(engagement)
1182
+ fail ArgumentError, "invalid value for \"engagement\", must be one of #{validator.allowable_values}."
1183
+ end
1184
+ @engagement = engagement
1185
+ end
1186
+
1187
+ # Custom attribute writer method checking allowed values (enum).
1188
+ # @param [Object] vocals Object to be assigned
1189
+ def vocals=(vocals)
1190
+ validator = EnumAttributeValidator.new('String', ["instrumental", "female vocals", "male vocals", "mixed vocals", "diverse gender vocals"])
1191
+ unless validator.valid?(vocals)
1192
+ fail ArgumentError, "invalid value for \"vocals\", must be one of #{validator.allowable_values}."
1193
+ end
1194
+ @vocals = vocals
1195
+ end
1196
+
1197
+ # Custom attribute writer method checking allowed values (enum).
1198
+ # @param [Object] dominant_instrument Object to be assigned
1199
+ def dominant_instrument=(dominant_instrument)
1200
+ validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1201
+ unless validator.valid?(dominant_instrument)
1202
+ fail ArgumentError, "invalid value for \"dominant_instrument\", must be one of #{validator.allowable_values}."
1203
+ end
1204
+ @dominant_instrument = dominant_instrument
1205
+ end
1206
+
1207
+ # Custom attribute writer method checking allowed values (enum).
1208
+ # @param [Object] secondary_instrument Object to be assigned
1209
+ def secondary_instrument=(secondary_instrument)
1210
+ validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1211
+ unless validator.valid?(secondary_instrument)
1212
+ fail ArgumentError, "invalid value for \"secondary_instrument\", must be one of #{validator.allowable_values}."
1213
+ end
1214
+ @secondary_instrument = secondary_instrument
1215
+ end
1216
+
1217
+ # Custom attribute writer method checking allowed values (enum).
1218
+ # @param [Object] tertiary_instrument Object to be assigned
1219
+ def tertiary_instrument=(tertiary_instrument)
1220
+ validator = EnumAttributeValidator.new('String', ["electric guitar", "piano", "electronics", "guitar", "strings", "synthesizer", "wind", "saxophone", "flute", "trumpet", "drum kit", "keys", "accordion", "violin", "harpsichord", "choir", "cello", "electric bass", "organ", "brass", "percussion", "vocals", "double bass", "harp"])
1221
+ unless validator.valid?(tertiary_instrument)
1222
+ fail ArgumentError, "invalid value for \"tertiary_instrument\", must be one of #{validator.allowable_values}."
1223
+ end
1224
+ @tertiary_instrument = tertiary_instrument
1225
+ end
1226
+
1227
+ # Custom attribute writer method checking allowed values (enum).
1228
+ # @param [Object] energy Object to be assigned
1229
+ def energy=(energy)
1230
+ validator = EnumAttributeValidator.new('String', ["very quiet", "quiet", "moderate", "loud", "very loud", "dynamic"])
1231
+ unless validator.valid?(energy)
1232
+ fail ArgumentError, "invalid value for \"energy\", must be one of #{validator.allowable_values}."
1233
+ end
1234
+ @energy = energy
1235
+ end
1236
+
1237
+ # Custom attribute writer method checking allowed values (enum).
1238
+ # @param [Object] sound_generation Object to be assigned
1239
+ def sound_generation=(sound_generation)
1240
+ validator = EnumAttributeValidator.new('String', ["acoustic", "electric", "electronic", "mixed sound generation"])
1241
+ unless validator.valid?(sound_generation)
1242
+ fail ArgumentError, "invalid value for \"sound_generation\", must be one of #{validator.allowable_values}."
1243
+ end
1244
+ @sound_generation = sound_generation
1245
+ end
1246
+
1247
+ # Custom attribute writer method checking allowed values (enum).
1248
+ # @param [Object] tempo Object to be assigned
1249
+ def tempo=(tempo)
1250
+ validator = EnumAttributeValidator.new('String', ["very slow", "slow", "mid-tempo", "fast", "very fast", "varying tempo"])
1251
+ unless validator.valid?(tempo)
1252
+ fail ArgumentError, "invalid value for \"tempo\", must be one of #{validator.allowable_values}."
1253
+ end
1254
+ @tempo = tempo
1255
+ end
1256
+
1257
+ # Custom attribute writer method checking allowed values (enum).
1258
+ # @param [Object] scale Object to be assigned
1259
+ def scale=(scale)
1260
+ validator = EnumAttributeValidator.new('String', ["major key", "minor key", "neutral key"])
1261
+ unless validator.valid?(scale)
1262
+ fail ArgumentError, "invalid value for \"scale\", must be one of #{validator.allowable_values}."
1263
+ end
1264
+ @scale = scale
1265
+ end
1266
+
1267
+ # Custom attribute writer method checking allowed values (enum).
1268
+ # @param [Object] rhythm Object to be assigned
1269
+ def rhythm=(rhythm)
1270
+ validator = EnumAttributeValidator.new('String', ["common time", "triple meter", "complex time signature", "binary rhythm", "ternary rhythm"])
1271
+ unless validator.valid?(rhythm)
1272
+ fail ArgumentError, "invalid value for \"rhythm\", must be one of #{validator.allowable_values}."
1273
+ end
1274
+ @rhythm = rhythm
1275
+ end
1276
+
1277
+ # Custom attribute writer method checking allowed values (enum).
1278
+ # @param [Object] primary_sound_character Object to be assigned
1279
+ def primary_sound_character=(primary_sound_character)
1280
+ validator = EnumAttributeValidator.new('String', ["brassy", "bright", "clear", "deep", "distorted", "flat", "full", "groovy", "melodious", "natural", "resonant", "shrill", "steady", "thin", "warm"])
1281
+ unless validator.valid?(primary_sound_character)
1282
+ fail ArgumentError, "invalid value for \"primary_sound_character\", must be one of #{validator.allowable_values}."
1283
+ end
1284
+ @primary_sound_character = primary_sound_character
1285
+ end
1286
+
1287
+ # Custom attribute writer method checking allowed values (enum).
1288
+ # @param [Object] timbre Object to be assigned
1289
+ def timbre=(timbre)
1290
+ validator = EnumAttributeValidator.new('String', ["very warm", "warm", "moderate timbre", "bright", "very bright"])
1291
+ unless validator.valid?(timbre)
1292
+ fail ArgumentError, "invalid value for \"timbre\", must be one of #{validator.allowable_values}."
1293
+ end
1294
+ @timbre = timbre
1295
+ end
1296
+
1297
+ # Custom attribute writer method checking allowed values (enum).
1298
+ # @param [Object] roughness Object to be assigned
1299
+ def roughness=(roughness)
1300
+ validator = EnumAttributeValidator.new('String', ["very clear", "clear", "moderate roughness", "distorted", "very distorted"])
1301
+ unless validator.valid?(roughness)
1302
+ fail ArgumentError, "invalid value for \"roughness\", must be one of #{validator.allowable_values}."
1303
+ end
1304
+ @roughness = roughness
1305
+ end
1306
+
1307
+ # Custom attribute writer method checking allowed values (enum).
1308
+ # @param [Object] tonality Object to be assigned
1309
+ def tonality=(tonality)
1310
+ validator = EnumAttributeValidator.new('String', ["monotonous", "moderate melodiousness", "melodious", "atonal"])
1311
+ unless validator.valid?(tonality)
1312
+ fail ArgumentError, "invalid value for \"tonality\", must be one of #{validator.allowable_values}."
1313
+ end
1314
+ @tonality = tonality
1315
+ end
1316
+
1317
+ # Custom attribute writer method checking allowed values (enum).
1318
+ # @param [Object] harmony Object to be assigned
1319
+ def harmony=(harmony)
1320
+ validator = EnumAttributeValidator.new('String', ["very dissonant", "dissonant", "moderate harmonies", "harmonious", "very harmonious"])
1321
+ unless validator.valid?(harmony)
1322
+ fail ArgumentError, "invalid value for \"harmony\", must be one of #{validator.allowable_values}."
1323
+ end
1324
+ @harmony = harmony
1325
+ end
1326
+
1327
+ # Custom attribute writer method checking allowed values (enum).
1328
+ # @param [Object] texture Object to be assigned
1329
+ def texture=(texture)
1330
+ validator = EnumAttributeValidator.new('String', ["very thin", "thin", "moderate texture", "full", "very full"])
1331
+ unless validator.valid?(texture)
1332
+ fail ArgumentError, "invalid value for \"texture\", must be one of #{validator.allowable_values}."
1333
+ end
1334
+ @texture = texture
1335
+ end
1336
+
1337
+ # Custom attribute writer method checking allowed values (enum).
1338
+ # @param [Object] groovyness Object to be assigned
1339
+ def groovyness=(groovyness)
1340
+ validator = EnumAttributeValidator.new('String', ["very steady", "steady", "moderate rhythm feel", "groovy", "very groovy"])
1341
+ unless validator.valid?(groovyness)
1342
+ fail ArgumentError, "invalid value for \"groovyness\", must be one of #{validator.allowable_values}."
1343
+ end
1344
+ @groovyness = groovyness
1345
+ end
1346
+
1347
+ # Custom attribute writer method checking allowed values (enum).
1348
+ # @param [Object] space Object to be assigned
1349
+ def space=(space)
1350
+ validator = EnumAttributeValidator.new('String', ["very compact", "compact", "moderate space", "wide", "very wide"])
1351
+ unless validator.valid?(space)
1352
+ fail ArgumentError, "invalid value for \"space\", must be one of #{validator.allowable_values}."
1353
+ end
1354
+ @space = space
1355
+ end
1356
+
1357
+ # Custom attribute writer method checking allowed values (enum).
1358
+ # @param [Object] key Object to be assigned
1359
+ def key=(key)
1360
+ validator = EnumAttributeValidator.new('String', ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B", "unclear"])
1361
+ unless validator.valid?(key)
1362
+ fail ArgumentError, "invalid value for \"key\", must be one of #{validator.allowable_values}."
1363
+ end
1364
+ @key = key
1365
+ end
1366
+
1367
+ # Custom attribute writer method checking allowed values (enum).
1368
+ # @param [Object] production_rating Object to be assigned
1369
+ def production_rating=(production_rating)
1370
+ validator = EnumAttributeValidator.new('String', ["low production quality", "medium production quality", "high production quality"])
1371
+ unless validator.valid?(production_rating)
1372
+ fail ArgumentError, "invalid value for \"production_rating\", must be one of #{validator.allowable_values}."
1373
+ end
1374
+ @production_rating = production_rating
1375
+ end
1376
+
1377
+ # Custom attribute writer method checking allowed values (enum).
1378
+ # @param [Object] performance_rating Object to be assigned
1379
+ def performance_rating=(performance_rating)
1380
+ validator = EnumAttributeValidator.new('String', ["low performance quality", "medium performance quality", "high performance quality"])
1381
+ unless validator.valid?(performance_rating)
1382
+ fail ArgumentError, "invalid value for \"performance_rating\", must be one of #{validator.allowable_values}."
1383
+ end
1384
+ @performance_rating = performance_rating
1385
+ end
1386
+
1387
+ # Custom attribute writer method checking allowed values (enum).
1388
+ # @param [Object] song_rating Object to be assigned
1389
+ def song_rating=(song_rating)
1390
+ validator = EnumAttributeValidator.new('String', ["low song quality", "medium song quality", "high song quality"])
1391
+ unless validator.valid?(song_rating)
1392
+ fail ArgumentError, "invalid value for \"song_rating\", must be one of #{validator.allowable_values}."
1393
+ end
1394
+ @song_rating = song_rating
1395
+ end
1396
+
1397
+ # Custom attribute writer method checking allowed values (enum).
1398
+ # @param [Object] audience_gender Object to be assigned
1399
+ def audience_gender=(audience_gender)
1400
+ validator = EnumAttributeValidator.new('String', ["male", "female"])
1401
+ unless validator.valid?(audience_gender)
1402
+ fail ArgumentError, "invalid value for \"audience_gender\", must be one of #{validator.allowable_values}."
1403
+ end
1404
+ @audience_gender = audience_gender
1405
+ end
1406
+
1407
+ # Custom attribute writer method checking allowed values (enum).
1408
+ # @param [Object] audience_region Object to be assigned
1409
+ def audience_region=(audience_region)
1410
+ validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1411
+ unless validator.valid?(audience_region)
1412
+ fail ArgumentError, "invalid value for \"audience_region\", must be one of #{validator.allowable_values}."
1413
+ end
1414
+ @audience_region = audience_region
1415
+ end
1416
+
1417
+ # Custom attribute writer method checking allowed values (enum).
1418
+ # @param [Object] secondary_audience_region Object to be assigned
1419
+ def secondary_audience_region=(secondary_audience_region)
1420
+ validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1421
+ unless validator.valid?(secondary_audience_region)
1422
+ fail ArgumentError, "invalid value for \"secondary_audience_region\", must be one of #{validator.allowable_values}."
1423
+ end
1424
+ @secondary_audience_region = secondary_audience_region
1425
+ end
1426
+
1427
+ # Custom attribute writer method checking allowed values (enum).
1428
+ # @param [Object] tertiary_audience_region Object to be assigned
1429
+ def tertiary_audience_region=(tertiary_audience_region)
1430
+ validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1431
+ unless validator.valid?(tertiary_audience_region)
1432
+ fail ArgumentError, "invalid value for \"tertiary_audience_region\", must be one of #{validator.allowable_values}."
1433
+ end
1434
+ @tertiary_audience_region = tertiary_audience_region
1435
+ end
1436
+
1437
+ # Custom attribute writer method checking allowed values (enum).
1438
+ # @param [Object] audience_age Object to be assigned
1439
+ def audience_age=(audience_age)
1440
+ validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1441
+ unless validator.valid?(audience_age)
1442
+ fail ArgumentError, "invalid value for \"audience_age\", must be one of #{validator.allowable_values}."
1443
+ end
1444
+ @audience_age = audience_age
1445
+ end
1446
+
1447
+ # Custom attribute writer method checking allowed values (enum).
1448
+ # @param [Object] secondary_audience_age Object to be assigned
1449
+ def secondary_audience_age=(secondary_audience_age)
1450
+ validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1451
+ unless validator.valid?(secondary_audience_age)
1452
+ fail ArgumentError, "invalid value for \"secondary_audience_age\", must be one of #{validator.allowable_values}."
1453
+ end
1454
+ @secondary_audience_age = secondary_audience_age
1455
+ end
1456
+
1457
+ # Custom attribute writer method checking allowed values (enum).
1458
+ # @param [Object] tertiary_audience_age Object to be assigned
1459
+ def tertiary_audience_age=(tertiary_audience_age)
1460
+ validator = EnumAttributeValidator.new('String', ["Generation Z", "Younger Generation Y", "Older Generation Y", "Generation X", "Younger Generation B", "Older Generation B"])
1461
+ unless validator.valid?(tertiary_audience_age)
1462
+ fail ArgumentError, "invalid value for \"tertiary_audience_age\", must be one of #{validator.allowable_values}."
1463
+ end
1464
+ @tertiary_audience_age = tertiary_audience_age
1465
+ end
1466
+
1467
+ # Custom attribute writer method checking allowed values (enum).
1468
+ # @param [Object] origin_decade Object to be assigned
1469
+ def origin_decade=(origin_decade)
1470
+ validator = EnumAttributeValidator.new('String', ["pre-1950s", "1950s", "1960s", "1970s", "1980s", "1990s", "2000s", "2010s", "2020s"])
1471
+ unless validator.valid?(origin_decade)
1472
+ fail ArgumentError, "invalid value for \"origin_decade\", must be one of #{validator.allowable_values}."
1473
+ end
1474
+ @origin_decade = origin_decade
1475
+ end
1476
+
1477
+ # Custom attribute writer method checking allowed values (enum).
1478
+ # @param [Object] language_of_performance Object to be assigned
1479
+ def language_of_performance=(language_of_performance)
1480
+ validator = EnumAttributeValidator.new('String', ["en", "de", "no", "fr", "es", "pt", "fi", "ru", "it", "la", "el", "ar", "nl", "ja", "pl", "sv", "zu", "da", "cs", "hu", "af", "hi", "tr", "zh", "ms", "pa", "id", "ko", "vi"])
1481
+ unless validator.valid?(language_of_performance)
1482
+ fail ArgumentError, "invalid value for \"language_of_performance\", must be one of #{validator.allowable_values}."
1483
+ end
1484
+ @language_of_performance = language_of_performance
1485
+ end
1486
+
1487
+ # Custom attribute writer method checking allowed values (enum).
1488
+ # @param [Object] origin_region Object to be assigned
1489
+ def origin_region=(origin_region)
1490
+ validator = EnumAttributeValidator.new('String', ["Australia and New Zealand", "Central America and the Carribean", "Central and Southern Asia", "Eastern Asia", "Eastern Europe", "Northern Africa and Western Asia", "Northern America", "Oceania", "South America", "South-Eastern Asia", "Southern Europe", "Sub-Saharan Africa", "Western and Northern Europe"])
1491
+ unless validator.valid?(origin_region)
1492
+ fail ArgumentError, "invalid value for \"origin_region\", must be one of #{validator.allowable_values}."
1493
+ end
1494
+ @origin_region = origin_region
1495
+ end
1496
+
1497
+ # Custom attribute writer method checking allowed values (enum).
1498
+ # @param [Object] level1_genre Object to be assigned
1499
+ def level1_genre=(level1_genre)
1500
+ validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1501
+ unless validator.valid?(level1_genre)
1502
+ fail ArgumentError, "invalid value for \"level1_genre\", must be one of #{validator.allowable_values}."
1503
+ end
1504
+ @level1_genre = level1_genre
1505
+ end
1506
+
1507
+ # Custom attribute writer method checking allowed values (enum).
1508
+ # @param [Object] secondary_level1_genre Object to be assigned
1509
+ def secondary_level1_genre=(secondary_level1_genre)
1510
+ validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1511
+ unless validator.valid?(secondary_level1_genre)
1512
+ fail ArgumentError, "invalid value for \"secondary_level1_genre\", must be one of #{validator.allowable_values}."
1513
+ end
1514
+ @secondary_level1_genre = secondary_level1_genre
1515
+ end
1516
+
1517
+ # Custom attribute writer method checking allowed values (enum).
1518
+ # @param [Object] tertiary_level1_genre Object to be assigned
1519
+ def tertiary_level1_genre=(tertiary_level1_genre)
1520
+ validator = EnumAttributeValidator.new('String', ["Pop", "Rock", "Metal", "Jazz", "World", "Country", "Functional Music", "Classical", "Alternative", "R&B", "Blues", "Hip Hop", "Reggae", "Electronic", "Spoken Word", "Folk"])
1521
+ unless validator.valid?(tertiary_level1_genre)
1522
+ fail ArgumentError, "invalid value for \"tertiary_level1_genre\", must be one of #{validator.allowable_values}."
1523
+ end
1524
+ @tertiary_level1_genre = tertiary_level1_genre
1525
+ end
1526
+
1527
+ # Custom attribute writer method checking allowed values (enum).
1528
+ # @param [Object] level2_genre Object to be assigned
1529
+ def level2_genre=(level2_genre)
1530
+ validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1531
+ unless validator.valid?(level2_genre)
1532
+ fail ArgumentError, "invalid value for \"level2_genre\", must be one of #{validator.allowable_values}."
1533
+ end
1534
+ @level2_genre = level2_genre
1535
+ end
1536
+
1537
+ # Custom attribute writer method checking allowed values (enum).
1538
+ # @param [Object] secondary_level2_genre Object to be assigned
1539
+ def secondary_level2_genre=(secondary_level2_genre)
1540
+ validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1541
+ unless validator.valid?(secondary_level2_genre)
1542
+ fail ArgumentError, "invalid value for \"secondary_level2_genre\", must be one of #{validator.allowable_values}."
1543
+ end
1544
+ @secondary_level2_genre = secondary_level2_genre
1545
+ end
1546
+
1547
+ # Custom attribute writer method checking allowed values (enum).
1548
+ # @param [Object] tertiary_level2_genre Object to be assigned
1549
+ def tertiary_level2_genre=(tertiary_level2_genre)
1550
+ validator = EnumAttributeValidator.new('String', ["Electro Pop", "Indie Pop", "Indie Rock", "Electroclash", "Adult Contemporary", "Easy Listening", "Comedy Music", "New Age", "Chanson", "Singer/Songwriter", "Schlager", "Volksmusik", "Rock'n'Roll", "Rockabilly", "Psychobilly", "Surf", "Doo Wop", "Mainstream Rock", "Mersey Beat", "Glamrock", "Latin Rock", "Melodic Rock", "Progressive Rock", "Psychedelic Rock", "Hard Rock", "Krautrock", "Power Metal", "Nu Metal", "Grind Core", "Gothic Metal", "Death Metal", "Melodic Death Metal", "Thrash Metal", "Black Metal", "Glam Metal", "Sleaze Metal", "Metalcore", "Progressive Metal", "Screamo", "Symphonic Metal", "Swing", "Ragtime", "Dixieland", "Boogie Woogie", "Bebop", "Cool Jazz", "Free Jazz", "Fusion", "Smooth Jazz", "Acid Jazz", "Bossa Nova", "Latin Jazz", "Nu-Jazz", "Tango", "Samba", "Salsa", "Axé", "Sertanejo", "Forró", "Choro", "Fado", "Flamenco", "Blasmusik", "American Folk", "Irish Folk", "Americana", "Bluegrass", "Red Dirt", "Outlaw Country", "Nashville", "Honkytonk", "Production Music", "Soundtrack", "Musical", "Medieval", "Renaissance", "Baroque", "Classical Period", "Romanticism", "Neue Musik", "Minimal Music", "Neoklassik", "Postmoderne Musik", "Punk", "Noise Rock", "Garage", "Grunge", "Industrial", "New Wave", "Post Punk", "Gothic Rock", "Stoner Rock", "Pop Punk", "Post Hardcore", "Post Rock", "Post Metal", "Post-Grunge", "Britpop", "Ska Punk", "Math Rock", "Dreampop", "Shoegaze", "Contemporary R&B", "Rhythm And Blues", "Disco", "Chicago Soul", "Detroit Soul", "Urban", "Nu R&B", "Neo Soul", "Early Funk", "Funk Rock", "Folk Blues", "Classics Blues", "Blues Rock", "Trap Music", "Electro-hop", "Hardcore Rap", "Miami Bass & Bounce", "Dirty South Rap", "Turntablism", "West Coast Gangsta Rap", "East Coast Gangsta Rap", "Roots-Reggae", "Dub", "Raggamuffin", "Ska", "Dancehall", "Chicago House", "Ambient House", "Deep House", "Tech House", "Acid House", "Dutch House", "Progressive House", "Funky House", "Nu Disco", "Minimal Techno", "Hardcore Techno", "IDM", "Trance", "Psytrance", "Progressive Trance", "Grime", "Big Beat", "Dub Step", "Liquid Funk", "Hard Step", "Jump Up", "Old School Jungle", "Trip Hop", "Gospel", "Dancepop", "Indietronica", "Nu Rave", "Emo-Rock", "Post-Punk Revival", "Nu Prog", "Indie Folk", "Audiobook", "Audioplay", "Relaxation", "Ambient House / Chill-Out", "Chemical Breaks & Big Beat", "Chicago House & Garage House", "Chicago Soul & Detroit Soul", "Comedy", "Dark Wave", "Dreampop & Shoegaze", "Electro House & Dutch House", "French House & Funky House", "Golden Age Rad & Hardcore Rap", "Hard Step & Tech Step", "Indietronica & Chillwave", "Nu Disco & Funktronica", "Doom Metal", "Mathcore", "Psy Trance", "Roots Rock"])
1551
+ unless validator.valid?(tertiary_level2_genre)
1552
+ fail ArgumentError, "invalid value for \"tertiary_level2_genre\", must be one of #{validator.allowable_values}."
1553
+ end
1554
+ @tertiary_level2_genre = tertiary_level2_genre
1555
+ end
1556
+
1557
+ # Custom attribute writer method checking allowed values (enum).
1558
+ # @param [Object] curateability Object to be assigned
1559
+ def curateability=(curateability)
1560
+ validator = EnumAttributeValidator.new('String', ["curateable", "uncurateable"])
1561
+ unless validator.valid?(curateability)
1562
+ fail ArgumentError, "invalid value for \"curateability\", must be one of #{validator.allowable_values}."
1563
+ end
1564
+ @curateability = curateability
1565
+ end
1566
+
1567
+ # Custom attribute writer method checking allowed values (enum).
1568
+ # @param [Object] use_case Object to be assigned
1569
+ def use_case=(use_case)
1570
+ validator = EnumAttributeValidator.new('String', ["background", "sport", "focus", "christmas", "film", "summer", "adverts", "party", "relax"])
1571
+ unless validator.valid?(use_case)
1572
+ fail ArgumentError, "invalid value for \"use_case\", must be one of #{validator.allowable_values}."
1573
+ end
1574
+ @use_case = use_case
1575
+ end
1576
+
1577
+ # Custom attribute writer method checking allowed values (enum).
1578
+ # @param [Object] social_media Object to be assigned
1579
+ def social_media=(social_media)
1580
+ validator = EnumAttributeValidator.new('String', ["Spotify", "TikTok", "Unfitting", "YouTube"])
1581
+ unless validator.valid?(social_media)
1582
+ fail ArgumentError, "invalid value for \"social_media\", must be one of #{validator.allowable_values}."
1583
+ end
1584
+ @social_media = social_media
1585
+ end
1586
+
1587
+ # Custom attribute writer method checking allowed values (enum).
1588
+ # @param [Object] industry_suitability Object to be assigned
1589
+ def industry_suitability=(industry_suitability)
1590
+ validator = EnumAttributeValidator.new('String', ["Automobiles and Parts", "Consumer Products and Services", "Financial Services", "Food, Beverage and Tobacco", "Health Care", "Insurance", "Media", "Politics, Government and Organizations", "Real Estate", "Retail", "Technology", "Telecommunications", "Travel and Leisure"])
1591
+ unless validator.valid?(industry_suitability)
1592
+ fail ArgumentError, "invalid value for \"industry_suitability\", must be one of #{validator.allowable_values}."
1593
+ end
1594
+ @industry_suitability = industry_suitability
1595
+ end
1596
+
1597
+ # Checks equality by comparing each attribute.
1598
+ # @param [Object] Object to be compared
1599
+ def ==(o)
1600
+ return true if self.equal?(o)
1601
+ self.class == o.class &&
1602
+ isrc == o.isrc &&
1603
+ name == o.name &&
1604
+ folder == o.folder &&
1605
+ primary_mood_cluster_affinity == o.primary_mood_cluster_affinity &&
1606
+ primary_mood_cluster == o.primary_mood_cluster &&
1607
+ secondary_mood_cluster_affinity == o.secondary_mood_cluster_affinity &&
1608
+ secondary_mood_cluster == o.secondary_mood_cluster &&
1609
+ tertiary_mood_cluster_affinity == o.tertiary_mood_cluster_affinity &&
1610
+ tertiary_mood_cluster == o.tertiary_mood_cluster &&
1611
+ valence_affinity == o.valence_affinity &&
1612
+ arousal_affinity == o.arousal_affinity &&
1613
+ pleasantness_affinity == o.pleasantness_affinity &&
1614
+ engagement_affinity == o.engagement_affinity &&
1615
+ valence == o.valence &&
1616
+ arousal == o.arousal &&
1617
+ pleasantness == o.pleasantness &&
1618
+ engagement == o.engagement &&
1619
+ vocals == o.vocals &&
1620
+ vocals_affinity == o.vocals_affinity &&
1621
+ dominant_instrument == o.dominant_instrument &&
1622
+ dominant_instrument_affinity == o.dominant_instrument_affinity &&
1623
+ secondary_instrument_affinity == o.secondary_instrument_affinity &&
1624
+ secondary_instrument == o.secondary_instrument &&
1625
+ tertiary_instrument_affinity == o.tertiary_instrument_affinity &&
1626
+ tertiary_instrument == o.tertiary_instrument &&
1627
+ energy == o.energy &&
1628
+ energy_affinity == o.energy_affinity &&
1629
+ sound_generation == o.sound_generation &&
1630
+ sound_generation_affinity == o.sound_generation_affinity &&
1631
+ tempo == o.tempo &&
1632
+ tempo_affinity == o.tempo_affinity &&
1633
+ scale == o.scale &&
1634
+ scale_affinity == o.scale_affinity &&
1635
+ rhythm == o.rhythm &&
1636
+ rhythm_affinity == o.rhythm_affinity &&
1637
+ primary_sound_character == o.primary_sound_character &&
1638
+ primary_sound_character_affinity == o.primary_sound_character_affinity &&
1639
+ timbre_affinity == o.timbre_affinity &&
1640
+ roughness_affinity == o.roughness_affinity &&
1641
+ tonality_affinity == o.tonality_affinity &&
1642
+ harmony_affinity == o.harmony_affinity &&
1643
+ texture_affinity == o.texture_affinity &&
1644
+ groovyness_affinity == o.groovyness_affinity &&
1645
+ space_affinity == o.space_affinity &&
1646
+ timbre == o.timbre &&
1647
+ roughness == o.roughness &&
1648
+ tonality == o.tonality &&
1649
+ harmony == o.harmony &&
1650
+ texture == o.texture &&
1651
+ groovyness == o.groovyness &&
1652
+ space == o.space &&
1653
+ bpm == o.bpm &&
1654
+ key == o.key &&
1655
+ key_affinity == o.key_affinity &&
1656
+ production_rating == o.production_rating &&
1657
+ production_rating_affinity == o.production_rating_affinity &&
1658
+ performance_rating == o.performance_rating &&
1659
+ performance_rating_affinity == o.performance_rating_affinity &&
1660
+ song_rating == o.song_rating &&
1661
+ song_rating_affinity == o.song_rating_affinity &&
1662
+ audience_gender == o.audience_gender &&
1663
+ audience_gender_affinity == o.audience_gender_affinity &&
1664
+ audience_region == o.audience_region &&
1665
+ audience_region_affinity == o.audience_region_affinity &&
1666
+ secondary_audience_region_affinity == o.secondary_audience_region_affinity &&
1667
+ secondary_audience_region == o.secondary_audience_region &&
1668
+ tertiary_audience_region_affinity == o.tertiary_audience_region_affinity &&
1669
+ tertiary_audience_region == o.tertiary_audience_region &&
1670
+ audience_age == o.audience_age &&
1671
+ audience_age_affinity == o.audience_age_affinity &&
1672
+ secondary_audience_age == o.secondary_audience_age &&
1673
+ secondary_audience_age_affinity == o.secondary_audience_age_affinity &&
1674
+ tertiary_audience_age == o.tertiary_audience_age &&
1675
+ tertiary_audience_age_affinity == o.tertiary_audience_age_affinity &&
1676
+ origin_decade == o.origin_decade &&
1677
+ origin_decade_affinity == o.origin_decade_affinity &&
1678
+ language_of_performance == o.language_of_performance &&
1679
+ language_of_performance_affinity == o.language_of_performance_affinity &&
1680
+ origin_region == o.origin_region &&
1681
+ origin_region_affinity == o.origin_region_affinity &&
1682
+ taggrams == o.taggrams &&
1683
+ embeddings == o.embeddings &&
1684
+ level1_genre == o.level1_genre &&
1685
+ level1_genre_affinity == o.level1_genre_affinity &&
1686
+ secondary_level1_genre == o.secondary_level1_genre &&
1687
+ secondary_level1_genre_affinity == o.secondary_level1_genre_affinity &&
1688
+ tertiary_level1_genre == o.tertiary_level1_genre &&
1689
+ tertiary_level1_genre_affinity == o.tertiary_level1_genre_affinity &&
1690
+ level2_genre == o.level2_genre &&
1691
+ level2_genre_affinity == o.level2_genre_affinity &&
1692
+ secondary_level2_genre == o.secondary_level2_genre &&
1693
+ secondary_level2_genre_affinity == o.secondary_level2_genre_affinity &&
1694
+ tertiary_level2_genre == o.tertiary_level2_genre &&
1695
+ tertiary_level2_genre_affinity == o.tertiary_level2_genre_affinity &&
1696
+ curateability == o.curateability &&
1697
+ curateability_affinity == o.curateability_affinity &&
1698
+ use_case == o.use_case &&
1699
+ use_case_affinity == o.use_case_affinity &&
1700
+ social_media == o.social_media &&
1701
+ social_media_affinity == o.social_media_affinity &&
1702
+ industry_suitability == o.industry_suitability &&
1703
+ industry_suitability_affinity == o.industry_suitability_affinity &&
1704
+ created_by_version == o.created_by_version &&
1705
+ tags == o.tags &&
1706
+ genres == o.genres &&
1707
+ parties == o.parties &&
1708
+ iswc == o.iswc &&
1709
+ proprietary_id_gema == o.proprietary_id_gema &&
1710
+ title == o.title &&
1711
+ version_title == o.version_title
1712
+ end
1713
+
1714
+ # @see the `==` method
1715
+ # @param [Object] Object to be compared
1716
+ def eql?(o)
1717
+ self == o
1718
+ end
1719
+
1720
+ # Calculates hash code according to all attributes.
1721
+ # @return [Integer] Hash code
1722
+ def hash
1723
+ [isrc, name, folder, primary_mood_cluster_affinity, primary_mood_cluster, secondary_mood_cluster_affinity, secondary_mood_cluster, tertiary_mood_cluster_affinity, tertiary_mood_cluster, valence_affinity, arousal_affinity, pleasantness_affinity, engagement_affinity, valence, arousal, pleasantness, engagement, vocals, vocals_affinity, dominant_instrument, dominant_instrument_affinity, secondary_instrument_affinity, secondary_instrument, tertiary_instrument_affinity, tertiary_instrument, energy, energy_affinity, sound_generation, sound_generation_affinity, tempo, tempo_affinity, scale, scale_affinity, rhythm, rhythm_affinity, primary_sound_character, primary_sound_character_affinity, timbre_affinity, roughness_affinity, tonality_affinity, harmony_affinity, texture_affinity, groovyness_affinity, space_affinity, timbre, roughness, tonality, harmony, texture, groovyness, space, bpm, key, key_affinity, production_rating, production_rating_affinity, performance_rating, performance_rating_affinity, song_rating, song_rating_affinity, audience_gender, audience_gender_affinity, audience_region, audience_region_affinity, secondary_audience_region_affinity, secondary_audience_region, tertiary_audience_region_affinity, tertiary_audience_region, audience_age, audience_age_affinity, secondary_audience_age, secondary_audience_age_affinity, tertiary_audience_age, tertiary_audience_age_affinity, origin_decade, origin_decade_affinity, language_of_performance, language_of_performance_affinity, origin_region, origin_region_affinity, taggrams, embeddings, level1_genre, level1_genre_affinity, secondary_level1_genre, secondary_level1_genre_affinity, tertiary_level1_genre, tertiary_level1_genre_affinity, level2_genre, level2_genre_affinity, secondary_level2_genre, secondary_level2_genre_affinity, tertiary_level2_genre, tertiary_level2_genre_affinity, curateability, curateability_affinity, use_case, use_case_affinity, social_media, social_media_affinity, industry_suitability, industry_suitability_affinity, created_by_version, tags, genres, parties, iswc, proprietary_id_gema, title, version_title].hash
1724
+ end
1725
+
1726
+ # Builds the object from hash
1727
+ # @param [Hash] attributes Model attributes in the form of hash
1728
+ # @return [Object] Returns the model itself
1729
+ def self.build_from_hash(attributes)
1730
+ new.build_from_hash(attributes)
1731
+ end
1732
+
1733
+ # Builds the object from hash
1734
+ # @param [Hash] attributes Model attributes in the form of hash
1735
+ # @return [Object] Returns the model itself
1736
+ def build_from_hash(attributes)
1737
+ return nil unless attributes.is_a?(Hash)
1738
+ attributes = attributes.transform_keys(&:to_sym)
1739
+ self.class.openapi_types.each_pair do |key, type|
1740
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
1741
+ self.send("#{key}=", nil)
1742
+ elsif type =~ /\AArray<(.*)>/i
1743
+ # check to ensure the input is an array given that the attribute
1744
+ # is documented as an array but the input is not
1745
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
1746
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
1747
+ end
1748
+ elsif !attributes[self.class.attribute_map[key]].nil?
1749
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
1750
+ end
1751
+ end
1752
+
1753
+ self
1754
+ end
1755
+
1756
+ # Deserializes the data based on type
1757
+ # @param string type Data type
1758
+ # @param string value Value to be deserialized
1759
+ # @return [Object] Deserialized data
1760
+ def _deserialize(type, value)
1761
+ case type.to_sym
1762
+ when :Time
1763
+ Time.parse(value)
1764
+ when :Date
1765
+ Date.parse(value)
1766
+ when :String
1767
+ value.to_s
1768
+ when :Integer
1769
+ value.to_i
1770
+ when :Float
1771
+ value.to_f
1772
+ when :Boolean
1773
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
1774
+ true
1775
+ else
1776
+ false
1777
+ end
1778
+ when :Object
1779
+ # generic object (usually a Hash), return directly
1780
+ value
1781
+ when /\AArray<(?<inner_type>.+)>\z/
1782
+ inner_type = Regexp.last_match[:inner_type]
1783
+ value.map { |v| _deserialize(inner_type, v) }
1784
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
1785
+ k_type = Regexp.last_match[:k_type]
1786
+ v_type = Regexp.last_match[:v_type]
1787
+ {}.tap do |hash|
1788
+ value.each do |k, v|
1789
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
1790
+ end
1791
+ end
1792
+ else # model
1793
+ # models (e.g. Pet) or oneOf
1794
+ klass = SongtradrApiClientRuby.const_get(type)
1795
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
1796
+ end
1797
+ end
1798
+
1799
+ # Returns the string representation of the object
1800
+ # @return [String] String presentation of the object
1801
+ def to_s
1802
+ to_hash.to_s
1803
+ end
1804
+
1805
+ # to_body is an alias to to_hash (backward compatibility)
1806
+ # @return [Hash] Returns the object in the form of hash
1807
+ def to_body
1808
+ to_hash
1809
+ end
1810
+
1811
+ # Returns the object in the form of hash
1812
+ # @return [Hash] Returns the object in the form of hash
1813
+ def to_hash
1814
+ hash = {}
1815
+ self.class.attribute_map.each_pair do |attr, param|
1816
+ value = self.send(attr)
1817
+ if value.nil?
1818
+ is_nullable = self.class.openapi_nullable.include?(attr)
1819
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
1820
+ end
1821
+
1822
+ hash[param] = _to_hash(value)
1823
+ end
1824
+ hash
1825
+ end
1826
+
1827
+ # Outputs non-array value in the form of hash
1828
+ # For object, use to_hash. Otherwise, just return the value
1829
+ # @param [Object] value Any valid value
1830
+ # @return [Hash] Returns the value in the form of hash
1831
+ def _to_hash(value)
1832
+ if value.is_a?(Array)
1833
+ value.compact.map { |v| _to_hash(v) }
1834
+ elsif value.is_a?(Hash)
1835
+ {}.tap do |hash|
1836
+ value.each { |k, v| hash[k] = _to_hash(v) }
1837
+ end
1838
+ elsif value.respond_to? :to_hash
1839
+ value.to_hash
1840
+ else
1841
+ value
1842
+ end
1843
+ end
1844
+
1845
+ end
1846
+
1847
+ end