From d33d08494323a35d524b7eb5d533df90d625f5ff Mon Sep 17 00:00:00 2001
From: Agate <me@agate.blue>
Date: Sat, 11 Jul 2020 15:11:56 +0200
Subject: [PATCH] Fixed #1171: invalid swagger syntax

---
 api/funkwhale_api/audio/serializers.py |   4 +-
 api/funkwhale_api/music/models.py      |   4 +-
 api/tests/audio/test_serializers.py    |   4 +-
 changes/changelog.d/1121.bugfix        |   1 +
 docs/swagger.yml                       | 250 ++++++++++++-------------
 5 files changed, 135 insertions(+), 128 deletions(-)
 create mode 100644 changes/changelog.d/1121.bugfix

diff --git a/api/funkwhale_api/audio/serializers.py b/api/funkwhale_api/audio/serializers.py
index c31cdb69da..0a0964328c 100644
--- a/api/funkwhale_api/audio/serializers.py
+++ b/api/funkwhale_api/audio/serializers.py
@@ -824,7 +824,9 @@ def rss_serialize_item(upload):
         "enclosure": [
             {
                 # we enforce MP3, since it's the only format supported everywhere
-                "url": federation_utils.full_url(upload.get_listen_url(to="mp3")),
+                "url": federation_utils.full_url(
+                    upload.get_listen_url(to="mp3", download=False)
+                ),
                 "length": upload.size or 0,
                 "type": "audio/mpeg",
             }
diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py
index e020a619b1..519bb56b4b 100644
--- a/api/funkwhale_api/music/models.py
+++ b/api/funkwhale_api/music/models.py
@@ -899,10 +899,12 @@ class Upload(models.Model):
     def listen_url(self):
         return self.track.listen_url + "?upload={}".format(self.uuid)
 
-    def get_listen_url(self, to=None):
+    def get_listen_url(self, to=None, download=None):
         url = self.listen_url
         if to:
             url += "&to={}".format(to)
+        if download is not None:
+            url += "&download={}".format(str(download).lower())
         return url
 
     @property
diff --git a/api/tests/audio/test_serializers.py b/api/tests/audio/test_serializers.py
index 0eecba8d9e..d9ea2d7339 100644
--- a/api/tests/audio/test_serializers.py
+++ b/api/tests/audio/test_serializers.py
@@ -312,7 +312,9 @@ def test_rss_item_serializer(factories):
         "link": [{"value": federation_utils.full_url(upload.track.get_absolute_url())}],
         "enclosure": [
             {
-                "url": federation_utils.full_url(upload.get_listen_url("mp3")),
+                "url": federation_utils.full_url(
+                    upload.get_listen_url("mp3", download=False)
+                ),
                 "length": upload.size,
                 "type": "audio/mpeg",
             }
diff --git a/changes/changelog.d/1121.bugfix b/changes/changelog.d/1121.bugfix
new file mode 100644
index 0000000000..b04d32b61d
--- /dev/null
+++ b/changes/changelog.d/1121.bugfix
@@ -0,0 +1 @@
+Ensure compatibility with Apple Podcasts (#1176)
\ No newline at end of file
diff --git a/docs/swagger.yml b/docs/swagger.yml
index 27892fe679..66fdab4202 100644
--- a/docs/swagger.yml
+++ b/docs/swagger.yml
@@ -204,8 +204,8 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#OAuthApplication"
-                  - $ref: "./api/definitions.yml#OAuthApplicationCreation"
+                  - $ref: "./api/definitions.yml#/OAuthApplication"
+                  - $ref: "./api/definitions.yml#/OAuthApplicationCreation"
       requestBody:
         required: true
         content:
@@ -322,7 +322,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Me"
+                $ref: "./api/definitions.yml#/Me"
 
   /api/v1/rate-limit/:
     get:
@@ -335,7 +335,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#RateLimitStatus"
+                $ref: "./api/definitions.yml#/RateLimitStatus"
 
   /api/v1/artists/:
     get:
@@ -347,9 +347,9 @@ paths:
           - "read:libraries"
       parameters:
 
-        - $ref: "./api/parameters.yml#Search"
+        - $ref: "./api/parameters.yml#/Search"
         - allOf:
-            - $ref: "./api/parameters.yml#Ordering"
+            - $ref: "./api/parameters.yml#/Ordering"
             - default: "-creation_date"
               schema:
                 required: false
@@ -359,10 +359,10 @@ paths:
                   - creation_date
                   - id
                   - name
-        - $ref: "./api/parameters.yml#Playable"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/Playable"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
 
       responses:
         200:
@@ -370,19 +370,19 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Artist"
+                          $ref: "./api/definitions.yml#/Artist"
   /api/v1/artists/{id}/:
     get:
       summary: Retrieve a single artist
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#Refresh"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/Refresh"
       security:
         - oauth2:
           - "read:libraries"
@@ -393,12 +393,12 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Artist"
+                $ref: "./api/definitions.yml#/Artist"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
   /api/v1/artists/{id}/libraries/:
     get:
       summary: List available user libraries containing work from this artist
@@ -406,9 +406,9 @@ paths:
         - oauth2:
           - "read:libraries"
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
 
       tags:
         - "Library and metadata"
@@ -417,12 +417,12 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#LibraryPage"
+                $ref: "./api/definitions.yml#/LibraryPage"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/albums/:
     get:
@@ -435,7 +435,7 @@ paths:
           - "read:libraries"
       parameters:
 
-        - $ref: "./api/parameters.yml#Search"
+        - $ref: "./api/parameters.yml#/Search"
         - name: "artist"
           in: "query"
           default: null
@@ -445,7 +445,7 @@ paths:
             type: "integer"
             format: "int64"
         - allOf:
-            - $ref: "./api/parameters.yml#Ordering"
+            - $ref: "./api/parameters.yml#/Ordering"
             - default: "-creation_date"
               schema:
                 required: false
@@ -455,10 +455,10 @@ paths:
                   - creation_date
                   - release_date
                   - title
-        - $ref: "./api/parameters.yml#Playable"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/Playable"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
 
       responses:
         200:
@@ -466,19 +466,19 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Album"
+                          $ref: "./api/definitions.yml#/Album"
   /api/v1/albums/{id}/:
     get:
       summary: Retrieve a single album
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#Refresh"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/Refresh"
 
       security:
         - oauth2:
@@ -490,20 +490,20 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Album"
+                $ref: "./api/definitions.yml#/Album"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/albums/{id}/libraries/:
     get:
       summary: List available user libraries containing tracks from this album
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
 
       security:
         - oauth2:
@@ -515,12 +515,12 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#LibraryPage"
+                $ref: "./api/definitions.yml#/LibraryPage"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/tracks/:
     get:
@@ -533,7 +533,7 @@ paths:
           - "read:libraries"
       parameters:
 
-        - $ref: "./api/parameters.yml#Search"
+        - $ref: "./api/parameters.yml#/Search"
         - name: "artist"
           in: "query"
           default: null
@@ -566,7 +566,7 @@ paths:
             required: false
             type: "string"
         - allOf:
-            - $ref: "./api/parameters.yml#Ordering"
+            - $ref: "./api/parameters.yml#/Ordering"
             - default: "-creation_date"
               schema:
                 required: false
@@ -576,10 +576,10 @@ paths:
                   - creation_date
                   - release_date
                   - title
-        - $ref: "./api/parameters.yml#Playable"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/Playable"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
 
       responses:
         200:
@@ -587,18 +587,18 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Track"
+                          $ref: "./api/definitions.yml#/Track"
   /api/v1/tracks/{id}/:
     get:
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#Refresh"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/Refresh"
       summary: Retrieve a single track
 
       security:
@@ -611,20 +611,20 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Track"
+                $ref: "./api/definitions.yml#/Track"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/tracks/{id}/libraries/:
     get:
       summary: List available user libraries containing given track
       parameters:
-        - $ref: "./api/parameters.yml#ObjectId"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
+        - $ref: "./api/parameters.yml#/ObjectId"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
       security:
         - oauth2:
           - "read:libraries"
@@ -635,12 +635,12 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#LibraryPage"
+                $ref: "./api/definitions.yml#/LibraryPage"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
   /api/v1/listen/{uuid}/:
     get:
       summary: Download the audio file matching the given track uuid
@@ -672,7 +672,7 @@ paths:
 
             This endpoint support bytess-range requests.
           schema:
-            $ref: "./api/properties.yml#transcode_options"
+            $ref: "./api/properties.yml#/transcode_options"
         - name: upload
           in: query
           required: false
@@ -710,7 +710,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/licenses/:
     get:
@@ -721,21 +721,21 @@ paths:
       tags:
         - "Library and metadata"
       parameters:
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
       responses:
         200:
           content:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#License"
+                          $ref: "./api/definitions.yml#/License"
 
   /api/v1/licenses/{code}/:
     get:
@@ -759,12 +759,12 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#License"
+                $ref: "./api/definitions.yml#/License"
         404:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#ResourceNotFound"
+                $ref: "./api/definitions.yml#/ResourceNotFound"
 
   /api/v1/libraries/:
     get:
@@ -772,23 +772,23 @@ paths:
       tags:
         - "Uploads and audio content"
       parameters:
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Search"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Search"
+        - $ref: "./api/parameters.yml#/Scope"
       responses:
         200:
           content:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#OwnedLibrary"
+                          $ref: "./api/definitions.yml#/OwnedLibrary"
     post:
       tags:
         - "Uploads and audio content"
@@ -804,7 +804,7 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#OwnedLibraryCreate"
+              $ref: "./api/definitions.yml#/OwnedLibraryCreate"
 
   /api/v1/libraries/{uuid}/:
     parameters:
@@ -823,7 +823,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#OwnedLibrary"
+                $ref: "./api/definitions.yml#/OwnedLibrary"
     post:
       summary: Update a library
       tags:
@@ -833,13 +833,13 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#OwnedLibraryCreate"
+              $ref: "./api/definitions.yml#/OwnedLibraryCreate"
       responses:
         201:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#OwnedLibrary"
+                $ref: "./api/definitions.yml#/OwnedLibrary"
     delete:
       summary: Delete a library and all associated uploads
       description: |
@@ -857,14 +857,14 @@ paths:
       tags:
         - "Channels and subscriptions"
       parameters:
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
-        - $ref: "./api/parameters.yml#Search"
-        - $ref: "./api/parameters.yml#Tags"
-        - $ref: "./api/parameters.yml#Subscribed"
-        - $ref: "./api/parameters.yml#External"
-        - $ref: "./api/parameters.yml#ChannelOrdering"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
+        - $ref: "./api/parameters.yml#/Search"
+        - $ref: "./api/parameters.yml#/Tags"
+        - $ref: "./api/parameters.yml#/Subscribed"
+        - $ref: "./api/parameters.yml#/External"
+        - $ref: "./api/parameters.yml#/ChannelOrdering"
 
       responses:
         200:
@@ -872,13 +872,13 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Channel"
+                          $ref: "./api/definitions.yml#/Channel"
     post:
       summary: Create a new channel
       tags:
@@ -893,7 +893,7 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#ChannelCreate"
+              $ref: "./api/definitions.yml#/ChannelCreate"
 
   /api/v1/channels/metadata-choices:
     summary: List metadata (locales, itunes categories) for creating and editing channels.
@@ -959,7 +959,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Channel"
+                $ref: "./api/definitions.yml#/Channel"
     post:
       summary: Update a channel
       tags:
@@ -969,13 +969,13 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#ChannelUpdate"
+              $ref: "./api/definitions.yml#/ChannelUpdate"
       responses:
         201:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Channel"
+                $ref: "./api/definitions.yml#/Channel"
     delete:
       summary: Delete a channel and all associated uploads
       description: |
@@ -1009,7 +1009,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Subscription"
+                $ref: "./api/definitions.yml#/Subscription"
 
   /api/v1/channels/{uuid}/rss/:
     parameters:
@@ -1045,7 +1045,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Subscription"
+                $ref: "./api/definitions.yml#/Subscription"
 
   /api/v1/channels/{uuid}/unsubscribe/:
     parameters:
@@ -1069,23 +1069,23 @@ paths:
         - "Uploads and audio content"
       parameters:
 
-        - $ref: "./api/parameters.yml#Search"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/Search"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
       responses:
         200:
           content:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#OwnedUpload"
+                          $ref: "./api/definitions.yml#/OwnedUpload"
     post:
       tags:
         - "Uploads and audio content"
@@ -1126,7 +1126,7 @@ paths:
                   - "pending"
                 import_metadata:
                   required: false
-                  $ref: "./api/definitions.yml#ImportMetadata"
+                  $ref: "./api/definitions.yml#/ImportMetadata"
 
 
   /api/v1/subscriptions/{uuid}/:
@@ -1146,7 +1146,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Subscription"
+                $ref: "./api/definitions.yml#/Subscription"
 
   /api/v1/subscriptions/:
     get:
@@ -1159,13 +1159,13 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Subscription"
+                          $ref: "./api/definitions.yml#/Subscription"
 
   /api/v1/subscriptions/all/:
     get:
@@ -1182,7 +1182,7 @@ paths:
                   results:
                     type: "array"
                     items:
-                      $ref: "./api/definitions.yml#SubscriptionsAll"
+                      $ref: "./api/definitions.yml#/SubscriptionsAll"
 
   /api/v1/uploads/{uuid}/:
     parameters:
@@ -1201,7 +1201,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#OwnedUpload"
+                $ref: "./api/definitions.yml#/OwnedUpload"
     patch:
       summary: Update a draft upload
       description: |
@@ -1219,7 +1219,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#OwnedUpload"
+                $ref: "./api/definitions.yml#/OwnedUpload"
     delete:
       summary: Delete an upload
       description: |
@@ -1256,10 +1256,10 @@ paths:
       tags:
         - "Content curation"
       parameters:
-        - $ref: "./api/parameters.yml#Search"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
-        - $ref: "./api/parameters.yml#Scope"
+        - $ref: "./api/parameters.yml#/Search"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
+        - $ref: "./api/parameters.yml#/Scope"
 
       responses:
         200:
@@ -1267,13 +1267,13 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#TrackFavorite"
+                          $ref: "./api/definitions.yml#/TrackFavorite"
     post:
       summary: Mark the given track as favorite
       tags:
@@ -1305,7 +1305,7 @@ paths:
                     format: "int64"
                     example: 98
                   creation_date:
-                    $ref: "./api/properties.yml#creation_date"
+                    $ref: "./api/properties.yml#/creation_date"
   /api/v1/favorites/tracks/remove/:
     post:
       summary: Remove the given track from favorites
@@ -1365,7 +1365,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Attachment"
+                $ref: "./api/definitions.yml#/Attachment"
     delete:
       summary: Delete an attachment
       tags:
@@ -1379,9 +1379,9 @@ paths:
       tags:
         - "Content curation"
       parameters:
-        - $ref: "./api/parameters.yml#Search"
+        - $ref: "./api/parameters.yml#/Search"
         - allOf:
-            - $ref: "./api/parameters.yml#Ordering"
+            - $ref: "./api/parameters.yml#/Ordering"
             - default: "-creation_date"
               schema:
                 required: false
@@ -1410,22 +1410,22 @@ paths:
           schema:
             type: "integer"
             format: "int64"
-        - $ref: "./api/parameters.yml#Playable"
-        - $ref: "./api/parameters.yml#PageNumber"
-        - $ref: "./api/parameters.yml#PageSize"
+        - $ref: "./api/parameters.yml#/Playable"
+        - $ref: "./api/parameters.yml#/PageNumber"
+        - $ref: "./api/parameters.yml#/PageSize"
       responses:
         200:
           content:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#Playlist"
+                          $ref: "./api/definitions.yml#/Playlist"
     post:
       tags:
         - "Content curation"
@@ -1440,7 +1440,7 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#PlaylistCreate"
+              $ref: "./api/definitions.yml#/PlaylistCreate"
   /api/v1/playlists/{id}/:
     parameters:
       - name: id
@@ -1458,7 +1458,7 @@ paths:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Playlist"
+                $ref: "./api/definitions.yml#/Playlist"
     post:
       summary: Update a playlist
       tags:
@@ -1468,13 +1468,13 @@ paths:
         content:
           application/json:
             schema:
-              $ref: "./api/definitions.yml#PlaylistCreate"
+              $ref: "./api/definitions.yml#/PlaylistCreate"
       responses:
         201:
           content:
             application/json:
               schema:
-                $ref: "./api/definitions.yml#Playlist"
+                $ref: "./api/definitions.yml#/Playlist"
     delete:
       description: Delete the playlist
       tags:
@@ -1500,13 +1500,13 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#PlaylistTrack"
+                          $ref: "./api/definitions.yml#/PlaylistTrack"
   /api/v1/playlists/{id}/add:
     parameters:
       - name: id
@@ -1545,13 +1545,13 @@ paths:
             application/json:
               schema:
                 allOf:
-                  - $ref: "./api/definitions.yml#ResultPage"
+                  - $ref: "./api/definitions.yml#/ResultPage"
                   - type: "object"
                     properties:
                       results:
                         type: "array"
                         items:
-                          $ref: "./api/definitions.yml#PlaylistTrack"
+                          $ref: "./api/definitions.yml#/PlaylistTrack"
   /api/v1/playlists/{id}/clear:
     parameters:
       - name: id
-- 
GitLab