feat(docs): update nodeinfo spec

Part-of: <https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/2609>
This commit is contained in:
Ciarán Ainsworth 2023-11-06 11:46:08 +00:00
parent 7ccb2d88f8
commit 3a5090a85c
3 changed files with 71 additions and 60 deletions

View File

@ -0,0 +1 @@
Updated the Nodeinfo 2 spec to address feedback from implementation.

View File

@ -55,12 +55,6 @@ The NodeInfo endpoint must contain all mandatory elements listed in the specific
`defaultUploadQuota` (Number) `defaultUploadQuota` (Number)
: The default upload quota (in megabytes) allowed for new users : The default upload quota (in megabytes) allowed for new users
`library.federationEnabled` (Boolean)
: Whether federation is enabled
`library.anonymousCanListen` (Boolean)
: Whether public endpoints require authentication
`supportedUploadExtensions` (Array\<String\>) `supportedUploadExtensions` (Array\<String\>)
: A list of file extensions enabled for upload : A list of file extensions enabled for upload
@ -76,28 +70,37 @@ The NodeInfo endpoint must contain all mandatory elements listed in the specific
`instanceSupportMessage` (String) `instanceSupportMessage` (String)
: The support message associated with the instance : The support message associated with the instance
`content.top_music_categories` (Array\<Object\>) `content.local` (Object)
: An object containing a summary of local content
`content.local.artists` (number)
: The number of artists associated with local uploads on the pod
`content.local.releases` (number)
: The number of albums or series associated with local uploads on the pod
`content.local.recordings` (number)
: The number of tracks or episodes associated with local uploads on the pod
`content.local.hoursOfContent` (number)
: The total number of hours of content associated with local uploads on the pod
`content.topMusicCategories` (Array\<Object\>)
: The top three music genres and the number of uploads tagged with them : The top three music genres and the number of uploads tagged with them
`content.top_podcast_categories` (Array\<Object\>) `content.topPodcastCategories` (Array\<Object\>)
: The top three podcast categories and the number of uploads tagged with them : The top three podcast categories and the number of uploads tagged with them
`instance_policy.moderation_policy` (String) `languages` (Array\<String\>)
: The moderation policy of the pod
`instance_policy.terms_of_service` (String)
: The terms of service of the pod
`instance_policy.languages` (Array\<String\>)
: The languages spoken by the pod administrators : The languages spoken by the pod administrators
`instance_policy.location` (String) `location` (String)
: The country the pod is located in : The country the pod is located in
`federation.follows_instances` (Number) `federation.followsInstances` (Number)
: The number of Funkwhale pods that the target pod follows : The number of Funkwhale pods that the target pod follows
`federation.following_instances` (Number) `federation.followingInstances` (Number)
: The number of Funkwhale pods that publicly follow the target pod : The number of Funkwhale pods that publicly follow the target pod
`features` (Array\<String\>) `features` (Array\<String\>)
@ -141,7 +144,7 @@ Example response:
}, },
"metadata": { "metadata": {
"actorId": "string", "actorId": "string",
"private": false, "private": true,
"shortDescription": "string", "shortDescription": "string",
"longDescription": "string", "longDescription": "string",
"rules": "string", "rules": "string",
@ -150,10 +153,6 @@ Example response:
"nodeName": "string", "nodeName": "string",
"banner": "string", "banner": "string",
"defaultUploadQuota": 0, "defaultUploadQuota": 0,
"library": {
"federationEnabled": true,
"anonymousCanListen": true
},
"supportedUploadExtensions": ["string"], "supportedUploadExtensions": ["string"],
"allowList": { "allowList": {
"enabled": true, "enabled": true,
@ -161,14 +160,16 @@ Example response:
}, },
"funkwhaleSupportMessageEnabled": true, "funkwhaleSupportMessageEnabled": true,
"instanceSupportMessage": "string", "instanceSupportMessage": "string",
"instance_policy": { "languages": ["string"],
"moderation_policy": "string", "location": "string",
"terms_of_service": "string",
"languages": ["string"],
"location": "string"
},
"content": { "content": {
"top_music_categories": [ "local": {
"artists": 1000,
"releases": 10000,
"recordings": 150000,
"hoursOfContent": 7500
},
"topMusicCategories": [
{ {
"rock": 1256 "rock": 1256
}, },
@ -179,7 +180,7 @@ Example response:
"classical": 308 "classical": 308
} }
], ],
"top_podcast_categories": [ "topPodcastCategories": [
{ {
"comedy": 12 "comedy": 12
}, },
@ -191,11 +192,18 @@ Example response:
} }
], ],
"federation": { "federation": {
"followed_instances": 0, "followedInstances": 0,
"following_instances": 0 "followingInstances": 0
} }
}, },
"features": ["channels", "podcasts", "collections", "audiobooks"] "features": [
"channels",
"podcasts",
"collections",
"audiobooks",
"federation",
"anonymousCanListen"
]
} }
} }
``` ```

View File

@ -470,13 +470,6 @@ components:
format: url format: url
defaultUploadQuota: defaultUploadQuota:
type: integer type: integer
library:
type: object
properties:
federationEnabled:
type: boolean
anonymousCanListen:
type: boolean
supportedUploadExtensions: supportedUploadExtensions:
type: array type: array
items: items:
@ -494,25 +487,32 @@ components:
type: boolean type: boolean
instanceSupportMessage: instanceSupportMessage:
type: string type: string
instance_policy: languages:
type: object type: array
properties: items:
moderation_policy: type: string
type: string location:
format: url type: string
terms_of_service:
type: string
format: url
languages:
type: array
items:
type: string
location:
type: string
content: content:
type: object type: object
properties: properties:
top_music_categories: local:
type: object
properties:
artists:
type: number
releases:
type: number
recordings:
type: number
hoursOfContent:
type: number
example:
artists: 1000
releases: 10000
recordings: 150000
hoursOfContent: 7500
topMusicCategories:
type: array type: array
items: items:
type: object type: object
@ -522,7 +522,7 @@ components:
- "rock": 1256 - "rock": 1256
- "jazz": 604 - "jazz": 604
- "classical": 308 - "classical": 308
top_podcast_categories: topPodcastCategories:
type: array type: array
items: items:
type: object type: object
@ -535,9 +535,9 @@ components:
federation: federation:
type: object type: object
properties: properties:
followed_instances: followedInstances:
type: integer type: integer
following_instances: followingInstances:
type: integer type: integer
features: features:
type: array type: array
@ -548,6 +548,8 @@ components:
- "podcasts" - "podcasts"
- "collections" - "collections"
- "audiobooks" - "audiobooks"
- "federation"
- "anonymousCanListen"
Error: Error:
type: object type: object
properties: properties: