fix(ci): fix CI `build_documentation` job swagger-UI generation and remove leftovers NOCHANGELOG
This commit is contained in:
parent
5356e9f268
commit
05cb102b21
117
.gitlab-ci.yml
117
.gitlab-ci.yml
|
@ -250,9 +250,9 @@ test_api:
|
||||||
# - if: $CI_COMMIT_REF_PROTECTED == "true"
|
# - if: $CI_COMMIT_REF_PROTECTED == "true"
|
||||||
# when: always
|
# when: always
|
||||||
|
|
||||||
build_docs:
|
build_openapi_schema:
|
||||||
stage: build
|
stage: build
|
||||||
image: $CI_REGISTRY/funkwhale/backend-test-docker:3.10
|
image: $CI_REGISTRY/funkwhale/backend-test-docker:3.11
|
||||||
services:
|
services:
|
||||||
- postgres:15-alpine
|
- postgres:15-alpine
|
||||||
- redis:7-alpine
|
- redis:7-alpine
|
||||||
|
@ -281,6 +281,44 @@ build_docs:
|
||||||
paths:
|
paths:
|
||||||
- docs/schema.yml
|
- docs/schema.yml
|
||||||
|
|
||||||
|
build_documentation:
|
||||||
|
stage: build
|
||||||
|
image: python:3.11
|
||||||
|
needs:
|
||||||
|
- build_openapi_schema
|
||||||
|
dependencies:
|
||||||
|
- build_openapi_schema
|
||||||
|
variables:
|
||||||
|
BUILD_PATH: "../public"
|
||||||
|
GIT_STRATEGY: clone
|
||||||
|
GIT_DEPTH: 0
|
||||||
|
before_script:
|
||||||
|
- cd docs
|
||||||
|
- apt-get update
|
||||||
|
- apt-get install -y graphviz
|
||||||
|
- pip install poetry
|
||||||
|
- poetry install
|
||||||
|
- git branch stable --track origin/stable || true
|
||||||
|
- git branch develop --track origin/develop || true
|
||||||
|
script:
|
||||||
|
- ./build_docs.sh
|
||||||
|
cache:
|
||||||
|
key: "$CI_PROJECT_ID__sphinx"
|
||||||
|
paths:
|
||||||
|
- "$PIP_CACHE_DIR"
|
||||||
|
artifacts:
|
||||||
|
expire_in: 2 weeks
|
||||||
|
paths:
|
||||||
|
- public
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == "stable" || $CI_COMMIT_BRANCH == "develop"
|
||||||
|
when: always
|
||||||
|
- changes:
|
||||||
|
- docs/**/*
|
||||||
|
when: always
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
|
||||||
build_front:
|
build_front:
|
||||||
stage: build
|
stage: build
|
||||||
image: node:18-alpine
|
image: node:18-alpine
|
||||||
|
@ -308,39 +346,28 @@ build_front:
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
build_documentation:
|
build_api:
|
||||||
stage: build
|
stage: build
|
||||||
image: python:3.11
|
image: bash
|
||||||
variables:
|
variables:
|
||||||
BUILD_PATH: "../public"
|
# Keep the git files attributes during job setup
|
||||||
before_script:
|
GIT_STRATEGY: clone
|
||||||
- cd docs
|
GIT_DEPTH: "5"
|
||||||
- apt-get update
|
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: "true"
|
||||||
- apt-get install -y graphviz git
|
|
||||||
- pip install poetry
|
|
||||||
- poetry install
|
|
||||||
- git switch develop && git pull
|
|
||||||
- git switch stable && git pull
|
|
||||||
- git switch $CI_COMMIT_BRANCH && git pull
|
|
||||||
script:
|
script:
|
||||||
- ./build_docs.sh
|
- rm -rf api/tests
|
||||||
cache:
|
- >
|
||||||
key: "$CI_PROJECT_ID__sphinx"
|
if [ "$CI_COMMIT_REF_NAME" == "develop" ] || [ "$CI_COMMIT_REF_NAME" == "stable" ]; then
|
||||||
paths:
|
./scripts/set-api-build-metadata.sh $CI_COMMIT_SHORT_SHA;
|
||||||
- "$PIP_CACHE_DIR"
|
fi
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 2 weeks
|
name: api_${CI_COMMIT_REF_NAME}
|
||||||
paths:
|
paths:
|
||||||
- public
|
- api
|
||||||
rules:
|
only:
|
||||||
- if: $CI_COMMIT_BRANCH == "stable"
|
- tags@funkwhale/funkwhale
|
||||||
when: always
|
- stable@funkwhale/funkwhale
|
||||||
- if: $CI_COMMIT_BRANCH == "develop"
|
- develop@funkwhale/funkwhale
|
||||||
changes:
|
|
||||||
- docs/**/*
|
|
||||||
when: always
|
|
||||||
tags:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
deploy_documentation:
|
deploy_documentation:
|
||||||
stage: publish
|
stage: publish
|
||||||
|
@ -362,6 +389,9 @@ deploy_documentation:
|
||||||
.docker_publish:
|
.docker_publish:
|
||||||
stage: publish
|
stage: publish
|
||||||
image: egon0/docker-with-buildx-and-git:bash
|
image: egon0/docker-with-buildx-and-git:bash
|
||||||
|
variables:
|
||||||
|
IMAGE_NAME: funkwhale/$COMPONENT
|
||||||
|
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: "true"
|
||||||
tags:
|
tags:
|
||||||
- multiarch
|
- multiarch
|
||||||
services:
|
services:
|
||||||
|
@ -372,13 +402,10 @@ deploy_documentation:
|
||||||
key: docker_public_${CI_COMMIT_REF_NAME}
|
key: docker_public_${CI_COMMIT_REF_NAME}
|
||||||
paths:
|
paths:
|
||||||
- ~/.cargo
|
- ~/.cargo
|
||||||
script:
|
|
||||||
|
|
||||||
docker_publish_stable_release:
|
docker_publish_stable_release:
|
||||||
# Publish a docker image for releases
|
# Publish a docker image for releases
|
||||||
extends: .docker_publish
|
extends: .docker_publish
|
||||||
variables:
|
|
||||||
IMAGE_NAME: funkwhale/$COMPONENT
|
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^[0-9]+(.[0-9]+){1,2}$/
|
- if: $CI_COMMIT_TAG && $CI_COMMIT_REF_NAME =~ /^[0-9]+(.[0-9]+){1,2}$/
|
||||||
script:
|
script:
|
||||||
|
@ -425,27 +452,3 @@ docker_publish_non-release:
|
||||||
parallel:
|
parallel:
|
||||||
matrix:
|
matrix:
|
||||||
- COMPONENT: ["api", "front"]
|
- COMPONENT: ["api", "front"]
|
||||||
|
|
||||||
build_api:
|
|
||||||
# Simply publish a zip containing api/ directory
|
|
||||||
stage: publish
|
|
||||||
image: bash
|
|
||||||
variables:
|
|
||||||
# Keep the git files attributes during job setup
|
|
||||||
GIT_STRATEGY: clone
|
|
||||||
GIT_DEPTH: "5"
|
|
||||||
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: "true"
|
|
||||||
script:
|
|
||||||
- rm -rf api/tests
|
|
||||||
- >
|
|
||||||
if [ "$CI_COMMIT_REF_NAME" == "develop" ] || [ "$CI_COMMIT_REF_NAME" == "stable" ]; then
|
|
||||||
./scripts/set-api-build-metadata.sh $(echo $CI_COMMIT_SHA | cut -c 1-8);
|
|
||||||
fi
|
|
||||||
artifacts:
|
|
||||||
name: api_${CI_COMMIT_REF_NAME}
|
|
||||||
paths:
|
|
||||||
- api
|
|
||||||
only:
|
|
||||||
- tags@funkwhale/funkwhale
|
|
||||||
- stable@funkwhale/funkwhale
|
|
||||||
- develop@funkwhale/funkwhale
|
|
||||||
|
|
|
@ -1,951 +0,0 @@
|
||||||
OAuthApplication:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
client_id:
|
|
||||||
type: "string"
|
|
||||||
example: "VKIZWv7FwBq56UMfUtbCSIgSxzUTv1b6nMyOkJvP"
|
|
||||||
created:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
updated:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
scopes:
|
|
||||||
type: "string"
|
|
||||||
description: "Coma-separated list of scopes requested by the app"
|
|
||||||
|
|
||||||
OAuthApplicationCreation:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
client_secret:
|
|
||||||
type: "string"
|
|
||||||
example: "qnKDX8zjIfC0BG4tUreKlqk3tNtuCfJdGsaEt5MIWrTv0YLLhGI6SGqCjs9kn12gyXtIg4FWfZqWMEckJmolCi7a6qew4LawPWMfnLDii4mQlY1eQG4BJbwPANOrDiTZ"
|
|
||||||
redirect_uris:
|
|
||||||
type: "string"
|
|
||||||
format: "uri"
|
|
||||||
description: "Coma-separated list of redirect uris allowed for the app"
|
|
||||||
|
|
||||||
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"
|
|
||||||
|
|
||||||
Attachment:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
uuid:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
size:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 2787000
|
|
||||||
description: "Size of the file, in bytes"
|
|
||||||
mimetype:
|
|
||||||
$ref: "./properties.yml#/image_mimetype"
|
|
||||||
creation_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
urls:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
original:
|
|
||||||
type: "string"
|
|
||||||
description: "URL to the original image"
|
|
||||||
example: "https://mydomain/media/attachments/ec2c53aeaac6.jpg"
|
|
||||||
medium_square_crop:
|
|
||||||
type: "string"
|
|
||||||
description: "URL to a medium, squared thumbnail of the image"
|
|
||||||
example: "https://mydomain/media/__sized__/attachments/ec2c53aeaac6-crop-c0-5__0-5-200x200-70.jpg"
|
|
||||||
|
|
||||||
Actor:
|
|
||||||
type: object
|
|
||||||
description: "A federation/ ActivityPub actor"
|
|
||||||
properties:
|
|
||||||
fid:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: "The actor Federation ID (unique across 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"
|
|
||||||
required:
|
|
||||||
- id
|
|
||||||
- fid
|
|
||||||
- name
|
|
||||||
- creation_date
|
|
||||||
- is_local
|
|
||||||
properties:
|
|
||||||
mbid:
|
|
||||||
$ref: "./properties.yml#/mbid"
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
fid:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: "The artist Federation ID (unique across federation)"
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "System of a Down"
|
|
||||||
creation_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
is_local:
|
|
||||||
type: "boolean"
|
|
||||||
description: "Indicates if the object was initially created locally or on another server"
|
|
||||||
|
|
||||||
Artist:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/BaseArtist"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
tracks_count:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
albums:
|
|
||||||
type: "array"
|
|
||||||
items:
|
|
||||||
$ref: "#/ArtistAlbum"
|
|
||||||
|
|
||||||
BaseAlbum:
|
|
||||||
type: "object"
|
|
||||||
required:
|
|
||||||
- id
|
|
||||||
- fid
|
|
||||||
- artist
|
|
||||||
- title
|
|
||||||
- creation_date
|
|
||||||
- is_playable
|
|
||||||
- is_local
|
|
||||||
properties:
|
|
||||||
mbid:
|
|
||||||
$ref: "./properties.yml#/mbid"
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 16
|
|
||||||
fid:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: "The album Federation ID (unique across federation)"
|
|
||||||
artist:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
title:
|
|
||||||
type: "string"
|
|
||||||
example: "Toxicity"
|
|
||||||
creation_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
release_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date"
|
|
||||||
example: "2001-01-01"
|
|
||||||
is_playable:
|
|
||||||
type: "boolean"
|
|
||||||
cover:
|
|
||||||
$ref: "#/Attachment"
|
|
||||||
is_local:
|
|
||||||
type: "boolean"
|
|
||||||
description: "Indicates if the object was initially created locally or on another server"
|
|
||||||
|
|
||||||
Album:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/BaseAlbum"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
tracks_count:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
|
|
||||||
ArtistAlbum:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/BaseAlbum"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
tracks_count:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 16
|
|
||||||
|
|
||||||
ChannelMetadata:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
itunes_category:
|
|
||||||
type: string
|
|
||||||
example: Comedy
|
|
||||||
description: Itunes category (see `/api/v1/channels/metadata-choices`) for allowed values
|
|
||||||
itunes_subcategory:
|
|
||||||
type: string
|
|
||||||
example: Improv
|
|
||||||
description: Itunes subcategory (see `/api/v1/channels/metadata-choices`) for allowed values
|
|
||||||
language:
|
|
||||||
type: string
|
|
||||||
example: en
|
|
||||||
description: Language of the content, in ISO 639 format (see `/api/v1/channels/metadata-choices`) for allowed values
|
|
||||||
owner_name:
|
|
||||||
type: string
|
|
||||||
example: "Alice"
|
|
||||||
description: Used to make the channel compatible with other platforms (iTunes, Spotify, etc.)
|
|
||||||
owner_email:
|
|
||||||
type: string
|
|
||||||
example: "alice@example.com"
|
|
||||||
description: Used to make the channel compatible with other platforms (iTunes, Spotify, etc.)
|
|
||||||
|
|
||||||
ChannelCreate:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "A short, public name for the channel"
|
|
||||||
maxLength: 255
|
|
||||||
username:
|
|
||||||
type: "string"
|
|
||||||
example: "aliceandbob"
|
|
||||||
description: "The username to associate with the channel, for use over federation. This cannot be changed afterwards."
|
|
||||||
description:
|
|
||||||
$ref: "./properties.yml#/description"
|
|
||||||
tags:
|
|
||||||
$ref: "./properties.yml#/tags"
|
|
||||||
content_category:
|
|
||||||
$ref: "./properties.yml#/content_category"
|
|
||||||
cover:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
metadata:
|
|
||||||
$ref: "#/ChannelMetadata"
|
|
||||||
ChannelUpdate:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "A short, public name for the channel"
|
|
||||||
maxLength: 255
|
|
||||||
description:
|
|
||||||
$ref: "./properties.yml#/description"
|
|
||||||
tags:
|
|
||||||
$ref: "./properties.yml#/tags"
|
|
||||||
cover:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
metadata:
|
|
||||||
$ref: "#/ChannelMetadata"
|
|
||||||
|
|
||||||
Channel:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
uuid:
|
|
||||||
type: "string"
|
|
||||||
format: "uuid"
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
artist:
|
|
||||||
$ref: "#/BaseArtist"
|
|
||||||
attributed_to:
|
|
||||||
$ref: "#/Actor"
|
|
||||||
description: User account owning the channel
|
|
||||||
actor:
|
|
||||||
$ref: "#/Actor"
|
|
||||||
description: Actor representing the channel over federation
|
|
||||||
|
|
||||||
Subscription:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
approved:
|
|
||||||
type: "string"
|
|
||||||
fid:
|
|
||||||
$ref: "./properties.yml#/fid"
|
|
||||||
uuid:
|
|
||||||
type: "string"
|
|
||||||
format: "uuid"
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
channel:
|
|
||||||
$ref: "#/Channel"
|
|
||||||
|
|
||||||
SubscriptionsAll:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
uuid:
|
|
||||||
type: "string"
|
|
||||||
format: "uuid"
|
|
||||||
channel:
|
|
||||||
type: "string"
|
|
||||||
format: "uuid"
|
|
||||||
|
|
||||||
Library:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
fid:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: "The library Federation ID (unique across 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: "#/Actor"
|
|
||||||
LibraryPage:
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/ResultPage"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
results:
|
|
||||||
type: "array"
|
|
||||||
items:
|
|
||||||
$ref: "#/Library"
|
|
||||||
|
|
||||||
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"
|
|
||||||
required:
|
|
||||||
- id
|
|
||||||
- fid
|
|
||||||
- artist
|
|
||||||
- album
|
|
||||||
- title
|
|
||||||
- listen_url
|
|
||||||
- copyright
|
|
||||||
- license
|
|
||||||
- is_local
|
|
||||||
properties:
|
|
||||||
mbid:
|
|
||||||
$ref: "./properties.yml#/mbid"
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 66
|
|
||||||
fid:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
description: "The track Federation ID (unique across federation)"
|
|
||||||
artist:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
album:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 16
|
|
||||||
title:
|
|
||||||
type: "string"
|
|
||||||
example: "Chop Suey!"
|
|
||||||
position:
|
|
||||||
description: "Position of the track in the album"
|
|
||||||
type: "number"
|
|
||||||
minimum: 1
|
|
||||||
example: 1
|
|
||||||
disc_number:
|
|
||||||
type: "number"
|
|
||||||
minimum: 1
|
|
||||||
example: 1
|
|
||||||
listen_url:
|
|
||||||
type: "string"
|
|
||||||
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"
|
|
||||||
is_local:
|
|
||||||
type: "boolean"
|
|
||||||
description: "Indicates if the object was initially created locally or on another server"
|
|
||||||
|
|
||||||
AlbumTrack:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/BaseTrack"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
artist:
|
|
||||||
$ref: "#/BaseArtist"
|
|
||||||
uploads:
|
|
||||||
type: "array"
|
|
||||||
description: "List of uploads associated with this track"
|
|
||||||
items:
|
|
||||||
$ref: "#/Upload"
|
|
||||||
|
|
||||||
ListeningCreate:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 66
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
track:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 94
|
|
||||||
|
|
||||||
Listening:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 66
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
track:
|
|
||||||
$ref: "#/Track"
|
|
||||||
actor:
|
|
||||||
$ref: "#/Actor"
|
|
||||||
|
|
||||||
Track:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/BaseTrack"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
album:
|
|
||||||
$ref: "#/Album"
|
|
||||||
artist:
|
|
||||||
$ref: "#/BaseArtist"
|
|
||||||
uploads:
|
|
||||||
type: "array"
|
|
||||||
description: "List of uploads associated with this track"
|
|
||||||
items:
|
|
||||||
$ref: "#/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:
|
|
||||||
$ref: "./properties.yml#/audio_mimetype"
|
|
||||||
extension:
|
|
||||||
type: string
|
|
||||||
example: "ogg"
|
|
||||||
description: "File extension of the upload"
|
|
||||||
filename:
|
|
||||||
type: "string"
|
|
||||||
example: "Myfile.mp3"
|
|
||||||
listen_url:
|
|
||||||
type: "string"
|
|
||||||
format: "uri"
|
|
||||||
description: "URL to stream the upload"
|
|
||||||
is_local:
|
|
||||||
type: "boolean"
|
|
||||||
description: "Indicates if the object was initially created locally or on another server"
|
|
||||||
|
|
||||||
OwnedLibraryCreate:
|
|
||||||
type: "object"
|
|
||||||
required:
|
|
||||||
- name
|
|
||||||
- privacy_level
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "My new library"
|
|
||||||
description:
|
|
||||||
type: "string"
|
|
||||||
example: "Lots of interesting content"
|
|
||||||
privacy_level:
|
|
||||||
$ref: "./properties.yml#/privacy_level"
|
|
||||||
|
|
||||||
OwnedLibrary:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
uuid:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
fid:
|
|
||||||
$ref: "./properties.yml#/fid"
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "My Creative Commons library"
|
|
||||||
description:
|
|
||||||
type: "string"
|
|
||||||
example: "All content is under CC-BY"
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
privacy_level:
|
|
||||||
$ref: "./properties.yml#/privacy_level"
|
|
||||||
uploads_count:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 34
|
|
||||||
size:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 678917000
|
|
||||||
description: "Total size of uploads in the library, in bytes"
|
|
||||||
|
|
||||||
OwnedUpload:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/Upload"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
import_status:
|
|
||||||
$ref: "./properties.yml#/import_status"
|
|
||||||
track:
|
|
||||||
$ref: "#/Track"
|
|
||||||
library:
|
|
||||||
$ref: "#/OwnedLibrary"
|
|
||||||
source:
|
|
||||||
type: "string"
|
|
||||||
example: "upload://myfile.mp3"
|
|
||||||
import_reference:
|
|
||||||
type: "string"
|
|
||||||
example: "Import launched via web UI on 03/18"
|
|
||||||
import_metadata:
|
|
||||||
$ref: "#/ImportMetadata"
|
|
||||||
|
|
||||||
Playlist:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
description: Name of the playlist
|
|
||||||
example: "Move your body"
|
|
||||||
duration:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Duration of the playlist, in seconds
|
|
||||||
example: 3600
|
|
||||||
tracks_count:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Number of tracks in the playlist
|
|
||||||
example: 76
|
|
||||||
privacy_level:
|
|
||||||
$ref: "./properties.yml#/privacy_level"
|
|
||||||
actor:
|
|
||||||
$ref: "#/Actor"
|
|
||||||
description: Actor owning the playlist
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
modification_date:
|
|
||||||
$ref: "./properties.yml#/modification_date"
|
|
||||||
|
|
||||||
PlaylistCreate:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
description: Name of the playlist
|
|
||||||
example: "Move your body"
|
|
||||||
privacy_level:
|
|
||||||
$ref: "./properties.yml#/privacy_level"
|
|
||||||
|
|
||||||
PlaylistTrack:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 42
|
|
||||||
index:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 16
|
|
||||||
description: Position of the track in the playlist
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
track:
|
|
||||||
$ref: "#/Track"
|
|
||||||
|
|
||||||
ImportMetadata:
|
|
||||||
type: "object"
|
|
||||||
required:
|
|
||||||
- title
|
|
||||||
- position
|
|
||||||
description: "Import metadata to override values from ID3/embedded audio tags"
|
|
||||||
properties:
|
|
||||||
title:
|
|
||||||
type: "string"
|
|
||||||
example: "My Track"
|
|
||||||
mbid:
|
|
||||||
$ref: "./properties.yml#/mbid"
|
|
||||||
copyright:
|
|
||||||
type: "string"
|
|
||||||
example: "Alice, 2018"
|
|
||||||
description: "Copyright information"
|
|
||||||
license:
|
|
||||||
type: "string"
|
|
||||||
example: "cc-by-sa-4.0"
|
|
||||||
description: A license code, as returned by /api/v1/licenses
|
|
||||||
tags:
|
|
||||||
$ref: "./properties.yml#/tags"
|
|
||||||
position:
|
|
||||||
description: "Position of the track in the album or channel"
|
|
||||||
type: "number"
|
|
||||||
minimum: 1
|
|
||||||
example: 1
|
|
||||||
|
|
||||||
TrackFavorite:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 876
|
|
||||||
track:
|
|
||||||
$ref: "#/Track"
|
|
||||||
user:
|
|
||||||
$ref: "#/User"
|
|
||||||
creation_date:
|
|
||||||
$ref: "./properties.yml#/creation_date"
|
|
||||||
User:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 23
|
|
||||||
username:
|
|
||||||
type: "string"
|
|
||||||
example: "alice"
|
|
||||||
name:
|
|
||||||
type: "string"
|
|
||||||
example: "Alice Kingsley"
|
|
||||||
avatar:
|
|
||||||
$ref: "#/Attachment"
|
|
||||||
|
|
||||||
Me:
|
|
||||||
type: "object"
|
|
||||||
allOf:
|
|
||||||
- $ref: "#/User"
|
|
||||||
- type: "object"
|
|
||||||
properties:
|
|
||||||
full_username:
|
|
||||||
type: "string"
|
|
||||||
description: Full username, for use on federation
|
|
||||||
example: "alice@yourdomain.com"
|
|
||||||
email:
|
|
||||||
type: "string"
|
|
||||||
format: "email"
|
|
||||||
description: E-mail address associated with the account
|
|
||||||
example: "alice@email.provider"
|
|
||||||
is_staff:
|
|
||||||
type: "boolean"
|
|
||||||
example: false
|
|
||||||
is_superuser:
|
|
||||||
type: "boolean"
|
|
||||||
example: false
|
|
||||||
date_joined:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
privacy_level:
|
|
||||||
$ref: "./properties.yml#/privacy_level"
|
|
||||||
description: Default privacy-level associated with the user account
|
|
||||||
quota_status:
|
|
||||||
$ref: "#/QuotaStatus"
|
|
||||||
permissions:
|
|
||||||
$ref: "#/Permissions"
|
|
||||||
tokens:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
listen:
|
|
||||||
type: string
|
|
||||||
description: |
|
|
||||||
A token that can be passed in the querystring, when playing
|
|
||||||
a file from the /api/v1/listen endpoint. Example:
|
|
||||||
/api/v1/listen/uuid/?token=foo
|
|
||||||
|
|
||||||
This is especially useful in situations where authentication
|
|
||||||
via request headers isn't possible.
|
|
||||||
|
|
||||||
The token expires after 3 days by default.
|
|
||||||
|
|
||||||
QuotaStatus:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
max:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space allocated to this user, in MB
|
|
||||||
example: 5000
|
|
||||||
remaining:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Remaining storage space for this user, in MB
|
|
||||||
example: 4600
|
|
||||||
current:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space used by this user, in MB
|
|
||||||
example: 400
|
|
||||||
skipped:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space occupied by uploads with "skipped" import status, in MB
|
|
||||||
example: 30
|
|
||||||
finished:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space occupied by uploads with "finished" import status, in MB
|
|
||||||
example: 350
|
|
||||||
pending:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space occupied by uploads with "pending" import status, in MB
|
|
||||||
example: 15
|
|
||||||
draft:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space occupied by uploads with "draft" import status, in MB
|
|
||||||
example: 8
|
|
||||||
errored:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
description: Storage space occupied by uploads with "errored" import status, in MB
|
|
||||||
example: 5
|
|
||||||
Permissions:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
library:
|
|
||||||
type: "boolean"
|
|
||||||
example: false
|
|
||||||
description: A boolean indicating if the user can manage the instance library
|
|
||||||
moderation:
|
|
||||||
type: "boolean"
|
|
||||||
example: false
|
|
||||||
description: A boolean indicating if the user has moderation permission
|
|
||||||
settings:
|
|
||||||
type: "boolean"
|
|
||||||
example: false
|
|
||||||
description: A boolean indicating if the user can manage instance settings and users
|
|
||||||
|
|
||||||
RadioSessionCreate:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
radio_type:
|
|
||||||
type: "string"
|
|
||||||
description: |
|
|
||||||
The type of radio to start. Depending of the type, the `related_object_id` field
|
|
||||||
will need to be set to a non null value:
|
|
||||||
|
|
||||||
- tag: tag `name`
|
|
||||||
- artist: artist `id`
|
|
||||||
- library: library `uuid`
|
|
||||||
|
|
||||||
enum:
|
|
||||||
- random
|
|
||||||
- favorites
|
|
||||||
- tag
|
|
||||||
- similar
|
|
||||||
- artist
|
|
||||||
- less-listened
|
|
||||||
- actor-content
|
|
||||||
- library
|
|
||||||
|
|
||||||
related_object_id:
|
|
||||||
type: string
|
|
||||||
default: null
|
|
||||||
description: |
|
|
||||||
Value may be an integer depending of the `radio_type`.
|
|
||||||
Please refer to the `radio_type` documentation.
|
|
||||||
|
|
||||||
RateLimitStatus:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
enabled:
|
|
||||||
type: "boolean"
|
|
||||||
example: true
|
|
||||||
description: A boolean indicating if rate-limiting is enabled on the server
|
|
||||||
ident:
|
|
||||||
type: "object"
|
|
||||||
description: Client-related data
|
|
||||||
properties:
|
|
||||||
type:
|
|
||||||
type: string
|
|
||||||
example: "anonymous"
|
|
||||||
enum:
|
|
||||||
- "authenticated"
|
|
||||||
- "anonymous"
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
example: "92.143.42"
|
|
||||||
description: An address IP or user ID identifying the client
|
|
||||||
scopes:
|
|
||||||
type: "array"
|
|
||||||
items:
|
|
||||||
type: "object"
|
|
||||||
description: Rate-limit scope configuration and usage
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: string
|
|
||||||
example: "password-reset"
|
|
||||||
description:
|
|
||||||
type: string
|
|
||||||
example: "Password reset request"
|
|
||||||
rate:
|
|
||||||
type: string
|
|
||||||
example: "30/day"
|
|
||||||
limit:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 30
|
|
||||||
duration:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 86400
|
|
||||||
remaining:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 28
|
|
||||||
description: How many requests can be sent with the same scope before the limit applies
|
|
||||||
reset:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 1568126189
|
|
||||||
description: A timestamp indicating when <code>remaining</code> will return to its higher possible value
|
|
||||||
reset_seconds:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 86267
|
|
||||||
description: How many seconds to wait before <code>remaining</code> returns to its higher possible value
|
|
||||||
available:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 1568126089
|
|
||||||
description: A timestamp indicating when the client can retry
|
|
||||||
available_seconds:
|
|
||||||
type: "integer"
|
|
||||||
format: "int64"
|
|
||||||
example: 54
|
|
||||||
description: How many seconds to wait before a retry
|
|
||||||
|
|
||||||
ResourceNotFound:
|
|
||||||
type: "object"
|
|
||||||
properties:
|
|
||||||
detail:
|
|
||||||
type: "string"
|
|
||||||
example: "Not found."
|
|
|
@ -1,212 +0,0 @@
|
||||||
ChannelOrdering:
|
|
||||||
$ref: "#/Ordering"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
default: "creation_date"
|
|
||||||
example: "creation_date"
|
|
||||||
enum:
|
|
||||||
- creation_date
|
|
||||||
- artist__modification_date
|
|
||||||
|
|
||||||
PlaylistOrdering:
|
|
||||||
$ref: "#/Ordering"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
default: "creation_date"
|
|
||||||
example: "creation_date"
|
|
||||||
enum:
|
|
||||||
- creation_date
|
|
||||||
- modification_date
|
|
||||||
- id
|
|
||||||
- name
|
|
||||||
|
|
||||||
ArtistOrdering:
|
|
||||||
$ref: "#/Ordering"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
default: "creation_date"
|
|
||||||
example: "creation_date"
|
|
||||||
enum:
|
|
||||||
- creation_date
|
|
||||||
- id
|
|
||||||
- name
|
|
||||||
- random
|
|
||||||
|
|
||||||
AlbumOrdering:
|
|
||||||
$ref: "#/Ordering"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
default: "creation_date"
|
|
||||||
example: "creation_date"
|
|
||||||
enum:
|
|
||||||
- creation_date
|
|
||||||
- release_date
|
|
||||||
- title
|
|
||||||
- random
|
|
||||||
|
|
||||||
TrackOrdering:
|
|
||||||
$ref: "#/Ordering"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
default: "creation_date"
|
|
||||||
example: "creation_date"
|
|
||||||
enum:
|
|
||||||
- creation_date
|
|
||||||
- release_date
|
|
||||||
- title
|
|
||||||
- random
|
|
||||||
|
|
||||||
External:
|
|
||||||
name: "external"
|
|
||||||
in: "query"
|
|
||||||
required: false
|
|
||||||
description: "Filter/exclude channels created from a third-party, non-Funkwhale RSS feed"
|
|
||||||
schema:
|
|
||||||
default: null
|
|
||||||
type: "boolean"
|
|
||||||
|
|
||||||
Library:
|
|
||||||
name: library
|
|
||||||
in: query
|
|
||||||
description: Restrict to results contained in the given library
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
|
|
||||||
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"
|
|
||||||
required: false
|
|
||||||
description: "Filter/exclude resources with playable tracks"
|
|
||||||
schema:
|
|
||||||
default: null
|
|
||||||
type: "boolean"
|
|
||||||
HasAlbums:
|
|
||||||
name: "has_albums"
|
|
||||||
in: "query"
|
|
||||||
required: false
|
|
||||||
description: "Filter/exclude artists with no associated albums"
|
|
||||||
schema:
|
|
||||||
default: null
|
|
||||||
type: "boolean"
|
|
||||||
Refresh:
|
|
||||||
name: "refresh"
|
|
||||||
in: "query"
|
|
||||||
required: false
|
|
||||||
description: "Trigger an ActivityPub fetch to refresh local data"
|
|
||||||
schema:
|
|
||||||
default: false
|
|
||||||
type: "boolean"
|
|
||||||
|
|
||||||
Related:
|
|
||||||
name: related
|
|
||||||
in: query
|
|
||||||
description: Restrict to results similar to the given object (based on tags)
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
format: int64
|
|
||||||
|
|
||||||
Scope:
|
|
||||||
name: "scope"
|
|
||||||
in: "query"
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
Limit the results to a given user or pod:
|
|
||||||
- Use `all` (or do not specify the property to disable scope filtering)
|
|
||||||
- Use `me` to retrieve content relative to the current user
|
|
||||||
- Use `subscribed` to retrieve content in libraries you follow
|
|
||||||
- Use `actor:alice@example.com` to retrieve content relative to the account `alice@example.com
|
|
||||||
- Use `domain:example.com` to retrieve content relative to the domain `example.com
|
|
||||||
|
|
||||||
You can specify multiple coma separated scopes, e.g `scope=me,subscribed` to retrieve content matching either scopes.
|
|
||||||
|
|
||||||
schema:
|
|
||||||
default: "all"
|
|
||||||
type: "string"
|
|
||||||
enum:
|
|
||||||
- "me"
|
|
||||||
- "all"
|
|
||||||
- "subscribed"
|
|
||||||
- "actor:alice@example.com"
|
|
||||||
- "domain:example.com"
|
|
||||||
|
|
||||||
ContentCategory:
|
|
||||||
name: "content_category"
|
|
||||||
in: "query"
|
|
||||||
description: |
|
|
||||||
Limits the results to those whose artist content type matches the query.
|
|
||||||
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: "string"
|
|
||||||
enum:
|
|
||||||
- "podcast"
|
|
||||||
- "music"
|
|
||||||
|
|
||||||
Search:
|
|
||||||
name: "q"
|
|
||||||
in: "query"
|
|
||||||
required: false
|
|
||||||
description: "Limit the results to the corresponding search query"
|
|
||||||
schema:
|
|
||||||
default: "all"
|
|
||||||
type: "string"
|
|
||||||
example: "Bonobo"
|
|
||||||
|
|
||||||
Subscribed:
|
|
||||||
name: "subscribed"
|
|
||||||
in: "query"
|
|
||||||
description: "Limit or exclude results with a matching subsription from the current user"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: boolean
|
|
||||||
|
|
||||||
Tags:
|
|
||||||
name: "tag"
|
|
||||||
in: "query"
|
|
||||||
description: "Limit the results to the corresponding tags. May be used multiple times, to retrieve objects matching al provided tags"
|
|
||||||
required: false
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example:
|
|
||||||
- rock
|
|
||||||
- metal
|
|
|
@ -1,99 +0,0 @@
|
||||||
description:
|
|
||||||
type: object
|
|
||||||
description: Text content associated with another resource, like and artist or channel.
|
|
||||||
properties:
|
|
||||||
text:
|
|
||||||
type: string
|
|
||||||
example: "This is **me**"
|
|
||||||
description: "The raw user input"
|
|
||||||
content_type:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- text/markdown
|
|
||||||
- text/plain
|
|
||||||
- text/html
|
|
||||||
description: "The raw user input"
|
|
||||||
html:
|
|
||||||
type: string
|
|
||||||
description: "HTML output based on user input"
|
|
||||||
readOnly: true
|
|
||||||
|
|
||||||
mbid:
|
|
||||||
type: "string"
|
|
||||||
format: "uuid"
|
|
||||||
description: "A musicbrainz ID"
|
|
||||||
creation_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
description: "Creation date of the resource"
|
|
||||||
|
|
||||||
modification_date:
|
|
||||||
type: "string"
|
|
||||||
format: "date-time"
|
|
||||||
description: "Last modification date of th resource"
|
|
||||||
privacy_level:
|
|
||||||
type: string
|
|
||||||
example: "me"
|
|
||||||
description: |
|
|
||||||
* `me`: private
|
|
||||||
* `instance`: accessible by local users
|
|
||||||
* `everyone`: public (including over federation)
|
|
||||||
enum:
|
|
||||||
- "me"
|
|
||||||
- "instance"
|
|
||||||
- "everyone"
|
|
||||||
fid:
|
|
||||||
type: "string"
|
|
||||||
format: "uri"
|
|
||||||
description: "Federation ID"
|
|
||||||
example: "https://my.instance/federation/music/libraries/3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
||||||
audio_mimetype:
|
|
||||||
type: string
|
|
||||||
example: "audio/ogg"
|
|
||||||
enum:
|
|
||||||
- "audio/ogg"
|
|
||||||
- "audio/mpeg"
|
|
||||||
- "audio/x-flac"
|
|
||||||
- "audio/flac"
|
|
||||||
image_mimetype:
|
|
||||||
type: string
|
|
||||||
example: "image/png"
|
|
||||||
enum:
|
|
||||||
- "image/png"
|
|
||||||
- "image/jpeg"
|
|
||||||
import_status:
|
|
||||||
type: string
|
|
||||||
example: "finished"
|
|
||||||
enum:
|
|
||||||
- "draft"
|
|
||||||
- "pending"
|
|
||||||
- "finished"
|
|
||||||
- "errored"
|
|
||||||
- "skipped"
|
|
||||||
description: |
|
|
||||||
* `draft`: waiting for further modifications from the owner
|
|
||||||
* `pending`: waiting to be processed by the server
|
|
||||||
* `finished`: successfully processed by the server
|
|
||||||
* `errored`: couldn't be processed by the server (e.g because of a tagging issue)
|
|
||||||
* `skipped`: processed by the server but skipped, because considered as a duplicate of an existing upload
|
|
||||||
|
|
||||||
transcode_options:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- "ogg"
|
|
||||||
- "mp3"
|
|
||||||
|
|
||||||
tags:
|
|
||||||
type: array
|
|
||||||
description: A list of hashtags associated with a resource
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example: "Rock"
|
|
||||||
|
|
||||||
content_category:
|
|
||||||
type: "string"
|
|
||||||
description: Used to what kind of content is published in a channel
|
|
||||||
enum:
|
|
||||||
- music
|
|
||||||
- podcast
|
|
||||||
- other
|
|
|
@ -1,14 +1,18 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
SWAGGER_VERSION="4.1.3"
|
SWAGGER_VERSION="4.15.5"
|
||||||
TARGET_PATH=${TARGET_PATH-"swagger"}
|
TARGET_PATH=${TARGET_PATH-"swagger"}
|
||||||
|
|
||||||
rm -rf "$TARGET_PATH" /tmp/swagger-ui
|
rm -rf "$TARGET_PATH"
|
||||||
git clone --branch="v$SWAGGER_VERSION" --depth=1 "https://github.com/swagger-api/swagger-ui.git" /tmp/swagger-ui
|
tmpdir="$(mktemp -d)"
|
||||||
|
trap 'rm -rf "$tmpdir"' EXIT
|
||||||
|
|
||||||
mv /tmp/swagger-ui/dist "$TARGET_PATH"
|
pushd "$tmpdir"
|
||||||
|
wget "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v$SWAGGER_VERSION.tar.gz" -O swagger-ui.tgz
|
||||||
|
tar -xzf swagger-ui.tgz
|
||||||
|
popd
|
||||||
|
mv "$tmpdir/"*/dist "$TARGET_PATH"
|
||||||
cp schema.yml "$TARGET_PATH"
|
cp schema.yml "$TARGET_PATH"
|
||||||
cp -r api "$TARGET_PATH/api"
|
|
||||||
sed -i "s,https://petstore.swagger.io/v2/swagger.json,schema.yml,g" "$TARGET_PATH/index.html"
|
sed -i "s#https://petstore.swagger.io/v2/swagger.json#schema.yml#g" "$TARGET_PATH/swagger-initializer.js"
|
||||||
|
|
1781
docs/swagger.yml
1781
docs/swagger.yml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue