Implemented the Services and Database GET endpoints (#2)

This PR contains the work done to include the define the information sections of the `OpenAPI` specification document and all the `GET` endpoints of the _Service_ and _Database_ categories.

The following endpoints have been defined in the document, and also tested manually with `Swift`:
* GET `/`
* GET `/artists/{artist_id}`
* GET `/artists/{artist_id}/releases`
* GET `/labels/{label_id}`
* GET `/labels/{label_id}/releases`
* GET `/masters/{master_id}`
* GET `/masters/{master_id}/versions`
* GET `/releases/{release_id}`
* GET `/releases/{release_id}/rating`
* GET `/releases/{release_id}/rating/{username}`
* GET `/releases/{release_id}/stats`
* GET `/database/search`

In addition, a first version of the _Github Pages_ documentation has been generated from the `DocC` documentation catalog, and the generated Swift code from the `openapi.yaml` file.

Reviewed-on: #2
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #2.
This commit is contained in:
2025-10-09 23:51:39 +00:00
committed by Javier Cicchelli
parent 75251d9f9a
commit 428eedd89d
3878 changed files with 6102 additions and 1 deletions
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"kind":"article","hierarchy":{"paths":[["doc:\/\/DiscogsService\/documentation\/DiscogsService","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input"]]},"variants":[{"paths":["\/documentation\/discogsservice\/operations\/getmasterversions\/input\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"topicSections":[{"title":"Operators","identifiers":["doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/!=(_:_:)"],"generated":true,"anchor":"Operators"}],"identifier":{"url":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"role":"collectionGroup","title":"Equatable Implementations","modules":[{"name":"DiscogsService"}],"roleHeading":"API Collection"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://DiscogsService/documentation/DiscogsService/Operations":{"navigatorTitle":[{"kind":"identifier","text":"Operations"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Operations"}],"url":"\/documentation\/discogsservice\/operations","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","abstract":[{"text":"API operations, with input and output types, generated from ","type":"text"},{"code":"#\/paths","type":"codeVoice"},{"text":" in the OpenAPI document.","type":"text"}],"title":"Operations"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input":{"navigatorTitle":[{"kind":"identifier","text":"Input"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Input"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","abstract":[],"title":"Operations.getMasterVersions.Input"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions":{"navigatorTitle":[{"kind":"identifier","text":"getMasterVersions"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"getMasterVersions"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","abstract":[{"type":"text","text":"Get information about the versions of a master release."}],"title":"Operations.getMasterVersions"},"doc://DiscogsService/documentation/DiscogsService":{"url":"\/documentation\/discogsservice","abstract":[],"identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService","kind":"symbol","role":"collection","type":"topic","title":"DiscogsService"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"kind":"text","text":"("},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"kind":"typeIdentifier","text":"Self"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/!=(_:_:)","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/!=(_:_:)","abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"title":"!=(_:_:)"}}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"metadata":{"title":"Equatable Implementations","roleHeading":"API Collection","role":"collectionGroup","modules":[{"name":"DiscogsService"}]},"topicSections":[{"identifiers":["doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Headers-swift.struct\/!=(_:_:)"],"generated":true,"anchor":"Operators","title":"Operators"}],"hierarchy":{"paths":[["doc:\/\/DiscogsService\/documentation\/DiscogsService","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Headers-swift.struct"]]},"variants":[{"paths":["\/documentation\/discogsservice\/operations\/getmasterversions\/input\/headers-swift.struct\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Headers-swift.struct\/Equatable-Implementations"},"kind":"article","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"references":{"doc://DiscogsService/documentation/DiscogsService":{"url":"\/documentation\/discogsservice","abstract":[],"identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService","kind":"symbol","role":"collection","type":"topic","title":"DiscogsService"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Headers-swift.struct":{"navigatorTitle":[{"kind":"identifier","text":"Headers"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Headers"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/headers-swift.struct","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Headers-swift.struct","abstract":[],"title":"Operations.getMasterVersions.Input.Headers"},"doc://DiscogsService/documentation/DiscogsService/Operations":{"navigatorTitle":[{"kind":"identifier","text":"Operations"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Operations"}],"url":"\/documentation\/discogsservice\/operations","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","abstract":[{"text":"API operations, with input and output types, generated from ","type":"text"},{"code":"#\/paths","type":"codeVoice"},{"text":" in the OpenAPI document.","type":"text"}],"title":"Operations"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input":{"navigatorTitle":[{"kind":"identifier","text":"Input"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Input"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","abstract":[],"title":"Operations.getMasterVersions.Input"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions":{"navigatorTitle":[{"kind":"identifier","text":"getMasterVersions"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"getMasterVersions"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","abstract":[{"type":"text","text":"Get information about the versions of a master release."}],"title":"Operations.getMasterVersions"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Headers-swift.struct/!=(_:_:)":{"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/headers-swift.struct\/!=(_:_:)","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Headers-swift.struct\/!=(_:_:)","abstract":[{"text":"Returns a Boolean value indicating whether two values are not equal.","type":"text"}],"title":"!=(_:_:)"}}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"hierarchy":{"paths":[["doc:\/\/DiscogsService\/documentation\/DiscogsService","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Path-swift.struct"]]},"identifier":{"url":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Path-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"identifiers":["doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Path-swift.struct\/!=(_:_:)"],"anchor":"Operators","title":"Operators","generated":true}],"variants":[{"paths":["\/documentation\/discogsservice\/operations\/getmasterversions\/input\/path-swift.struct\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"article","schemaVersion":{"patch":0,"major":0,"minor":3},"sections":[],"metadata":{"roleHeading":"API Collection","modules":[{"name":"DiscogsService"}],"role":"collectionGroup","title":"Equatable Implementations"},"references":{"doc://DiscogsService/documentation/DiscogsService/Operations":{"navigatorTitle":[{"kind":"identifier","text":"Operations"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Operations"}],"url":"\/documentation\/discogsservice\/operations","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","abstract":[{"text":"API operations, with input and output types, generated from ","type":"text"},{"code":"#\/paths","type":"codeVoice"},{"text":" in the OpenAPI document.","type":"text"}],"title":"Operations"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions":{"navigatorTitle":[{"kind":"identifier","text":"getMasterVersions"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"getMasterVersions"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","abstract":[{"type":"text","text":"Get information about the versions of a master release."}],"title":"Operations.getMasterVersions"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Path-swift.struct":{"navigatorTitle":[{"kind":"identifier","text":"Path"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"Path","kind":"identifier"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/path-swift.struct","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Path-swift.struct","abstract":[],"title":"Operations.getMasterVersions.Input.Path"},"doc://DiscogsService/documentation/DiscogsService":{"url":"\/documentation\/discogsservice","abstract":[],"identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService","kind":"symbol","role":"collection","type":"topic","title":"DiscogsService"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input":{"navigatorTitle":[{"kind":"identifier","text":"Input"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Input"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","abstract":[],"title":"Operations.getMasterVersions.Input"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Path-swift.struct/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/path-swift.struct\/!=(_:_:)","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Path-swift.struct\/!=(_:_:)","title":"!=(_:_:)","kind":"symbol","role":"symbol","type":"topic","abstract":[{"text":"Returns a Boolean value indicating whether two values are not equal.","type":"text"}]}}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{"schemaVersion":{"major":0,"minor":3,"patch":0},"variants":[{"paths":["\/documentation\/discogsservice\/operations\/getmasterversions\/input\/query-swift.struct\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/DiscogsService\/documentation\/DiscogsService","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Query-swift.struct"]]},"identifier":{"url":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Query-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"kind":"article","sections":[],"topicSections":[{"identifiers":["doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Query-swift.struct\/!=(_:_:)"],"anchor":"Operators","title":"Operators","generated":true}],"metadata":{"modules":[{"name":"DiscogsService"}],"roleHeading":"API Collection","role":"collectionGroup","title":"Equatable Implementations"},"references":{"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions":{"navigatorTitle":[{"kind":"identifier","text":"getMasterVersions"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"getMasterVersions"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions","abstract":[{"type":"text","text":"Get information about the versions of a master release."}],"title":"Operations.getMasterVersions"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Query-swift.struct":{"navigatorTitle":[{"kind":"identifier","text":"Query"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Query"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/query-swift.struct","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Query-swift.struct","abstract":[],"title":"Operations.getMasterVersions.Input.Query"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input":{"navigatorTitle":[{"kind":"identifier","text":"Input"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Input"}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input","abstract":[],"title":"Operations.getMasterVersions.Input"},"doc://DiscogsService/documentation/DiscogsService/Operations/getMasterVersions/Input/Query-swift.struct/!=(_:_:)":{"kind":"symbol","title":"!=(_:_:)","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations\/getMasterVersions\/Input\/Query-swift.struct\/!=(_:_:)","abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"url":"\/documentation\/discogsservice\/operations\/getmasterversions\/input\/query-swift.struct\/!=(_:_:)","type":"topic","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"role":"symbol"},"doc://DiscogsService/documentation/DiscogsService":{"url":"\/documentation\/discogsservice","abstract":[],"identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService","kind":"symbol","role":"collection","type":"topic","title":"DiscogsService"},"doc://DiscogsService/documentation/DiscogsService/Operations":{"navigatorTitle":[{"kind":"identifier","text":"Operations"}],"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"Operations"}],"url":"\/documentation\/discogsservice\/operations","role":"symbol","type":"topic","kind":"symbol","identifier":"doc:\/\/DiscogsService\/documentation\/DiscogsService\/Operations","abstract":[{"text":"API operations, with input and output types, generated from ","type":"text"},{"code":"#\/paths","type":"codeVoice"},{"text":" in the OpenAPI document.","type":"text"}],"title":"Operations"}}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long