musora-content-services 2.7.1 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/docs/ContentOrganization.html +2 -2
  3. package/docs/Gamification.html +2 -2
  4. package/docs/UserManagementSystem.html +2 -2
  5. package/docs/api_types.js.html +2 -2
  6. package/docs/config.js.html +2 -2
  7. package/docs/content-org_content-org.js.html +2 -2
  8. package/docs/content-org_playlists-types.js.html +3 -5
  9. package/docs/content-org_playlists.js.html +23 -9
  10. package/docs/content.js.html +9 -2
  11. package/docs/gamification_awards.js.html +2 -2
  12. package/docs/gamification_gamification.js.html +2 -2
  13. package/docs/gamification_types.js.html +2 -2
  14. package/docs/global.html +5 -53
  15. package/docs/index.html +2 -2
  16. package/docs/module-Awards.html +2 -2
  17. package/docs/module-Config.html +2 -2
  18. package/docs/module-Content-Services-V2.html +8 -8
  19. package/docs/module-Interests.html +2 -2
  20. package/docs/module-Permissions.html +2 -2
  21. package/docs/module-Playlists.html +21 -20
  22. package/docs/module-Railcontent-Services.html +2 -2
  23. package/docs/module-Sanity-Services.html +30 -30
  24. package/docs/module-Sessions.html +2 -2
  25. package/docs/module-User-Activity.html +737 -58
  26. package/docs/module-UserManagement.html +2 -2
  27. package/docs/module-UserProfile.html +2 -2
  28. package/docs/railcontent.js.html +2 -2
  29. package/docs/sanity.js.html +24 -6
  30. package/docs/userActivity.js.html +360 -12
  31. package/docs/user_interests.js.html +2 -2
  32. package/docs/user_management.js.html +2 -2
  33. package/docs/user_permissions.js.html +2 -2
  34. package/docs/user_profile.js.html +4 -4
  35. package/docs/user_sessions.js.html +2 -2
  36. package/docs/user_types.js.html +2 -2
  37. package/docs/user_user-management-system.js.html +2 -2
  38. package/package.json +1 -1
  39. package/src/contentMetaData.js +2 -1
  40. package/src/contentTypeConfig.js +18 -2
  41. package/src/index.d.ts +10 -2
  42. package/src/index.js +10 -2
  43. package/src/services/content.js +7 -0
  44. package/src/services/contentProgress.js +45 -15
  45. package/src/services/sanity.js +22 -4
  46. package/src/services/userActivity.js +348 -10
  47. package/test/mockData/mockData_progress_content.json +182 -0
  48. package/test/mockData/mockData_sanity_progress_content.json +1451 -0
  49. package/test/progressRows.test.js +215 -0
  50. package/test/sanityQueryService.test.js +0 -0
@@ -0,0 +1,1451 @@
1
+ [
2
+ {
3
+ "artist": null,
4
+ "artist_name": "Domino Santantonio",
5
+ "brand": "drumeo",
6
+ "child_count": null,
7
+ "difficulty": 3,
8
+ "difficulty_string": "Beginner",
9
+ "genre": null,
10
+ "id": 410480,
11
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/a1331acc11c72891d3078dbb000e566b56b95794-8000x4500.jpg",
12
+ "length_in_seconds": 302,
13
+ "lesson_count": null,
14
+ "lessons": null,
15
+ "parent_content_data": [
16
+ 410478
17
+ ],
18
+ "permission_id": [
19
+ 1,
20
+ 78,
21
+ 91,
22
+ 92
23
+ ],
24
+ "progress_percent": null,
25
+ "published_on": "2024-07-19T07:01:00.000000Z",
26
+ "railcontent_id": 410480,
27
+ "sanity_id": "challenge-part_410480",
28
+ "slug": "day-2-around-the-kit",
29
+ "status": "published",
30
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/a1331acc11c72891d3078dbb000e566b56b95794-8000x4500.jpg",
31
+ "title": "Day 2 — Around The Kit",
32
+ "type": "challenge-part",
33
+ "url": "/drumeo/challenge/sheet-music-101/410478/day-2-around-the-kit/410480",
34
+ "web_url_path": "/drumeo/challenge/sheet-music-101/410478/day-2-around-the-kit/410480",
35
+ "xp": 100,
36
+ "need_access": false
37
+ },
38
+ {
39
+ "artist": null,
40
+ "artist_name": "Domino Santantonio",
41
+ "brand": "drumeo",
42
+ "child_count": null,
43
+ "difficulty": 3,
44
+ "difficulty_string": "Beginner",
45
+ "genre": null,
46
+ "id": 410481,
47
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/a7f46367bf84cd4425e9ebb26c3d411901a32adc-8000x4500.jpg",
48
+ "length_in_seconds": 288,
49
+ "lesson_count": null,
50
+ "lessons": null,
51
+ "parent_content_data": [
52
+ 410478
53
+ ],
54
+ "permission_id": [
55
+ 1,
56
+ 78,
57
+ 91,
58
+ 92
59
+ ],
60
+ "progress_percent": null,
61
+ "published_on": "2024-07-20T07:01:00.000000Z",
62
+ "railcontent_id": 410481,
63
+ "sanity_id": "challenge-part_410481",
64
+ "slug": "day-3-more-bass-drum",
65
+ "status": "published",
66
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/a7f46367bf84cd4425e9ebb26c3d411901a32adc-8000x4500.jpg",
67
+ "title": "Day 3 — More Bass Drum",
68
+ "type": "challenge-part",
69
+ "url": "/drumeo/challenge/sheet-music-101/410478/more-bass-drum/410481",
70
+ "web_url_path": "/drumeo/challenge/sheet-music-101/410478/more-bass-drum/410481",
71
+ "xp": 100,
72
+ "need_access": false
73
+ },
74
+ {
75
+ "artist": null,
76
+ "artist_name": "Domino Santantonio",
77
+ "brand": "drumeo",
78
+ "child_count": 24,
79
+ "difficulty": 1,
80
+ "difficulty_string": "Novice",
81
+ "genre": null,
82
+ "id": 402199,
83
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/94ffc60e09728dcb15f6443fd275fc5a67cb0dd6-8334x10417.png",
84
+ "length_in_seconds": 17451,
85
+ "lesson_count": 24,
86
+ "lessons": [
87
+ {
88
+ "brand": "drumeo",
89
+ "id": 402542,
90
+ "lessons": null,
91
+ "slug": "course-kick-off",
92
+ "type": "challenge-part"
93
+ },
94
+ {
95
+ "brand": "drumeo",
96
+ "id": 402314,
97
+ "lessons": null,
98
+ "slug": "acoustic-kit-setup",
99
+ "type": "challenge-part"
100
+ },
101
+ {
102
+ "brand": "drumeo",
103
+ "id": 402316,
104
+ "lessons": null,
105
+ "slug": "electronic-kit-setup",
106
+ "type": "challenge-part"
107
+ },
108
+ {
109
+ "brand": "drumeo",
110
+ "id": 402318,
111
+ "lessons": null,
112
+ "slug": "practice-pad-setup",
113
+ "type": "challenge-part"
114
+ },
115
+ {
116
+ "brand": "drumeo",
117
+ "id": 402320,
118
+ "lessons": null,
119
+ "slug": "day-1-your-first-drum-beat-lesson-workout-1",
120
+ "type": "challenge-part"
121
+ },
122
+ {
123
+ "brand": "drumeo",
124
+ "id": 402322,
125
+ "lessons": null,
126
+ "slug": "your-first-drum-beat-workout-2",
127
+ "type": "challenge-part"
128
+ },
129
+ {
130
+ "brand": "drumeo",
131
+ "id": 402324,
132
+ "lessons": null,
133
+ "slug": "your-first-drum-beat-workout-3",
134
+ "type": "challenge-part"
135
+ },
136
+ {
137
+ "brand": "drumeo",
138
+ "id": 402326,
139
+ "lessons": null,
140
+ "slug": "your-first-drum-beat-workout-4",
141
+ "type": "challenge-part"
142
+ },
143
+ {
144
+ "brand": "drumeo",
145
+ "id": 402328,
146
+ "lessons": null,
147
+ "slug": "your-first-drum-beat-workout-5",
148
+ "type": "challenge-part"
149
+ },
150
+ {
151
+ "brand": "drumeo",
152
+ "id": 402330,
153
+ "lessons": null,
154
+ "slug": "doubling-it-up-lesson-workout-1",
155
+ "type": "challenge-part"
156
+ },
157
+ {
158
+ "brand": "drumeo",
159
+ "id": 402332,
160
+ "lessons": null,
161
+ "slug": "doubling-it-up-workout-2",
162
+ "type": "challenge-part"
163
+ },
164
+ {
165
+ "brand": "drumeo",
166
+ "id": 402334,
167
+ "lessons": null,
168
+ "slug": "doubling-it-up-workout-3",
169
+ "type": "challenge-part"
170
+ },
171
+ {
172
+ "brand": "drumeo",
173
+ "id": 402336,
174
+ "lessons": null,
175
+ "slug": "doubling-it-up-workout-4",
176
+ "type": "challenge-part"
177
+ },
178
+ {
179
+ "brand": "drumeo",
180
+ "id": 402338,
181
+ "lessons": null,
182
+ "slug": "doubling-it-up-workout-5",
183
+ "type": "challenge-part"
184
+ },
185
+ {
186
+ "brand": "drumeo",
187
+ "id": 402340,
188
+ "lessons": null,
189
+ "slug": "adding-fills-crashes-lesson-workout-1",
190
+ "type": "challenge-part"
191
+ },
192
+ {
193
+ "brand": "drumeo",
194
+ "id": 402342,
195
+ "lessons": null,
196
+ "slug": "adding-fills-crashes-workout-2",
197
+ "type": "challenge-part"
198
+ },
199
+ {
200
+ "brand": "drumeo",
201
+ "id": 402344,
202
+ "lessons": null,
203
+ "slug": "adding-fills-crashes-workout-3",
204
+ "type": "challenge-part"
205
+ },
206
+ {
207
+ "brand": "drumeo",
208
+ "id": 402346,
209
+ "lessons": null,
210
+ "slug": "adding-fills-crashes-workout-4",
211
+ "type": "challenge-part"
212
+ },
213
+ {
214
+ "brand": "drumeo",
215
+ "id": 402348,
216
+ "lessons": null,
217
+ "slug": "adding-fills-crashes-workout-5",
218
+ "type": "challenge-part"
219
+ },
220
+ {
221
+ "brand": "drumeo",
222
+ "id": 402350,
223
+ "lessons": null,
224
+ "slug": "your-first-song-lesson-workout-1",
225
+ "type": "challenge-part"
226
+ },
227
+ {
228
+ "brand": "drumeo",
229
+ "id": 402352,
230
+ "lessons": null,
231
+ "slug": "your-first-song-workout-2",
232
+ "type": "challenge-part"
233
+ },
234
+ {
235
+ "brand": "drumeo",
236
+ "id": 402354,
237
+ "lessons": null,
238
+ "slug": "your-first-song-workout-3",
239
+ "type": "challenge-part"
240
+ },
241
+ {
242
+ "brand": "drumeo",
243
+ "id": 402356,
244
+ "lessons": null,
245
+ "slug": "your-first-song-workout-4",
246
+ "type": "challenge-part"
247
+ },
248
+ {
249
+ "brand": "drumeo",
250
+ "id": 402358,
251
+ "lessons": null,
252
+ "slug": "your-first-song-workout-5",
253
+ "type": "challenge-part"
254
+ }
255
+ ],
256
+ "parent_content_data": null,
257
+ "permission_id": [
258
+ 91,
259
+ 92,
260
+ 1,
261
+ 78,
262
+ 101,
263
+ 102
264
+ ],
265
+ "progress_percent": null,
266
+ "published_on": "2023-12-28T08:02:00.000000Z",
267
+ "railcontent_id": 402199,
268
+ "sanity_id": "challenge_402199",
269
+ "slug": "30-day-drummer",
270
+ "status": "published",
271
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/94ffc60e09728dcb15f6443fd275fc5a67cb0dd6-8334x10417.png",
272
+ "title": "30-Day Drummer",
273
+ "type": "challenge",
274
+ "url": "/drumeo/challenge/30-day-drummer/402199",
275
+ "web_url_path": "/drumeo/challenge/30-day-drummer/402199",
276
+ "xp": 100,
277
+ "need_access": false
278
+ },
279
+ {
280
+ "artist": null,
281
+ "artist_name": "Domino Santantonio",
282
+ "brand": "drumeo",
283
+ "child_count": 9,
284
+ "difficulty": 3,
285
+ "difficulty_string": "Beginner",
286
+ "genre": null,
287
+ "id": 410478,
288
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/6f01890a7c09b7cc1600ca85b7c6feb56759e277-8334x10417.png",
289
+ "length_in_seconds": 2246,
290
+ "lesson_count": 9,
291
+ "lessons": [
292
+ {
293
+ "brand": "drumeo",
294
+ "id": 410479,
295
+ "lessons": null,
296
+ "slug": "day-1-the-money-beat",
297
+ "type": "challenge-part"
298
+ },
299
+ {
300
+ "brand": "drumeo",
301
+ "id": 410480,
302
+ "lessons": null,
303
+ "slug": "day-2-around-the-kit",
304
+ "type": "challenge-part"
305
+ },
306
+ {
307
+ "brand": "drumeo",
308
+ "id": 410481,
309
+ "lessons": null,
310
+ "slug": "day-3-more-bass-drum",
311
+ "type": "challenge-part"
312
+ },
313
+ {
314
+ "brand": "drumeo",
315
+ "id": 410482,
316
+ "lessons": null,
317
+ "slug": "day-4-more-snare-drum",
318
+ "type": "challenge-part"
319
+ },
320
+ {
321
+ "brand": "drumeo",
322
+ "id": 410484,
323
+ "lessons": null,
324
+ "slug": "day-5-adding-a-crash",
325
+ "type": "challenge-part"
326
+ },
327
+ {
328
+ "brand": "drumeo",
329
+ "id": 410483,
330
+ "lessons": null,
331
+ "slug": "day-6-rests",
332
+ "type": "challenge-part"
333
+ },
334
+ {
335
+ "brand": "drumeo",
336
+ "id": 410485,
337
+ "lessons": null,
338
+ "slug": "day-7-drum-fills",
339
+ "type": "challenge-part"
340
+ },
341
+ {
342
+ "brand": "drumeo",
343
+ "id": 410486,
344
+ "lessons": null,
345
+ "slug": "day-8-flams-and-drags",
346
+ "type": "challenge-part"
347
+ },
348
+ {
349
+ "brand": "drumeo",
350
+ "id": 410487,
351
+ "lessons": null,
352
+ "slug": "day-9-what-s-next",
353
+ "type": "challenge-part"
354
+ }
355
+ ],
356
+ "parent_content_data": null,
357
+ "permission_id": [
358
+ 1,
359
+ 78,
360
+ 91,
361
+ 92
362
+ ],
363
+ "progress_percent": null,
364
+ "published_on": "2024-07-18T07:01:00.000000Z",
365
+ "railcontent_id": 410478,
366
+ "sanity_id": "challenge_410478",
367
+ "slug": "sheet-music-101",
368
+ "status": "published",
369
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/6f01890a7c09b7cc1600ca85b7c6feb56759e277-8334x10417.png",
370
+ "title": "Sheet Music 101",
371
+ "type": "challenge",
372
+ "url": "/drumeo/challenge/sheet-music-101/410478",
373
+ "web_url_path": "/drumeo/challenge/sheet-music-101/410478",
374
+ "xp": 100,
375
+ "need_access": false,
376
+ "first_incomplete_child": {
377
+ "brand": "drumeo",
378
+ "id": 410479,
379
+ "lessons": null,
380
+ "slug": "day-1-the-money-beat",
381
+ "type": "challenge-part"
382
+ },
383
+ "second_incomplete_child": null
384
+ },
385
+ {
386
+ "artist": null,
387
+ "artist_name": "Kyle Radomsky",
388
+ "brand": "drumeo",
389
+ "child_count": null,
390
+ "difficulty": 0,
391
+ "difficulty_string": "All",
392
+ "genre": null,
393
+ "id": 274889,
394
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/2263f9dc44a5c2c6e775513d4eebbaae92cabf20-1921x1080.png",
395
+ "length_in_seconds": 62,
396
+ "lesson_count": null,
397
+ "lessons": null,
398
+ "parent_content_data": [
399
+ 274368
400
+ ],
401
+ "permission_id": [
402
+ 1,
403
+ 91,
404
+ 92
405
+ ],
406
+ "progress_percent": null,
407
+ "published_on": "2020-11-14T16:00:00.000000Z",
408
+ "railcontent_id": 274889,
409
+ "sanity_id": "course-part_274889",
410
+ "slug": "introduction",
411
+ "status": "published",
412
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/2263f9dc44a5c2c6e775513d4eebbaae92cabf20-1921x1080.png",
413
+ "title": "Introduction",
414
+ "type": "course-part",
415
+ "url": "/drumeo/courses/electronic-multi-pad-gear-guide/274368/introduction/274889",
416
+ "web_url_path": "/drumeo/courses/electronic-multi-pad-gear-guide/274368/introduction/274889",
417
+ "xp": 150,
418
+ "need_access": false
419
+ },
420
+ {
421
+ "artist": null,
422
+ "artist_name": "Kyle Radomsky",
423
+ "brand": "drumeo",
424
+ "child_count": null,
425
+ "difficulty": 0,
426
+ "difficulty_string": "All",
427
+ "genre": null,
428
+ "id": 287853,
429
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/3fb1f385e41f351105ee8714ee2ef7cc1eafcfc1-3841x2160.png",
430
+ "length_in_seconds": 1043,
431
+ "lesson_count": null,
432
+ "lessons": null,
433
+ "parent_content_data": [
434
+ 280498
435
+ ],
436
+ "permission_id": [
437
+ 1,
438
+ 91,
439
+ 92
440
+ ],
441
+ "progress_percent": null,
442
+ "published_on": "2021-02-06T16:00:00.000000Z",
443
+ "railcontent_id": 287853,
444
+ "sanity_id": "course-part_287853",
445
+ "slug": "introduction-unboxing",
446
+ "status": "published",
447
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/3fb1f385e41f351105ee8714ee2ef7cc1eafcfc1-3841x2160.png",
448
+ "title": "Introduction/Unboxing",
449
+ "type": "course-part",
450
+ "url": "/drumeo/courses/roland-td-07-gear-guide/280498/introduction-unboxing/287853",
451
+ "web_url_path": "/drumeo/courses/roland-td-07-gear-guide/280498/introduction-unboxing/287853",
452
+ "xp": 150,
453
+ "need_access": false
454
+ },
455
+ {
456
+ "artist": null,
457
+ "artist_name": "Kyle Radomsky",
458
+ "brand": "drumeo",
459
+ "child_count": null,
460
+ "difficulty": 0,
461
+ "difficulty_string": "All",
462
+ "genre": null,
463
+ "id": 287855,
464
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/21431571d1d2b6db97ce104d1e44d57e280f8a4a-3840x2160.png",
465
+ "length_in_seconds": 834,
466
+ "lesson_count": null,
467
+ "lessons": null,
468
+ "parent_content_data": [
469
+ 280498
470
+ ],
471
+ "permission_id": [
472
+ 1,
473
+ 91,
474
+ 92
475
+ ],
476
+ "progress_percent": null,
477
+ "published_on": "2021-02-06T16:00:00.000000Z",
478
+ "railcontent_id": 287855,
479
+ "sanity_id": "course-part_287855",
480
+ "slug": "creating-your-own-kits-and-advanced-features",
481
+ "status": "published",
482
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/21431571d1d2b6db97ce104d1e44d57e280f8a4a-3840x2160.png",
483
+ "title": "Creating Your Own Kits And Advanced Features",
484
+ "type": "course-part",
485
+ "url": "/drumeo/courses/roland-td-07-gear-guide/280498/creating-your-own-kits-and-advanced-features/287855",
486
+ "web_url_path": "/drumeo/courses/roland-td-07-gear-guide/280498/creating-your-own-kits-and-advanced-features/287855",
487
+ "xp": 150,
488
+ "need_access": false
489
+ },
490
+ {
491
+ "artist": null,
492
+ "artist_name": "Kyle Radomsky",
493
+ "brand": "drumeo",
494
+ "child_count": null,
495
+ "difficulty": 0,
496
+ "difficulty_string": "All",
497
+ "genre": null,
498
+ "id": 287858,
499
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/e72d6b3e5517d329f035c7e17e680e5012c544f6-3840x2160.png",
500
+ "length_in_seconds": 652,
501
+ "lesson_count": null,
502
+ "lessons": null,
503
+ "parent_content_data": [
504
+ 280498
505
+ ],
506
+ "permission_id": [
507
+ 1,
508
+ 91,
509
+ 92
510
+ ],
511
+ "progress_percent": null,
512
+ "published_on": "2021-02-06T16:00:00.000000Z",
513
+ "railcontent_id": 287858,
514
+ "sanity_id": "course-part_287858",
515
+ "slug": "coach-function-and-bluetooth",
516
+ "status": "published",
517
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/e72d6b3e5517d329f035c7e17e680e5012c544f6-3840x2160.png",
518
+ "title": "Coach Function And Bluetooth",
519
+ "type": "course-part",
520
+ "url": "/drumeo/courses/roland-td-07-gear-guide/280498/coach-function-and-bluetooth/287858",
521
+ "web_url_path": "/drumeo/courses/roland-td-07-gear-guide/280498/coach-function-and-bluetooth/287858",
522
+ "xp": 150,
523
+ "need_access": false
524
+ },
525
+ {
526
+ "artist": null,
527
+ "artist_name": "Kyle Radomsky",
528
+ "brand": "drumeo",
529
+ "child_count": 5,
530
+ "difficulty": 1,
531
+ "difficulty_string": "Novice",
532
+ "genre": null,
533
+ "id": 274368,
534
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/9dfbf11ccceadd68ceb6f41bf6d0dd42a562afa7-1921x1080.png",
535
+ "length_in_seconds": 2343,
536
+ "lesson_count": 5,
537
+ "lessons": [
538
+ {
539
+ "brand": "drumeo",
540
+ "id": 274889,
541
+ "lessons": null,
542
+ "slug": "introduction",
543
+ "type": "course-part"
544
+ },
545
+ {
546
+ "brand": "drumeo",
547
+ "id": 274890,
548
+ "lessons": null,
549
+ "slug": "yamaha-dtx-multi-12",
550
+ "type": "course-part"
551
+ },
552
+ {
553
+ "brand": "drumeo",
554
+ "id": 274891,
555
+ "lessons": null,
556
+ "slug": "roland-spd-sx-se",
557
+ "type": "course-part"
558
+ },
559
+ {
560
+ "brand": "drumeo",
561
+ "id": 274892,
562
+ "lessons": null,
563
+ "slug": "alesis-strike-pad",
564
+ "type": "course-part"
565
+ },
566
+ {
567
+ "brand": "drumeo",
568
+ "id": 274893,
569
+ "lessons": null,
570
+ "slug": "conclusion",
571
+ "type": "course-part"
572
+ }
573
+ ],
574
+ "parent_content_data": null,
575
+ "permission_id": [
576
+ 1,
577
+ 91,
578
+ 92
579
+ ],
580
+ "progress_percent": null,
581
+ "published_on": "2020-11-14T16:00:00.000000Z",
582
+ "railcontent_id": 274368,
583
+ "sanity_id": "course_274368",
584
+ "slug": "electronic-multi-pad-gear-guide",
585
+ "status": "published",
586
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/9dfbf11ccceadd68ceb6f41bf6d0dd42a562afa7-1921x1080.png",
587
+ "title": "Electronic Multi-Pad Gear Guide",
588
+ "type": "course",
589
+ "url": "/drumeo/courses/electronic-multi-pad-gear-guide/274368",
590
+ "web_url_path": "/drumeo/courses/electronic-multi-pad-gear-guide/274368",
591
+ "xp": 150,
592
+ "need_access": false
593
+ },
594
+ {
595
+ "artist": null,
596
+ "artist_name": "Kyle Radomsky",
597
+ "brand": "drumeo",
598
+ "child_count": 5,
599
+ "difficulty": 0,
600
+ "difficulty_string": "All",
601
+ "genre": null,
602
+ "id": 280498,
603
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/ae9eebd6b11e17dc4dcbaea5b06668b4bc800aa2-3840x2160.png",
604
+ "length_in_seconds": 3159,
605
+ "lesson_count": 5,
606
+ "lessons": [
607
+ {
608
+ "brand": "drumeo",
609
+ "id": 287853,
610
+ "lessons": null,
611
+ "slug": "introduction-unboxing",
612
+ "type": "course-part"
613
+ },
614
+ {
615
+ "brand": "drumeo",
616
+ "id": 287854,
617
+ "lessons": null,
618
+ "slug": "basic-features-and-playing-examples",
619
+ "type": "course-part"
620
+ },
621
+ {
622
+ "brand": "drumeo",
623
+ "id": 287855,
624
+ "lessons": null,
625
+ "slug": "creating-your-own-kits-and-advanced-features",
626
+ "type": "course-part"
627
+ },
628
+ {
629
+ "brand": "drumeo",
630
+ "id": 287858,
631
+ "lessons": null,
632
+ "slug": "coach-function-and-bluetooth",
633
+ "type": "course-part"
634
+ },
635
+ {
636
+ "brand": "drumeo",
637
+ "id": 287859,
638
+ "lessons": null,
639
+ "slug": "conclusion",
640
+ "type": "course-part"
641
+ }
642
+ ],
643
+ "parent_content_data": null,
644
+ "permission_id": [
645
+ 1,
646
+ 91,
647
+ 92
648
+ ],
649
+ "progress_percent": null,
650
+ "published_on": "2021-02-06T16:00:00.000000Z",
651
+ "railcontent_id": 280498,
652
+ "sanity_id": "course_280498",
653
+ "slug": "roland-td-07-gear-guide",
654
+ "status": "published",
655
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/ae9eebd6b11e17dc4dcbaea5b06668b4bc800aa2-3840x2160.png",
656
+ "title": "Roland TD-07 Gear Guide",
657
+ "type": "course",
658
+ "url": "/drumeo/courses/roland-td-07-gear-guide/280498",
659
+ "web_url_path": "/drumeo/courses/roland-td-07-gear-guide/280498",
660
+ "xp": 500,
661
+ "need_access": false,
662
+ "first_incomplete_child": {
663
+ "brand": "drumeo",
664
+ "id": 287854,
665
+ "lessons": null,
666
+ "slug": "basic-features-and-playing-examples",
667
+ "type": "course-part"
668
+ },
669
+ "second_incomplete_child": null
670
+ },
671
+ {
672
+ "artist": null,
673
+ "artist_name": "Domino Santantonio",
674
+ "brand": "drumeo",
675
+ "child_count": null,
676
+ "difficulty": 0,
677
+ "difficulty_string": "All",
678
+ "genre": null,
679
+ "id": 415585,
680
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/86f0094cd02a27b3efcab4fc23dc08d1bea3471e-1920x1080.jpg",
681
+ "length_in_seconds": 3770,
682
+ "lesson_count": null,
683
+ "lessons": null,
684
+ "parent_content_data": null,
685
+ "permission_id": [
686
+ 78,
687
+ 89,
688
+ 88,
689
+ 90,
690
+ 91,
691
+ 92
692
+ ],
693
+ "progress_percent": null,
694
+ "published_on": "2025-02-01T19:17:42.354Z",
695
+ "railcontent_id": 415585,
696
+ "sanity_id": "f727e89d-d254-473c-9511-40ab237d30b4",
697
+ "slug": "30-day-drummer-level-ii-week-4-live-q-and-a",
698
+ "status": "published",
699
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/86f0094cd02a27b3efcab4fc23dc08d1bea3471e-1920x1080.jpg",
700
+ "title": "30-Day Drummer Level II: Week 4 — Live Q&A",
701
+ "type": "question-and-answer",
702
+ "url": "/drumeo/question-and-answer/30-day-drummer-level-ii-week-4-live-q-and-a/415585",
703
+ "web_url_path": "/drumeo/question-and-answer/30-day-drummer-level-ii-week-4-live-q-and-a/415585",
704
+ "xp": 150,
705
+ "need_access": false
706
+ },
707
+ {
708
+ "artist": null,
709
+ "artist_name": "Aaron Graham",
710
+ "brand": "drumeo",
711
+ "child_count": null,
712
+ "difficulty": 0,
713
+ "difficulty_string": "All",
714
+ "genre": [
715
+ "Pop/Rock"
716
+ ],
717
+ "id": 410255,
718
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/0c3eab2d329c7794d1a5295cf15667bb09942ca6-1920x1080.jpg",
719
+ "length_in_seconds": 5894,
720
+ "lesson_count": null,
721
+ "lessons": null,
722
+ "parent_content_data": null,
723
+ "permission_id": [
724
+ 78,
725
+ 91,
726
+ 92,
727
+ 89,
728
+ 88,
729
+ 90
730
+ ],
731
+ "progress_percent": null,
732
+ "published_on": "2024-08-29T00:00:00.000000Z",
733
+ "railcontent_id": 410255,
734
+ "sanity_id": "live_410255",
735
+ "slug": "the-police-groove-fills",
736
+ "status": "published",
737
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/0c3eab2d329c7794d1a5295cf15667bb09942ca6-1920x1080.jpg",
738
+ "title": "Live Premiere - The Police Grooves & Fills",
739
+ "type": "live",
740
+ "url": "/drumeo/live-streams/the-police-groove-fills/410255",
741
+ "web_url_path": "/drumeo/live-streams/the-police-groove-fills/410255",
742
+ "xp": 150,
743
+ "need_access": false
744
+ },
745
+ {
746
+ "artist": null,
747
+ "artist_name": "Jared Falk",
748
+ "brand": "drumeo",
749
+ "child_count": null,
750
+ "difficulty": 0,
751
+ "difficulty_string": "All",
752
+ "genre": null,
753
+ "id": 257245,
754
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/d1f585c45eabed92b1ecc17d98e5c5a4c68663aa-3840x2160.png",
755
+ "length_in_seconds": 273,
756
+ "lesson_count": null,
757
+ "lessons": null,
758
+ "parent_content_data": [
759
+ 257243
760
+ ],
761
+ "permission_id": [
762
+ 1,
763
+ 65,
764
+ 91,
765
+ 92
766
+ ],
767
+ "progress_percent": null,
768
+ "published_on": "2020-06-09T15:00:00.000000Z",
769
+ "railcontent_id": 257245,
770
+ "sanity_id": "pack-bundle-lesson_257245",
771
+ "slug": "week-1---drum-fill-foundations",
772
+ "status": "published",
773
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/d1f585c45eabed92b1ecc17d98e5c5a4c68663aa-3840x2160.png",
774
+ "title": "What Is A Drum Fill?",
775
+ "type": "pack-bundle-lesson",
776
+ "url": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/week-1---drum-fill-foundations/257245",
777
+ "web_url_path": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/week-1---drum-fill-foundations/257245",
778
+ "xp": 150,
779
+ "need_access": false
780
+ },
781
+ {
782
+ "artist": null,
783
+ "artist_name": "Jared Falk",
784
+ "brand": "drumeo",
785
+ "child_count": null,
786
+ "difficulty": 0,
787
+ "difficulty_string": "All",
788
+ "genre": null,
789
+ "id": 257249,
790
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/1400dad32e30c670c29e557ba4af467304188d88-3840x2160.png",
791
+ "length_in_seconds": 279,
792
+ "lesson_count": null,
793
+ "lessons": null,
794
+ "parent_content_data": [
795
+ 257243,
796
+ 257242
797
+ ],
798
+ "permission_id": [
799
+ 1,
800
+ 65,
801
+ 91,
802
+ 92
803
+ ],
804
+ "progress_percent": null,
805
+ "published_on": "2020-06-09T15:00:00.000000Z",
806
+ "railcontent_id": 257249,
807
+ "sanity_id": "pack-bundle-lesson_257249",
808
+ "slug": "lengths-of-drum-fills",
809
+ "status": "published",
810
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/1400dad32e30c670c29e557ba4af467304188d88-3840x2160.png",
811
+ "title": "Lengths Of Drum Fills",
812
+ "type": "pack-bundle-lesson",
813
+ "url": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/lengths-of-drum-fills/257249",
814
+ "web_url_path": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/lengths-of-drum-fills/257249",
815
+ "xp": 150,
816
+ "need_access": false
817
+ },
818
+ {
819
+ "artist": null,
820
+ "artist_name": "Jared Falk",
821
+ "brand": "drumeo",
822
+ "child_count": null,
823
+ "difficulty": 0,
824
+ "difficulty_string": "All",
825
+ "genre": null,
826
+ "id": 257250,
827
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/54d9510678088385d1d1ab002a00ed71ccc18a70-3840x2160.png",
828
+ "length_in_seconds": 417,
829
+ "lesson_count": null,
830
+ "lessons": null,
831
+ "parent_content_data": [
832
+ 257243,
833
+ 257242
834
+ ],
835
+ "permission_id": [
836
+ 1,
837
+ 65,
838
+ 91,
839
+ 92
840
+ ],
841
+ "progress_percent": null,
842
+ "published_on": "2020-06-09T15:00:00.000000Z",
843
+ "railcontent_id": 257250,
844
+ "sanity_id": "pack-bundle-lesson_257250",
845
+ "slug": "practice-tips--practice-space",
846
+ "status": "published",
847
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/54d9510678088385d1d1ab002a00ed71ccc18a70-3840x2160.png",
848
+ "title": "Practice Tips & Practice Space",
849
+ "type": "pack-bundle-lesson",
850
+ "url": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/practice-tips--practice-space/257250",
851
+ "web_url_path": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243/practice-tips--practice-space/257250",
852
+ "xp": 150,
853
+ "need_access": false
854
+ },
855
+ {
856
+ "artist": null,
857
+ "artist_name": null,
858
+ "brand": "drumeo",
859
+ "child_count": 5,
860
+ "difficulty": 0,
861
+ "difficulty_string": "All",
862
+ "genre": null,
863
+ "id": 257243,
864
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/7fc6edf19f68d80193a9718c25ece693c3475198-368x207.png",
865
+ "length_in_seconds": 2329,
866
+ "lesson_count": 5,
867
+ "lessons": [
868
+ {
869
+ "brand": "drumeo",
870
+ "id": 257245,
871
+ "lessons": null,
872
+ "slug": "week-1---drum-fill-foundations",
873
+ "type": "pack-bundle-lesson"
874
+ },
875
+ {
876
+ "brand": "drumeo",
877
+ "id": 257249,
878
+ "lessons": null,
879
+ "slug": "lengths-of-drum-fills",
880
+ "type": "pack-bundle-lesson"
881
+ },
882
+ {
883
+ "brand": "drumeo",
884
+ "id": 257250,
885
+ "lessons": null,
886
+ "slug": "practice-tips--practice-space",
887
+ "type": "pack-bundle-lesson"
888
+ },
889
+ {
890
+ "brand": "drumeo",
891
+ "id": 257251,
892
+ "lessons": null,
893
+ "slug": "the-note-value-tree",
894
+ "type": "pack-bundle-lesson"
895
+ },
896
+ {
897
+ "brand": "drumeo",
898
+ "id": 259235,
899
+ "lessons": null,
900
+ "slug": "the-motions",
901
+ "type": "pack-bundle-lesson"
902
+ }
903
+ ],
904
+ "parent_content_data": [
905
+ 257242
906
+ ],
907
+ "permission_id": [
908
+ 1,
909
+ 65,
910
+ 91,
911
+ 92
912
+ ],
913
+ "progress_percent": null,
914
+ "published_on": "2020-06-09T15:00:00.000000Z",
915
+ "railcontent_id": 257243,
916
+ "sanity_id": "pack-bundle_257243",
917
+ "slug": "4-weeks-to-better-drum-fills",
918
+ "status": "published",
919
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/7fc6edf19f68d80193a9718c25ece693c3475198-368x207.png",
920
+ "title": "Week #1 - Drum Fill Foundations",
921
+ "type": "pack-bundle",
922
+ "url": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243",
923
+ "web_url_path": "/drumeo/packs/4-weeks-to-better-drum-fills/257242/4-weeks-to-better-drum-fills/257243",
924
+ "xp": 0,
925
+ "need_access": false
926
+ },
927
+ {
928
+ "artist": null,
929
+ "artist_name": "Jared Falk",
930
+ "brand": "drumeo",
931
+ "child_count": 4,
932
+ "difficulty": 0,
933
+ "difficulty_string": "All",
934
+ "genre": null,
935
+ "id": 257242,
936
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/da4675ae1f67e84bf7bb8a494d83629367121a6c-1530x861.jpg",
937
+ "length_in_seconds": null,
938
+ "lesson_count": 15,
939
+ "lessons": [
940
+ {
941
+ "brand": "drumeo",
942
+ "id": 257243,
943
+ "lessons": [
944
+ {
945
+ "brand": "drumeo",
946
+ "id": 257245,
947
+ "slug": "week-1---drum-fill-foundations",
948
+ "type": "pack-bundle-lesson"
949
+ },
950
+ {
951
+ "brand": "drumeo",
952
+ "id": 257249,
953
+ "slug": "lengths-of-drum-fills",
954
+ "type": "pack-bundle-lesson"
955
+ },
956
+ {
957
+ "brand": "drumeo",
958
+ "id": 257250,
959
+ "slug": "practice-tips--practice-space",
960
+ "type": "pack-bundle-lesson"
961
+ },
962
+ {
963
+ "brand": "drumeo",
964
+ "id": 257251,
965
+ "slug": "the-note-value-tree",
966
+ "type": "pack-bundle-lesson"
967
+ },
968
+ {
969
+ "brand": "drumeo",
970
+ "id": 259235,
971
+ "slug": "the-motions",
972
+ "type": "pack-bundle-lesson"
973
+ }
974
+ ],
975
+ "slug": "4-weeks-to-better-drum-fills",
976
+ "type": "pack-bundle"
977
+ },
978
+ {
979
+ "brand": "drumeo",
980
+ "id": 257246,
981
+ "lessons": [
982
+ {
983
+ "brand": "drumeo",
984
+ "id": 257252,
985
+ "slug": "beginner",
986
+ "type": "pack-bundle-lesson"
987
+ },
988
+ {
989
+ "brand": "drumeo",
990
+ "id": 257253,
991
+ "slug": "intermediate",
992
+ "type": "pack-bundle-lesson"
993
+ },
994
+ {
995
+ "brand": "drumeo",
996
+ "id": 257254,
997
+ "slug": "advanced",
998
+ "type": "pack-bundle-lesson"
999
+ }
1000
+ ],
1001
+ "slug": "week-2---three-levels-of-drum-fills",
1002
+ "type": "pack-bundle"
1003
+ },
1004
+ {
1005
+ "brand": "drumeo",
1006
+ "id": 257247,
1007
+ "lessons": [
1008
+ {
1009
+ "brand": "drumeo",
1010
+ "id": 257255,
1011
+ "slug": "beginner",
1012
+ "type": "pack-bundle-lesson"
1013
+ },
1014
+ {
1015
+ "brand": "drumeo",
1016
+ "id": 257256,
1017
+ "slug": "intermediate",
1018
+ "type": "pack-bundle-lesson"
1019
+ },
1020
+ {
1021
+ "brand": "drumeo",
1022
+ "id": 257257,
1023
+ "slug": "advanced",
1024
+ "type": "pack-bundle-lesson"
1025
+ }
1026
+ ],
1027
+ "slug": "week-3---build-musical-tension-with-odd-groupings",
1028
+ "type": "pack-bundle"
1029
+ },
1030
+ {
1031
+ "brand": "drumeo",
1032
+ "id": 257248,
1033
+ "lessons": [
1034
+ {
1035
+ "brand": "drumeo",
1036
+ "id": 257258,
1037
+ "slug": "beginner",
1038
+ "type": "pack-bundle-lesson"
1039
+ },
1040
+ {
1041
+ "brand": "drumeo",
1042
+ "id": 257259,
1043
+ "slug": "intermediate",
1044
+ "type": "pack-bundle-lesson"
1045
+ },
1046
+ {
1047
+ "brand": "drumeo",
1048
+ "id": 257260,
1049
+ "slug": "advanced",
1050
+ "type": "pack-bundle-lesson"
1051
+ },
1052
+ {
1053
+ "brand": "drumeo",
1054
+ "id": 259236,
1055
+ "slug": "conclusion",
1056
+ "type": "pack-bundle-lesson"
1057
+ }
1058
+ ],
1059
+ "slug": "week-4---linear-drum-fill-explorations",
1060
+ "type": "pack-bundle"
1061
+ }
1062
+ ],
1063
+ "parent_content_data": null,
1064
+ "permission_id": [
1065
+ 65,
1066
+ 1,
1067
+ 91,
1068
+ 92,
1069
+ 78
1070
+ ],
1071
+ "progress_percent": null,
1072
+ "published_on": "2020-06-09T15:00:00.000000Z",
1073
+ "railcontent_id": 257242,
1074
+ "sanity_id": "pack_257242",
1075
+ "slug": "4-weeks-to-better-drum-fills",
1076
+ "status": "published",
1077
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/da4675ae1f67e84bf7bb8a494d83629367121a6c-1530x861.jpg",
1078
+ "title": "Four Weeks To Better Drum Fills",
1079
+ "type": "pack",
1080
+ "url": "/drumeo/packs/4-weeks-to-better-drum-fills/257242",
1081
+ "web_url_path": "/drumeo/packs/4-weeks-to-better-drum-fills/257242",
1082
+ "xp": 500,
1083
+ "need_access": false,
1084
+ "first_incomplete_child": {
1085
+ "id": 257243,
1086
+ "slug": "4-weeks-to-better-drum-fills",
1087
+ "type": "pack-bundle"
1088
+ },
1089
+ "second_incomplete_child": {
1090
+ "brand": "drumeo",
1091
+ "id": 257251,
1092
+ "slug": "the-note-value-tree",
1093
+ "type": "pack-bundle-lesson",
1094
+ "parent": {
1095
+ "id": 257243,
1096
+ "slug": "4-weeks-to-better-drum-fills",
1097
+ "type": "pack-bundle"
1098
+ }
1099
+ }
1100
+ },
1101
+ {
1102
+ "artist": null,
1103
+ "artist_name": "Mike Michalkow",
1104
+ "brand": "drumeo",
1105
+ "child_count": null,
1106
+ "difficulty": 2,
1107
+ "difficulty_string": "Beginner",
1108
+ "genre": [
1109
+ "Metal"
1110
+ ],
1111
+ "id": 316732,
1112
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/8fd09777a4a69e34ad2f24d95f7beeb93c60caf7-1920x1080.png",
1113
+ "length_in_seconds": 169,
1114
+ "lesson_count": null,
1115
+ "lessons": null,
1116
+ "parent_content_data": null,
1117
+ "permission_id": [
1118
+ 1,
1119
+ 91,
1120
+ 92
1121
+ ],
1122
+ "progress_percent": null,
1123
+ "published_on": "2021-08-30T17:00:00.000000Z",
1124
+ "railcontent_id": 316732,
1125
+ "sanity_id": "play-along_316732",
1126
+ "slug": "basic-metal",
1127
+ "status": "published",
1128
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/8fd09777a4a69e34ad2f24d95f7beeb93c60caf7-1920x1080.png",
1129
+ "title": "Basic Metal",
1130
+ "type": "play-along",
1131
+ "url": "/drumeo/play-alongs/basic-metal/316732",
1132
+ "web_url_path": "/drumeo/play-alongs/basic-metal/316732",
1133
+ "xp": 100,
1134
+ "need_access": false
1135
+ },
1136
+ {
1137
+ "artist": null,
1138
+ "artist_name": "Mike Michalkow",
1139
+ "brand": "drumeo",
1140
+ "child_count": null,
1141
+ "difficulty": 4,
1142
+ "difficulty_string": "Intermediate",
1143
+ "genre": [
1144
+ "Blues"
1145
+ ],
1146
+ "id": 316752,
1147
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/ca83b48c47ec89e672c9335f8e570f4f6a9d0202-1920x1080.png",
1148
+ "length_in_seconds": 184,
1149
+ "lesson_count": null,
1150
+ "lessons": null,
1151
+ "parent_content_data": null,
1152
+ "permission_id": [
1153
+ 1,
1154
+ 91,
1155
+ 92
1156
+ ],
1157
+ "progress_percent": null,
1158
+ "published_on": "2021-08-30T17:00:00.000000Z",
1159
+ "railcontent_id": 316752,
1160
+ "sanity_id": "play-along_316752",
1161
+ "slug": "intermediate-blues-shuffle",
1162
+ "status": "published",
1163
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/ca83b48c47ec89e672c9335f8e570f4f6a9d0202-1920x1080.png",
1164
+ "title": "Intermediate Blues Shuffle",
1165
+ "type": "play-along",
1166
+ "url": "/drumeo/play-alongs/intermediate-blues-shuffle/316752",
1167
+ "web_url_path": "/drumeo/play-alongs/intermediate-blues-shuffle/316752",
1168
+ "xp": 150,
1169
+ "need_access": false
1170
+ },
1171
+ {
1172
+ "artist": null,
1173
+ "artist_name": "Mark Kelso",
1174
+ "brand": "drumeo",
1175
+ "child_count": null,
1176
+ "difficulty": 5,
1177
+ "difficulty_string": "Intermediate",
1178
+ "genre": [
1179
+ "World"
1180
+ ],
1181
+ "id": 316772,
1182
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/71d486fb654edd0b719444b982ccd5f86adea1a4-1920x1080.png",
1183
+ "length_in_seconds": 215,
1184
+ "lesson_count": null,
1185
+ "lessons": null,
1186
+ "parent_content_data": null,
1187
+ "permission_id": [
1188
+ 1,
1189
+ 91,
1190
+ 92
1191
+ ],
1192
+ "progress_percent": null,
1193
+ "published_on": "2021-08-30T17:00:00.000000Z",
1194
+ "railcontent_id": 316772,
1195
+ "sanity_id": "play-along_316772",
1196
+ "slug": "bossa-nova",
1197
+ "status": "published",
1198
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/71d486fb654edd0b719444b982ccd5f86adea1a4-1920x1080.png",
1199
+ "title": "Bossa Nova",
1200
+ "type": "play-along",
1201
+ "url": "/drumeo/play-alongs/bossa-nova/316772",
1202
+ "web_url_path": "/drumeo/play-alongs/bossa-nova/316772",
1203
+ "xp": 150,
1204
+ "need_access": false
1205
+ },
1206
+ {
1207
+ "artist": null,
1208
+ "artist_name": "Brandon Toews",
1209
+ "brand": "drumeo",
1210
+ "child_count": null,
1211
+ "difficulty": 8,
1212
+ "difficulty_string": "Expert",
1213
+ "genre": [
1214
+ "Jazz",
1215
+ "World"
1216
+ ],
1217
+ "id": 335025,
1218
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/52b3841879d31248d69ca5b811925f41c0767799-1920x1080.jpg",
1219
+ "length_in_seconds": 322,
1220
+ "lesson_count": null,
1221
+ "lessons": null,
1222
+ "parent_content_data": null,
1223
+ "permission_id": [
1224
+ 89,
1225
+ 94,
1226
+ 88,
1227
+ 90,
1228
+ 78,
1229
+ 92
1230
+ ],
1231
+ "progress_percent": null,
1232
+ "published_on": "2022-08-04T15:00:00.000000Z",
1233
+ "railcontent_id": 335025,
1234
+ "sanity_id": "play-along_335025",
1235
+ "slug": "a-night-in-tunisia",
1236
+ "status": "published",
1237
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/52b3841879d31248d69ca5b811925f41c0767799-1920x1080.jpg",
1238
+ "title": "A Night In Tunisia",
1239
+ "type": "play-along",
1240
+ "url": "/drumeo/play-alongs/a-night-in-tunisia/335025",
1241
+ "web_url_path": "/drumeo/play-alongs/a-night-in-tunisia/335025",
1242
+ "xp": 200,
1243
+ "need_access": false
1244
+ },
1245
+ {
1246
+ "artist": null,
1247
+ "artist_name": "Sharon Ransom",
1248
+ "brand": "drumeo",
1249
+ "child_count": null,
1250
+ "difficulty": 2,
1251
+ "difficulty_string": "Beginner",
1252
+ "genre": null,
1253
+ "id": 325826,
1254
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/52e8e79926d2b7a88250daf24d8f394493ebacfa-1920x1080.jpg",
1255
+ "length_in_seconds": 1079,
1256
+ "lesson_count": null,
1257
+ "lessons": null,
1258
+ "parent_content_data": null,
1259
+ "permission_id": [
1260
+ 1,
1261
+ 91,
1262
+ 92
1263
+ ],
1264
+ "progress_percent": null,
1265
+ "published_on": "2021-11-10T18:00:00.000000Z",
1266
+ "railcontent_id": 325826,
1267
+ "sanity_id": "quick-tips_325826",
1268
+ "slug": "10-easy-fills-for-every-beginner-drummer",
1269
+ "status": "published",
1270
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/52e8e79926d2b7a88250daf24d8f394493ebacfa-1920x1080.jpg",
1271
+ "title": "10 Easy Fills For Every Beginner Drummer",
1272
+ "type": "quick-tips",
1273
+ "url": "/drumeo/quick-tips/10-easy-fills-for-every-beginner-drummer/325826",
1274
+ "web_url_path": "/drumeo/quick-tips/10-easy-fills-for-every-beginner-drummer/325826",
1275
+ "xp": 100,
1276
+ "need_access": false
1277
+ },
1278
+ {
1279
+ "artist": null,
1280
+ "artist_name": "John Wooton",
1281
+ "brand": "drumeo",
1282
+ "child_count": null,
1283
+ "difficulty": 2,
1284
+ "difficulty_string": "Beginner",
1285
+ "genre": null,
1286
+ "id": 373171,
1287
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/8a5dbebf43bc3509b8a6f3dd794424324ecd251d-1920x1080.jpg",
1288
+ "length_in_seconds": 68,
1289
+ "lesson_count": null,
1290
+ "lessons": null,
1291
+ "parent_content_data": null,
1292
+ "permission_id": [
1293
+ 1,
1294
+ 91,
1295
+ 92
1296
+ ],
1297
+ "progress_percent": null,
1298
+ "published_on": "2022-10-03T13:40:00.000000Z",
1299
+ "railcontent_id": 373171,
1300
+ "sanity_id": "rudiment_373171",
1301
+ "slug": "single-stroke-roll",
1302
+ "status": "published",
1303
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/8a5dbebf43bc3509b8a6f3dd794424324ecd251d-1920x1080.jpg",
1304
+ "title": "Single Stroke Roll",
1305
+ "type": "rudiment",
1306
+ "url": "/drumeo/rudiments/single-stroke-roll/373171",
1307
+ "web_url_path": "/drumeo/rudiments/single-stroke-roll/373171",
1308
+ "xp": 100,
1309
+ "need_access": false
1310
+ },
1311
+ {
1312
+ "artist": {
1313
+ "_ref": "artist_toto",
1314
+ "_type": "reference"
1315
+ },
1316
+ "artist_name": "Toto",
1317
+ "brand": "drumeo",
1318
+ "child_count": 1,
1319
+ "difficulty": 7,
1320
+ "difficulty_string": "Advanced",
1321
+ "genre": [
1322
+ "Rock"
1323
+ ],
1324
+ "id": 260677,
1325
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/d16f12dd5f51020677e78b4abcf98c0aba00b17e-1500x1500.jpg",
1326
+ "length_in_seconds": 330,
1327
+ "lesson_count": 1,
1328
+ "lessons": null,
1329
+ "parent_content_data": null,
1330
+ "permission_id": [
1331
+ 94,
1332
+ 78,
1333
+ 92
1334
+ ],
1335
+ "progress_percent": null,
1336
+ "published_on": "2020-06-16T18:47:16.000000Z",
1337
+ "railcontent_id": 260677,
1338
+ "sanity_id": "song_260677",
1339
+ "slug": "rosanna-toto",
1340
+ "status": "published",
1341
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/d16f12dd5f51020677e78b4abcf98c0aba00b17e-1500x1500.jpg",
1342
+ "title": "Rosanna ",
1343
+ "type": "song",
1344
+ "url": "/drumeo/songs/rosanna-toto/260677",
1345
+ "web_url_path": "/drumeo/songs/rosanna-toto/260677",
1346
+ "xp": 0,
1347
+ "need_access": false
1348
+ },
1349
+ {
1350
+ "artist": null,
1351
+ "artist_name": "Emmanuelle Caplette",
1352
+ "brand": "drumeo",
1353
+ "child_count": null,
1354
+ "difficulty": 3,
1355
+ "difficulty_string": "Beginner",
1356
+ "genre": null,
1357
+ "id": 402009,
1358
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/1c75d30bee7dacb3186966725fad31c62eff031f-1920x1080.jpg",
1359
+ "length_in_seconds": 363,
1360
+ "lesson_count": null,
1361
+ "lessons": null,
1362
+ "parent_content_data": null,
1363
+ "permission_id": [
1364
+ 91,
1365
+ 92,
1366
+ 1
1367
+ ],
1368
+ "progress_percent": null,
1369
+ "published_on": "2023-12-28T00:01:00.000000Z",
1370
+ "railcontent_id": 402009,
1371
+ "sanity_id": "workout_402009",
1372
+ "slug": "beginner-pad-warm-up",
1373
+ "status": "published",
1374
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/1c75d30bee7dacb3186966725fad31c62eff031f-1920x1080.jpg",
1375
+ "title": "Beginner Pad Warm-Up",
1376
+ "type": "workout",
1377
+ "url": "/drumeo/workouts/beginner-pad-warm-up/402009",
1378
+ "web_url_path": "/drumeo/workouts/beginner-pad-warm-up/402009",
1379
+ "xp": 100,
1380
+ "need_access": false
1381
+ },
1382
+ {
1383
+ "artist": null,
1384
+ "artist_name": "Brandon Toews",
1385
+ "brand": "drumeo",
1386
+ "child_count": null,
1387
+ "difficulty": 2,
1388
+ "difficulty_string": "Beginner",
1389
+ "genre": null,
1390
+ "id": 402021,
1391
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/adf501ca588e590529717d7049ea4d14ae478d7b-1920x1080.jpg",
1392
+ "length_in_seconds": 653,
1393
+ "lesson_count": null,
1394
+ "lessons": null,
1395
+ "parent_content_data": null,
1396
+ "permission_id": [
1397
+ 91,
1398
+ 92,
1399
+ 1
1400
+ ],
1401
+ "progress_percent": null,
1402
+ "published_on": "2023-12-28T00:01:00.000000Z",
1403
+ "railcontent_id": 402021,
1404
+ "sanity_id": "workout_402021",
1405
+ "slug": "weak-hand-warm-up",
1406
+ "status": "published",
1407
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/adf501ca588e590529717d7049ea4d14ae478d7b-1920x1080.jpg",
1408
+ "title": "Weak Hand Warm-Up",
1409
+ "type": "workout",
1410
+ "url": "/drumeo/workouts/weak-hand-warm-up/402021",
1411
+ "web_url_path": "/drumeo/workouts/weak-hand-warm-up/402021",
1412
+ "xp": 100,
1413
+ "need_access": false
1414
+ },
1415
+ {
1416
+ "artist": null,
1417
+ "artist_name": "Aaron Graham",
1418
+ "brand": "drumeo",
1419
+ "child_count": null,
1420
+ "difficulty": 3,
1421
+ "difficulty_string": "Beginner",
1422
+ "genre": null,
1423
+ "id": 411091,
1424
+ "image": "https://cdn.sanity.io/images/4032r8py/staging/cde7b1acc790899ef3c33521973c7a8dbce07f9b-1920x1080.jpg",
1425
+ "length_in_seconds": 589,
1426
+ "lesson_count": null,
1427
+ "lessons": null,
1428
+ "parent_content_data": null,
1429
+ "permission_id": [
1430
+ 78,
1431
+ 89,
1432
+ 91,
1433
+ 92,
1434
+ 88,
1435
+ 90
1436
+ ],
1437
+ "progress_percent": null,
1438
+ "published_on": "2024-08-08T19:00:00.000000Z",
1439
+ "railcontent_id": 411091,
1440
+ "sanity_id": "workout_411091",
1441
+ "slug": "2-handed-hi-hat-grooves",
1442
+ "status": "published",
1443
+ "thumbnail": "https://cdn.sanity.io/images/4032r8py/staging/cde7b1acc790899ef3c33521973c7a8dbce07f9b-1920x1080.jpg",
1444
+ "title": "2-Handed Hi-Hat Grooves",
1445
+ "type": "workout",
1446
+ "url": "/drumeo/workouts/2-handed-hi-hat-grooves/411091",
1447
+ "web_url_path": "/drumeo/workouts/2-handed-hi-hat-grooves/411091",
1448
+ "xp": 100,
1449
+ "need_access": false
1450
+ }
1451
+ ]