Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
funkwhale
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
gordon
funkwhale
Commits
5857ad63
Commit
5857ad63
authored
6 years ago
by
Eliot Berriot
Browse files
Options
Downloads
Patches
Plain Diff
Api docs
parent
20d66ffe
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/swagger.yml
+632
-25
632 additions, 25 deletions
docs/swagger.yml
with
632 additions
and
25 deletions
docs/swagger.yml
+
632
−
25
View file @
5857ad63
openapi
:
"
3.0"
openapi
:
"
3.0
.0
"
info
:
description
:
"
Documentation
for
[Funkwhale](https://funkwhale.audio)
API.
The
API
is
**not**
stable
yet."
version
:
"
1.0.0"
...
...
@@ -7,6 +7,8 @@ info:
servers
:
-
url
:
https://demo.funkwhale.audio/api/v1
description
:
Demo server
-
url
:
https://open.audio/api/v1
description
:
Open Audio
-
url
:
https://node1.funkwhale.test/api/v1
description
:
Node 1 (local)
...
...
@@ -50,47 +52,471 @@ paths:
/artists/
:
get
:
summary
:
List artists
tags
:
-
"
artists"
parameters
:
-
name
:
"
q"
in
:
"
query"
default
:
null
description
:
"
Search
query
used
to
filter
artists"
schema
:
required
:
false
type
:
"
string"
example
:
"
carpenter"
-
name
:
"
listenable"
-
allOf
:
-
$ref
:
"
#/parameters/Ordering"
-
default
:
"
-creation_date"
schema
:
required
:
false
type
:
"
string"
example
:
"
creation_date"
enum
:
-
creation_date
-
id
-
name
-
$ref
:
"
#/parameters/Playable"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
responses
:
200
:
content
:
application/json
:
schema
:
allOf
:
-
$ref
:
"
#/definitions/ResultPage"
-
type
:
"
object"
properties
:
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/Artist"
/artists/{id}/
:
get
:
summary
:
Retrieve a single artist
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
tags
:
-
"
artists"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/Artist"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/artists/{id}/libraries/
:
get
:
summary
:
List available user libraries containing work from this artist
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
tags
:
-
"
artists"
-
"
libraries"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/LibraryPage"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/albums/
:
get
:
summary
:
List albums
tags
:
-
"
albums"
parameters
:
-
name
:
"
q"
in
:
"
query"
default
:
null
description
:
"
Search
query
used
to
filter
albums"
schema
:
required
:
false
type
:
"
string"
example
:
"
carpenter"
-
name
:
"
artist"
in
:
"
query"
default
:
null
description
:
"
Only
include
albums
by
the
requested
artist"
schema
:
required
:
false
type
:
"
integer"
format
:
"
int64"
-
allOf
:
-
$ref
:
"
#/parameters/Ordering"
-
default
:
"
-creation_date"
schema
:
required
:
false
type
:
"
string"
example
:
"
creation_date"
enum
:
-
creation_date
-
release_date
-
title
-
$ref
:
"
#/parameters/Playable"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
responses
:
200
:
content
:
application/json
:
schema
:
allOf
:
-
$ref
:
"
#/definitions/ResultPage"
-
type
:
"
object"
properties
:
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/Album"
/albums/{id}/
:
get
:
summary
:
Retrieve a single album
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
tags
:
-
"
albums"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/Album"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/albums/{id}/libraries/
:
get
:
summary
:
List available user libraries containing tracks from this album
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
tags
:
-
"
albums"
-
"
libraries"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/LibraryPage"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/tracks/
:
get
:
summary
:
List tracks
tags
:
-
"
tracks"
parameters
:
-
name
:
"
q"
in
:
"
query"
default
:
null
description
:
"
Search
query
used
to
filter
tracks"
schema
:
required
:
false
type
:
"
string"
example
:
"
carpenter"
-
name
:
"
artist"
in
:
"
query"
default
:
null
description
:
"
Only
include
tracks
by
the
requested
artist"
schema
:
required
:
false
type
:
"
integer"
format
:
"
int64"
-
name
:
"
album"
in
:
"
query"
default
:
null
description
:
"
Only
include
tracks
from
the
requested
album"
schema
:
required
:
false
type
:
"
integer"
format
:
"
int64"
-
name
:
"
license"
in
:
"
query"
description
:
"
Filter/exclude
artists
with
listenable
tracks"
description
:
"
Only
include
tracks
with
the
given
license"
default
:
null
schema
:
example
:
"
cc-by-sa-4.0"
required
:
false
type
:
"
boolean"
type
:
"
string"
-
allOf
:
-
$ref
:
"
#/parameters/Ordering"
-
default
:
"
-creation_date"
schema
:
required
:
false
type
:
"
string"
example
:
"
creation_date"
enum
:
-
creation_date
-
release_date
-
title
-
$ref
:
"
#/parameters/Playable"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
responses
:
200
:
content
:
application/json
:
schema
:
type
:
"
object"
properties
:
count
:
$ref
:
"
#/properties/resultsCount"
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/ArtistWithAlbums"
allOf
:
-
$ref
:
"
#/definitions/ResultPage"
-
type
:
"
object"
properties
:
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/Track"
/tracks/{id}/
:
get
:
summary
:
Retrieve a single track
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
tags
:
-
"
tracks"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/Track"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/tracks/{id}/libraries/
:
get
:
summary
:
List available user libraries containing given track
parameters
:
-
$ref
:
"
#/parameters/ObjectId"
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
tags
:
-
"
tracks"
-
"
libraries"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/LibraryPage"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
/licenses/
:
get
:
summary
:
List licenses
tags
:
-
"
licenses"
parameters
:
-
$ref
:
"
#/parameters/PageNumber"
-
$ref
:
"
#/parameters/PageSize"
responses
:
200
:
content
:
application/json
:
schema
:
allOf
:
-
$ref
:
"
#/definitions/ResultPage"
-
type
:
"
object"
properties
:
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/License"
/licenses/{code}/
:
get
:
summary
:
Retrieve a single license
parameters
:
-
name
:
code
in
:
path
description
:
License code
required
:
true
schema
:
type
:
string
example
:
cc0-1.0
tags
:
-
"
licenses"
responses
:
200
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/License"
404
:
content
:
application/json
:
schema
:
$ref
:
"
#/definitions/ResourceNotFound"
parameters
:
ObjectId
:
name
:
id
in
:
path
description
:
Object ID
required
:
true
schema
:
type
:
integer
format
:
int64
Ordering
:
name
:
"
ordering"
in
:
"
query"
description
:
"
Ordering
for
the
results,
prefix
with
-
for
DESC
ordering"
PageNumber
:
in
:
query
name
:
page
schema
:
type
:
"
integer"
format
:
"
int64"
example
:
1
default
:
1
minimum
:
1
PageSize
:
in
:
query
name
:
page_size
schema
:
type
:
"
integer"
format
:
"
int64"
example
:
16
default
:
25
minimum
:
1
maximum
:
25
Playable
:
name
:
"
playable"
in
:
"
query"
default
:
null
description
:
"
Filter/exclude
resources
with
playable
tracks"
schema
:
required
:
false
type
:
"
boolean"
properties
:
resultsCount
:
type
:
"
integer"
format
:
"
int64"
description
:
"
The
total
number
of
resources
matching
the
request"
mbid
:
type
:
"
string"
formats
:
"
uuid"
description
:
"
A
musicbrainz
ID"
definitions
:
Artist
:
ResultPage
:
type
:
"
object"
properties
:
count
:
type
:
"
integer"
format
:
"
int64"
example
:
42
description
:
"
The
total
number
of
results
(all
pages
included)"
next
:
type
:
"
string"
format
:
"
uri"
description
:
"
Link
to
the
next
page
of
results"
previous
:
type
:
"
string"
format
:
"
uri"
description
:
"
Link
to
the
previous
page
of
results"
Image
:
type
:
"
object"
properties
:
original
:
type
:
"
string"
description
:
"
URL
to
the
original
image"
example
:
"
https://mydomain/media/albums/covers/ec2c53aeaac6.jpg"
small_square_crop
:
type
:
"
string"
description
:
"
URL
to
a
small,
squared
thumbnail
of
the
image"
example
:
"
https://mydomain/media/__sized__/albums/covers/ec2c53aeaac6-crop-c0-5__0-5-50x50-70.jpg"
medium_square_crop
:
type
:
"
string"
description
:
"
URL
to
a
medium,
squared
thumbnail
of
the
image"
example
:
"
https://mydomain/media/__sized__/albums/covers/ec2c53aeaac6-crop-c0-5__0-5-200x200-70.jpg"
square_crop
:
type
:
"
string"
description
:
"
URL
to
a
large,
squared
thumbnail
of
the
image"
example
:
"
https://mydomain/media/__sized__/albums/covers/ec2c53aeaac6-crop-c0-5__0-5-400x400-70.jpg"
Actor
:
type
:
object
description
:
"
A
federation/
ActivityPub
actor"
properties
:
fid
:
type
:
string
format
:
uri
description
:
"
The
actor
Federation
ID
(unique
accross
federation)"
uuid
:
type
:
string
format
:
uuid
description
:
"
Local
ID
of
the
library"
creation_date
:
type
:
"
string"
format
:
"
date-time"
preferred_username
:
type
:
"
string"
example
:
"
alice"
name
:
type
:
string
example
:
"
Alice
Unicorn"
last_fetch_date
:
type
:
"
string"
format
:
"
date-time"
description
:
"
Last
time
the
actor
profile
was
fetched
on
its
origin
server"
domain
:
type
:
"
string"
format
:
"
hostname"
example
:
"
open.audio"
type
:
type
:
"
string"
example
:
"
Person"
enum
:
-
Person
-
Application
-
Group
-
Organization
manually_approves_followers
:
type
:
"
boolean"
full_username
:
type
:
string
example
:
"
alice@open.audio"
BaseArtist
:
type
:
"
object"
properties
:
mbid
:
...
...
@@ -106,10 +532,10 @@ definitions:
creation_date
:
type
:
"
string"
format
:
"
date-time"
Artist
WithAlbums
:
Artist
:
type
:
"
object"
allOf
:
-
$ref
:
"
#/definitions/Artist"
-
$ref
:
"
#/definitions/
Base
Artist"
-
type
:
"
object"
properties
:
albums
:
...
...
@@ -117,7 +543,7 @@ definitions:
items
:
$ref
:
"
#/definitions/ArtistAlbum"
Album
:
Base
Album
:
type
:
"
object"
properties
:
mbid
:
...
...
@@ -142,19 +568,112 @@ definitions:
required
:
false
format
:
"
date"
example
:
"
2001-01-01"
is_playable
:
type
:
"
boolean"
cover
:
$ref
:
"
#/definitions/Image"
Album
:
type
:
"
object"
allOf
:
-
$ref
:
"
#/definitions/BaseAlbum"
-
type
:
"
object"
properties
:
tracks
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/AlbumTrack"
ArtistAlbum
:
type
:
"
object"
allOf
:
-
$ref
:
"
#/definitions/Album"
-
$ref
:
"
#/definitions/
Base
Album"
-
type
:
"
object"
properties
:
tracks_count
:
type
:
"
integer"
format
:
"
int64"
example
:
16
Library
:
type
:
"
object"
properties
:
fid
:
type
:
string
format
:
uri
description
:
"
The
library
Federation
ID
(unique
accross
federation)"
uuid
:
type
:
string
format
:
uuid
description
:
"
Local
ID
of
the
library"
name
:
type
:
string
example
:
"
My
awesome
library"
description
:
type
:
string
nullable
:
true
example
:
"
This
library
contains
all
the
stuff
I
love!"
uploads_count
:
type
:
"
integer"
format
:
"
int64"
example
:
687
privacy_level
:
type
:
string
example
:
"
me"
enum
:
-
"
me"
-
"
instance"
-
"
everyone"
actor
:
$ref
:
"
#/definitions/Actor"
LibraryPage
:
allOf
:
-
$ref
:
"
#/definitions/ResultPage"
-
type
:
"
object"
properties
:
results
:
type
:
"
array"
items
:
$ref
:
"
#/definitions/Library"
Track
:
License
:
type
:
"
object"
properties
:
id
:
type
:
string
format
:
uri
example
:
http://creativecommons.org/publicdomain/zero/1.0/
description
:
"
The
license
ID"
url
:
type
:
string
format
:
uri
example
:
http://creativecommons.org/publicdomain/zero/1.0/
description
:
"
The
license
url
(can
be
different
than
the
ID)"
code
:
type
:
string
description
:
"
A
unique
code
to
identify
the
license"
example
:
cc0-1.0
redistribute
:
type
:
boolean
example
:
true
description
:
"
Does
the
license
allow
free
redistribution?"
derivative
:
type
:
boolean
example
:
true
description
:
"
Does
the
license
allow
the
creation
of
derivative
work?"
commercial
:
type
:
boolean
example
:
true
description
:
"
Does
the
license
allow
commercial
use?"
attribution
:
type
:
boolean
example
:
false
description
:
"
Does
the
license
requires
crediting
the
author?"
copyleft
:
type
:
boolean
example
:
false
description
:
"
Does
the
license
enforce
a
similar
license
of
derivative
work?"
BaseTrack
:
type
:
"
object"
properties
:
mbid
:
...
...
@@ -181,6 +700,94 @@ definitions:
type
:
"
number"
minimum
:
1
example
:
1
creation_date
:
disc_number
:
required
:
false
type
:
"
number"
minimum
:
1
example
:
1
listen_url
:
type
:
"
string"
format
:
"
date-time"
format
:
"
uri"
description
:
"
URL
to
stream
the
track"
copyright
:
type
:
"
string"
example
:
"
Creative
Commons
Attribution-NonCommercial-NoDerivatives
4.0:
http://creativecommons.org/licenses/by-nc-nd/4.0/"
description
:
"
Copyright
information
as
extracted
from
upload
tags"
license
:
type
:
"
string"
description
:
"
Identifier
of
the
license
that
is
linked
to
the
track"
example
:
"
cc-by-nc-nd-4.0"
AlbumTrack
:
type
:
"
object"
allOf
:
-
$ref
:
"
#/definitions/BaseTrack"
-
type
:
"
object"
properties
:
artist
:
$ref
:
"
#/definitions/BaseArtist"
uploads
:
type
:
"
array"
description
:
"
List
of
uploads
associated
with
this
track"
items
:
$ref
:
"
#/definitions/Upload"
Track
:
type
:
"
object"
allOf
:
-
$ref
:
"
#/definitions/BaseTrack"
-
type
:
"
object"
properties
:
album
:
$ref
:
"
#/definitions/Album"
artist
:
$ref
:
"
#/definitions/BaseArtist"
uploads
:
type
:
"
array"
description
:
"
List
of
uploads
associated
with
this
track"
items
:
$ref
:
"
#/definitions/Upload"
Upload
:
type
:
"
object"
properties
:
uuid
:
type
:
string
format
:
uuid
size
:
type
:
"
integer"
format
:
"
int64"
example
:
278987000
description
:
"
Size
of
the
file,
in
bytes"
duration
:
type
:
"
integer"
format
:
"
int64"
example
:
184
description
:
"
Duration
of
the
audio,
in
seconds"
bitrate
:
type
:
"
integer"
format
:
"
int64"
example
:
128000
description
:
"
Bitrate
of
the
file,
in
bytes/s"
mimetype
:
type
:
string
example
:
"
audio/ogg"
enum
:
-
"
audio/ogg"
-
"
audio/mpeg"
-
"
audio/x-flac"
-
"
audio/flac"
extension
:
type
:
string
example
:
"
ogg"
description
:
"
File
extension
of
the
upload"
listen_url
:
type
:
"
string"
format
:
"
uri"
description
:
"
URL
to
stream
the
upload"
ResourceNotFound
:
type
:
"
object"
properties
:
detail
:
type
:
"
string"
example
:
"
Not
found."
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment