{"info":{"description":"Read-only, pre-generated score metadata. MusicXML files download directly from the public CDN; metadata and redirects do not query the catalogue database. Production requires no API key; staging is protected. Scanning and file uploads run locally in the browser.","title":"TuneViva Practice API","version":"2.0.0"},"openapi":"3.1.0","paths":{"/api/practice":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object"}}},"description":"API name and documentation, openapi and status URLs"}},"summary":"API discovery links"}},"/api/practice/health":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"status":{"const":"ok"}},"required":["status"],"type":"object"}}},"description":"Validated static export loaded"},"503":{"description":"Static export unavailable"}},"summary":"Check that the validated static score export is loaded (not external file storage)"},"head":{"responses":{"200":{"description":"Validated static export loaded"},"503":{"description":"Static export unavailable"}},"summary":"Check that the validated static score export is loaded (not external file storage)"}},"/api/practice/{id}":{"get":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"musicxml":{"description":"Absolute HTTPS URL on files.tuneviva.com. Fetch directly with no credentials.","format":"uri","type":"string"},"scoreURL":{"description":"Canonical same-origin score page path.","type":"string"},"title":{"type":"string"}},"required":["title","musicxml","scoreURL"],"type":"object"}}},"description":"Practice score metadata"},"404":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Get practice score metadata"},"head":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Practice score metadata"},"404":{"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Get practice score metadata headers"}},"/api/practice/{id}/file":{"get":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"307":{"description":"Follow Location to download binary compressed MusicXML directly from the CDN.","headers":{"Location":{"description":"HTTPS files.tuneviva.com URL","schema":{"format":"uri","type":"string"}}}},"404":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Redirect to the public CDN MusicXML file"},"head":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"307":{"description":"Follow Location to download binary compressed MusicXML directly from the CDN.","headers":{"Location":{"description":"HTTPS files.tuneviva.com URL","schema":{"format":"uri","type":"string"}}}},"404":{"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Redirect to the public CDN MusicXML file"}},"/api/practice/{id}/file.mxl":{"get":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"307":{"description":"Follow Location to download binary compressed MusicXML directly from the CDN.","headers":{"Location":{"description":"HTTPS files.tuneviva.com URL","schema":{"format":"uri","type":"string"}}}},"404":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Redirect to the public CDN MusicXML file"},"head":{"parameters":[{"description":"Numeric score ID from a TuneViva score URL.","in":"path","name":"id","required":true,"schema":{"minimum":1,"type":"integer"}}],"responses":{"307":{"description":"Follow Location to download binary compressed MusicXML directly from the CDN.","headers":{"Location":{"description":"HTTPS files.tuneviva.com URL","schema":{"format":"uri","type":"string"}}}},"404":{"description":"Score unavailable or MusicXML absent"},"503":{"description":"Static score metadata unavailable"}},"summary":"Redirect to the public CDN MusicXML file"}}},"security":[],"servers":[{"url":"https://tuneviva.com"}]}
