{"name":"Sonotone Zone API","version":"1","base_url":"https://api.sonotone.zone","documentation":{"html":"https://api.sonotone.zone/","accept":"text/html"},"openapi":{"json":"https://api.sonotone.zone/openapi.json","version":"3.1.0"},"health":{"method":"GET","path":"/up"},"endpoints":[{"method":"GET","path":"/v1/albums","description":"Paginated album list","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/albums/recent","description":"10 most recent albums","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/albums/:id","description":"Album by slug or numeric id","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/bands","description":"Paginated band list","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/bands/:id","description":"Band by slug or numeric id","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/bands/:id/albums","description":"Albums for a band","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/labels","description":"Paginated label list","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/labels/:id","description":"Label by slug or numeric id","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/labels/:id/albums","description":"Albums for a label","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/categories","description":"Paginated category list","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/categories/:id","description":"Category with up to 20 albums","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/categories/:id/albums","description":"Albums for a category","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/media","description":"Paginated media format list","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/media/:id","description":"Media format by slug or id","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/media/:id/albums","description":"Albums for a media format","auth":"Cloudflare Access Service Token","phase":1},{"method":"GET","path":"/v1/stats","description":"Catalogue aggregations","auth":"Cloudflare Access Service Token","phase":1}],"admin":{"path":"/admin","description":"Admin JSON API (Phase 2) and React SPA (Phase 3)","auth":"Cloudflare Access IdP","phase":3,"spa":{"accept":"text/html","description":"Browser navigation to /admin/* with Accept: text/html serves the admin SPA shell"},"endpoints":[{"method":"GET","path":"/admin/dashboard","description":"Dashboard KPIs and recent activity","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/albums","description":"Paginated Album list","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/albums/:id","description":"Album by slug or numeric id","auth":"Cloudflare Access IdP","phase":2},{"method":"POST","path":"/admin/albums","description":"Create album","auth":"Cloudflare Access IdP","phase":2},{"method":"PATCH","path":"/admin/albums/:id","description":"Update album","auth":"Cloudflare Access IdP","phase":2},{"method":"DELETE","path":"/admin/albums/:id","description":"Delete album","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/bands","description":"Paginated Band list","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/bands/:id","description":"Band by slug or numeric id","auth":"Cloudflare Access IdP","phase":2},{"method":"POST","path":"/admin/bands","description":"Create band","auth":"Cloudflare Access IdP","phase":2},{"method":"PATCH","path":"/admin/bands/:id","description":"Update band","auth":"Cloudflare Access IdP","phase":2},{"method":"DELETE","path":"/admin/bands/:id","description":"Delete band","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/labels","description":"Paginated Label list","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/labels/:id","description":"Label by slug or numeric id","auth":"Cloudflare Access IdP","phase":2},{"method":"POST","path":"/admin/labels","description":"Create label","auth":"Cloudflare Access IdP","phase":2},{"method":"PATCH","path":"/admin/labels/:id","description":"Update label","auth":"Cloudflare Access IdP","phase":2},{"method":"DELETE","path":"/admin/labels/:id","description":"Delete label","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/categories","description":"Paginated Category list","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/categories/:id","description":"Category by slug or numeric id","auth":"Cloudflare Access IdP","phase":2},{"method":"POST","path":"/admin/categories","description":"Create category","auth":"Cloudflare Access IdP","phase":2},{"method":"PATCH","path":"/admin/categories/:id","description":"Update category","auth":"Cloudflare Access IdP","phase":2},{"method":"DELETE","path":"/admin/categories/:id","description":"Delete category","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/media","description":"Paginated Medium list","auth":"Cloudflare Access IdP","phase":2},{"method":"GET","path":"/admin/media/:id","description":"Medium by slug or numeric id","auth":"Cloudflare Access IdP","phase":2},{"method":"POST","path":"/admin/media","description":"Create medium","auth":"Cloudflare Access IdP","phase":2},{"method":"PATCH","path":"/admin/media/:id","description":"Update medium","auth":"Cloudflare Access IdP","phase":2},{"method":"DELETE","path":"/admin/media/:id","description":"Delete medium","auth":"Cloudflare Access IdP","phase":2}]}}