ci: scan for broken links
This commit is contained in:
parent
983c7085f6
commit
eea77bc234
|
@ -105,6 +105,21 @@ review_docs:
|
||||||
- if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
|
- if: $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
|
||||||
when: manual
|
when: manual
|
||||||
|
|
||||||
|
find_broken_links:
|
||||||
|
stage: lint
|
||||||
|
needs: []
|
||||||
|
image:
|
||||||
|
name: lycheeverse/lychee
|
||||||
|
entrypoint: [""]
|
||||||
|
script:
|
||||||
|
- >
|
||||||
|
lychee
|
||||||
|
--exclude-all-private
|
||||||
|
--exclude-mail
|
||||||
|
--exclude 'demo\.funkwhale\.audio'
|
||||||
|
--exclude-path 'docs/_templates/'
|
||||||
|
-- .
|
||||||
|
|
||||||
changelog_snippet:
|
changelog_snippet:
|
||||||
interruptible: true
|
interruptible: true
|
||||||
image: alpine:3.17
|
image: alpine:3.17
|
||||||
|
|
|
@ -8,15 +8,15 @@ The Funkwhale software is the core of the community project. While we have a cor
|
||||||
|
|
||||||
Funkwhale's backend is written in [Python](https://www.python.org/) using [Django](https://www.djangoproject.com) and [Django REST framework](https://www.django-rest-framework.org/). Our web app is written in [Vue.js](https://vuejs.org/) and [Typescript](https://typescriptlang.org).
|
Funkwhale's backend is written in [Python](https://www.python.org/) using [Django](https://www.djangoproject.com) and [Django REST framework](https://www.django-rest-framework.org/). Our web app is written in [Vue.js](https://vuejs.org/) and [Typescript](https://typescriptlang.org).
|
||||||
|
|
||||||
Whether you're an experienced developer or you're just learning, check out our [developer guide](https://docs.funkwhale.audio/developer_documentation/index.html) to get started.
|
Whether you're an experienced developer or you're just learning, check out our [developer guide](https://docs.funkwhale.audio/developers/index.html) to get started.
|
||||||
|
|
||||||
## Document Funkwhale
|
## Document Funkwhale
|
||||||
|
|
||||||
Funkwhale is a large project with a lot of moving parts. To help users and developers alike, we need to keep our documentation up-to-date and readable. If you have a knack for explaining technical concepts or you've noticed a gap, check out our [documentation guide](https://docs.funkwhale.audio/contributor_documentation/documentation.html) to see how to get involved.
|
Funkwhale is a large project with a lot of moving parts. To help users and developers alike, we need to keep our documentation up-to-date and readable. If you have a knack for explaining technical concepts or you've noticed a gap, check out our [documentation guide](https://docs.funkwhale.audio/documentation/index.html) to see how to get involved.
|
||||||
|
|
||||||
## Translate Funkwhale
|
## Translate Funkwhale
|
||||||
|
|
||||||
All Funkwhale content is written in American English, but our community speaks languages from all over the world. If you'd like to see Funkwhale in your language, check out the [translation guide](https://docs.funkwhale.audio/contributor_documentation/translation.html) to see how you can help out.
|
All Funkwhale content is written in American English, but our community speaks languages from all over the world. If you'd like to see Funkwhale in your language, check out the [translation guide](https://docs.funkwhale.audio/translators.html) to see how you can help out.
|
||||||
|
|
||||||
## Other contributions
|
## Other contributions
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ Want to help make Funkwhale even better? We welcome contributions from across th
|
||||||
|
|
||||||
You can find contribution information in our [documentation hub](https://docs.funkwhale.audio).
|
You can find contribution information in our [documentation hub](https://docs.funkwhale.audio).
|
||||||
|
|
||||||
- [Developer guides](https://docs.funkwhale.audio/developer_documentation/index.html)
|
- [Developer guides](https://docs.funkwhale.audio/developers/index.html)
|
||||||
- [Contributor guides](https://docs.funkwhale.audio/contributor_documentation/index.html)
|
- [Contributor guides](https://docs.funkwhale.audio/contributing.html)
|
||||||
|
|
||||||
## Get help
|
## Get help
|
||||||
|
|
||||||
|
|
|
@ -9,13 +9,13 @@ Funkwhale uses the OAuth [authorization grant flow](https://tools.ietf.org/html/
|
||||||
To authenticate with the Funkwhale API:
|
To authenticate with the Funkwhale API:
|
||||||
|
|
||||||
1. Create an application by sending a `POST` request to `api/v1/oauth/apps`. Include your scopes and redirect URI (use `urn:ietf:wg:oauth:2.0:oob`
|
1. Create an application by sending a `POST` request to `api/v1/oauth/apps`. Include your scopes and redirect URI (use `urn:ietf:wg:oauth:2.0:oob`
|
||||||
to get an authorization code you can copy)
|
to get an authorization code you can copy)
|
||||||
2. Send an [authorization request](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2) to the `/authorize` endpoint to receive an authorization code
|
2. Send an [authorization request](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2) to the `/authorize` endpoint to receive an authorization code
|
||||||
3. [Request an access token](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3) from `/api/v1/oauth/token`
|
3. [Request an access token](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3) from `/api/v1/oauth/token`
|
||||||
4. Use your access token to authenticate your calls with the following format: `Authorization: Bearer <token>`
|
4. Use your access token to authenticate your calls with the following format: `Authorization: Bearer <token>`
|
||||||
5. Refresh your access token by sending a refresh request to `/api/v1/oauth/token`
|
5. Refresh your access token by sending a refresh request to `/api/v1/oauth/token`
|
||||||
|
|
||||||
For more detailed instructions, see [our API authentication documentation](https://docs.funkwhale.audio/developer_documentation/api/authentication.html).
|
For more detailed instructions, see [our API authentication documentation](https://docs.funkwhale.audio/developers/authentication.html).
|
||||||
|
|
||||||
## Application token authentication
|
## Application token authentication
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ Each API call returns HTTP headers to pass the following information:
|
||||||
- How many more requests in the scope can be made within the rate-limit timeframe (`X-RateLimit-Remaining`)
|
- How many more requests in the scope can be made within the rate-limit timeframe (`X-RateLimit-Remaining`)
|
||||||
- How much time does the client need to wait to send another request (`Retry-After`)
|
- How much time does the client need to wait to send another request (`Retry-After`)
|
||||||
|
|
||||||
For more information, check our [rate limit documentation](https://docs.funkwhale.audio/developer_documentation/api/rate-limit.html)
|
For more information, check our [rate limit documentation](https://docs.funkwhale.audio/admin/configuration.html#api-configuration)
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
For more information about API usage, refer to [our API documentation](https://docs.funkwhale.audio/developer_documentation/api/index.html).
|
For more information about API usage, refer to [our API documentation](https://docs.funkwhale.audio/api.html).
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Add CI broken links checker
|
|
@ -1,6 +1,6 @@
|
||||||
# Upgrade your Debian Funkwhale installation
|
# Upgrade your Debian Funkwhale installation
|
||||||
|
|
||||||
If you installed Funkwhale following the [Debian guide](../installation_docs/debian), follow these steps to upgrade.
|
If you installed Funkwhale following the [Debian guide](../installation_docs/debian.md), follow these steps to upgrade.
|
||||||
|
|
||||||
:::{dropdown} Upgrading to a new version of Python
|
:::{dropdown} Upgrading to a new version of Python
|
||||||
:icon: alert
|
:icon: alert
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Upgrade your Docker Funkwhale installation
|
# Upgrade your Docker Funkwhale installation
|
||||||
|
|
||||||
If you installed Funkwhale following the [Docker guide](../installation_docs/docker), follow these steps to upgrade.
|
If you installed Funkwhale following the [Docker guide](../installation_docs/docker.md), follow these steps to upgrade.
|
||||||
|
|
||||||
## Upgrade Funkwhale
|
## Upgrade Funkwhale
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Upgrade using the quick install script
|
# Upgrade using the quick install script
|
||||||
|
|
||||||
If you installed Funkwhale using the [quick install script](../installation_docs/quick_install), upgrading your instance is as simple as running the following command on your server:
|
If you installed Funkwhale using the [quick install script](../installation_docs/quick_install.md), upgrading your instance is as simple as running the following command on your server:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo sh -c "$(curl -sSL https://get.funkwhale.audio/upgrade.sh)".
|
sudo sh -c "$(curl -sSL https://get.funkwhale.audio/upgrade.sh)".
|
||||||
|
|
|
@ -28,7 +28,7 @@ info:
|
||||||
4. Use your access token to authenticate your calls with the following format: `Authorization: Bearer <token>`
|
4. Use your access token to authenticate your calls with the following format: `Authorization: Bearer <token>`
|
||||||
5. Refresh your access token by sending a refresh request to `/api/v1/oauth/token`
|
5. Refresh your access token by sending a refresh request to `/api/v1/oauth/token`
|
||||||
|
|
||||||
For more detailed instructions, see [our API authentication documentation](https://docs.funkwhale.audio/developer_documentation/api/authentication.html).
|
For more detailed instructions, see [our API authentication documentation](https://docs.funkwhale.audio/developers/authentication.html).
|
||||||
|
|
||||||
## Application token authentication
|
## Application token authentication
|
||||||
|
|
||||||
|
@ -47,11 +47,11 @@ info:
|
||||||
- How many more requests in the scope can be made within the rate-limit timeframe (`X-RateLimit-Remaining`)
|
- How many more requests in the scope can be made within the rate-limit timeframe (`X-RateLimit-Remaining`)
|
||||||
- How much time does the client need to wait to send another request (`Retry-After`)
|
- How much time does the client need to wait to send another request (`Retry-After`)
|
||||||
|
|
||||||
For more information, check our [rate limit documentation](https://docs.funkwhale.audio/developer_documentation/api/rate-limit.html)
|
For more information, check our [rate limit documentation](https://docs.funkwhale.audio/admin/configuration.html#api-configuration)
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
For more information about API usage, refer to [our API documentation](https://docs.funkwhale.audio/developer_documentation/api/index.html).
|
For more information about API usage, refer to [our API documentation](https://docs.funkwhale.audio/api.html).
|
||||||
|
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
title: "Funkwhale API"
|
title: "Funkwhale API"
|
||||||
|
@ -69,9 +69,9 @@ servers:
|
||||||
description: Your Funkwhale Domain
|
description: Your Funkwhale Domain
|
||||||
protocol:
|
protocol:
|
||||||
enum:
|
enum:
|
||||||
- 'http'
|
- "http"
|
||||||
- 'https'
|
- "https"
|
||||||
default: 'https'
|
default: "https"
|
||||||
|
|
||||||
components:
|
components:
|
||||||
responses:
|
responses:
|
||||||
|
@ -154,8 +154,7 @@ paths:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- "Auth and security"
|
- "Auth and security"
|
||||||
summary:
|
summary: Register an OAuth application
|
||||||
Register an OAuth application
|
|
||||||
security: []
|
security: []
|
||||||
responses:
|
responses:
|
||||||
201:
|
201:
|
||||||
|
@ -189,8 +188,7 @@ paths:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- "Auth and security"
|
- "Auth and security"
|
||||||
summary:
|
summary: Request an OAuth bearer token in exchange of an authorization_code or a refresh_token
|
||||||
Request an OAuth bearer token in exchange of an authorization_code or a refresh_token
|
|
||||||
security: []
|
security: []
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
|
@ -345,7 +343,6 @@ paths:
|
||||||
- oauth2:
|
- oauth2:
|
||||||
- "read:libraries"
|
- "read:libraries"
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
- $ref: "./api/parameters.yml#/Search"
|
- $ref: "./api/parameters.yml#/Search"
|
||||||
- $ref: "./api/parameters.yml#/ArtistOrdering"
|
- $ref: "./api/parameters.yml#/ArtistOrdering"
|
||||||
- $ref: "./api/parameters.yml#/Playable"
|
- $ref: "./api/parameters.yml#/Playable"
|
||||||
|
@ -526,7 +523,6 @@ paths:
|
||||||
- oauth2:
|
- oauth2:
|
||||||
- "read:libraries"
|
- "read:libraries"
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
- $ref: "./api/parameters.yml#/Search"
|
- $ref: "./api/parameters.yml#/Search"
|
||||||
- name: "artist"
|
- name: "artist"
|
||||||
in: "query"
|
in: "query"
|
||||||
|
@ -694,7 +690,7 @@ paths:
|
||||||
200:
|
200:
|
||||||
description: ""
|
description: ""
|
||||||
content:
|
content:
|
||||||
'*/*':
|
"*/*":
|
||||||
schema:
|
schema:
|
||||||
description: "Audio file, as binary data"
|
description: "Audio file, as binary data"
|
||||||
type: string
|
type: string
|
||||||
|
@ -790,8 +786,7 @@ paths:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- "Uploads and audio content"
|
- "Uploads and audio content"
|
||||||
description:
|
description: Create a new library
|
||||||
Create a new library
|
|
||||||
responses:
|
responses:
|
||||||
201:
|
201:
|
||||||
$ref: "#/components/responses/201"
|
$ref: "#/components/responses/201"
|
||||||
|
@ -1075,7 +1070,6 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- "Uploads and audio content"
|
- "Uploads and audio content"
|
||||||
parameters:
|
parameters:
|
||||||
|
|
||||||
- $ref: "./api/parameters.yml#/Search"
|
- $ref: "./api/parameters.yml#/Search"
|
||||||
- $ref: "./api/parameters.yml#/PageNumber"
|
- $ref: "./api/parameters.yml#/PageNumber"
|
||||||
- $ref: "./api/parameters.yml#/PageSize"
|
- $ref: "./api/parameters.yml#/PageSize"
|
||||||
|
@ -1346,7 +1340,6 @@ paths:
|
||||||
204:
|
204:
|
||||||
$ref: "#/components/responses/204"
|
$ref: "#/components/responses/204"
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# User activity #
|
# User activity #
|
||||||
#################
|
#################
|
||||||
|
@ -1406,8 +1399,7 @@ paths:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- "Other"
|
- "Other"
|
||||||
description:
|
description: Search artists, tracks, albums and other resources
|
||||||
Search artists, tracks, albums and other resources
|
|
||||||
parameters:
|
parameters:
|
||||||
- $ref: "./api/parameters.yml#/Search"
|
- $ref: "./api/parameters.yml#/Search"
|
||||||
responses:
|
responses:
|
||||||
|
@ -1420,8 +1412,7 @@ paths:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- "Other"
|
- "Other"
|
||||||
description:
|
description: Retrieve pod-level configuration such as description or max playlist size
|
||||||
Retrieve pod-level configuration such as description or max playlist size
|
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: ""
|
description: ""
|
||||||
|
@ -1462,13 +1453,11 @@ paths:
|
||||||
type: string
|
type: string
|
||||||
description: "Input type of the setting"
|
description: "Input type of the setting"
|
||||||
|
|
||||||
|
|
||||||
/api/v1/attachments/:
|
/api/v1/attachments/:
|
||||||
post:
|
post:
|
||||||
tags:
|
tags:
|
||||||
- "Other"
|
- "Other"
|
||||||
description:
|
description: Upload a new file as an attachment that can be later associated with other objects.
|
||||||
Upload a new file as an attachment that can be later associated with other objects.
|
|
||||||
responses:
|
responses:
|
||||||
201:
|
201:
|
||||||
$ref: "#/components/responses/201"
|
$ref: "#/components/responses/201"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
You can only edit content in libraries you own. {term}`Pod` admins can edit all content.
|
You can only edit content in libraries you own. {term}`Pod` admins can edit all content.
|
||||||
```
|
```
|
||||||
|
|
||||||
You can edit library content after you have uploaded it. This is helpful if the content isn't [tagged](tag_music).
|
You can edit library content after you have uploaded it. This is helpful if the content isn't [tagged](./tag_music.md).
|
||||||
|
|
||||||
```{contents}
|
```{contents}
|
||||||
:local:
|
:local:
|
||||||
|
|
|
@ -31,4 +31,4 @@ If you don't want to use Subsonic any more, you can disable access. This stops a
|
||||||
:::
|
:::
|
||||||
::::
|
::::
|
||||||
|
|
||||||
You're done! Subsonic apps can no longer access your account. You can re-enable the API at any time by [requesting a new password](subsonic_password).
|
You're done! Subsonic apps can no longer access your account. You can re-enable the API at any time by [requesting a new password](./subsonic_password.md).
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
<meta name="generator" content="Funkwhale">
|
<meta name="generator" content="Funkwhale">
|
||||||
|
|
||||||
<link rel="icon" href="favicon.png">
|
<link rel="icon" href="favicon.ico">
|
||||||
|
|
||||||
<title>Funkwhale Widget</title>
|
<title>Funkwhale Widget</title>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue