{"id":13402051,"url":"https://github.com/advplyr/audiobookshelf","last_synced_at":"2025-05-11T03:48:06.391Z","repository":{"id":36982706,"uuid":"397401267","full_name":"advplyr/audiobookshelf","owner":"advplyr","description":"Self-hosted audiobook and podcast server","archived":false,"fork":false,"pushed_at":"2025-05-10T21:56:33.000Z","size":40980,"stargazers_count":8677,"open_issues_count":691,"forks_count":584,"subscribers_count":56,"default_branch":"master","last_synced_at":"2025-05-11T03:47:47.667Z","etag":null,"topics":["audiobook-manager","audiobooks","audiobookshelf","podcasts","self-hosted"],"latest_commit_sha":null,"homepage":"https://audiobookshelf.org","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/advplyr.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-17T22:00:40.000Z","updated_at":"2025-05-11T03:36:06.000Z","dependencies_parsed_at":"2023-10-14T23:16:35.909Z","dependency_job_id":"29ef3b3e-f588-4365-ac72-8356f626738a","html_url":"https://github.com/advplyr/audiobookshelf","commit_stats":null,"previous_names":[],"tags_count":142,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advplyr%2Faudiobookshelf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advplyr%2Faudiobookshelf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advplyr%2Faudiobookshelf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advplyr%2Faudiobookshelf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/advplyr","download_url":"https://codeload.github.com/advplyr/audiobookshelf/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514559,"owners_count":21920334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audiobook-manager","audiobooks","audiobookshelf","podcasts","self-hosted"],"created_at":"2024-07-30T19:01:11.004Z","updated_at":"2025-05-11T03:48:06.371Z","avatar_url":"https://github.com/advplyr.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Install from Source","self-hosted","Apps","Multimedia","Media","置顶","📚 Learning \u0026 Resources","Table of Contents"],"sub_categories":["Home Server","MediaManagement","Media Servers","08、家庭与物联网","Media Management"],"readme":"# OpenAPI specification\n\nThis directory includes the OpenAPI spec for the ABS server. The spec is made up of a number of individual `yaml` files located here and in the subfolders, with `root.yaml` being the file that references all of the others. The files are organized to have the same hierarchy as the server source files. The full spec is bundled into one file in `openapi.json`.\n\nThe spec is linted and bundled using [`redocly-cli`](https://redocly.com/docs/cli/). This tool also generates HTML docs for the spec.\n\nThe tools created by [`pb33f`](https://pb33f.io/), specifically `vacuum` and `wiretap`, are also useful for linting and verification. These tools check for some other things, such as validating requests to and responses from the server.\n\n### Bundling the spec\n\nThe command used to bundle the spec into a `yaml` file is `redocly bundle root.yaml \u003e bundled.yaml`.\n\nThe `yq` tool is used to convert the `yaml` to a `json` using the `yq -p yaml -o json bundled.yaml \u003e openapi.json`.\n\n### Linting the spec\n\nThe command used to lint the spec is `redocly lint root.yaml`\n\nTo generate an HTML report using `vacuum`, you can use `vacuum html-report [file]` to generate `report.html` and view the report in your browser.\n\n### Generating documentation\n\nRedocly allows for creating a static HTML page to document the API. This is done by using `redocly build-docs [file]` and supports exploded specs.\n\n### Putting it all together\n\nThe full command that I run to bundle the spec and generate the documentation is:\n\n```\nredocly bundle root.yaml \u003e bundled.yaml \u0026\u0026 \\\nyq -p yaml -o json bundled.yaml \u003e openapi.json \u0026\u0026 \\\nredocly build-docs openapi.json\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvplyr%2Faudiobookshelf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadvplyr%2Faudiobookshelf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvplyr%2Faudiobookshelf/lists"}