MoosicBox Music API API
API models and endpoint implementations for music API management.
Overview
The MoosicBox Music API API package provides:
- API Models: REST API models for music API management
- Authentication Models: Authentication method definitions and values
- API Conversion: Convert MusicApi instances to API-compatible models
- Feature Integration: Optional API endpoint implementations
Models
ApiMusicApi
- Service Info: ID, name, and display information
- Authentication Status: Login status and authentication methods
- Scan Support: Scanning capabilities and status
- Feature Flags: Supported operations and configurations
Authentication
- AuthMethod: Available authentication methods (UsernamePassword, Poll)
- AuthValues: Authentication credential structures
- Login Status: Real-time authentication status checking
Features
API Model Conversion
- MusicApi to ApiMusicApi: Convert service instances to API models
- Authentication Integration: Include authentication status and methods
- Scan Status: Include scanning capabilities and current status
- Async Operations: Async conversion with error handling
REST API Endpoints
- GET /: List enabled music APIs with pagination
- POST /auth: Authenticate a music API with credentials
- POST /scan: Trigger a scan for a specific music API
- POST /scan-origins: Enable scan origin for a music API
- GET /search: Search across music APIs
Authentication Support
- Username/Password: Traditional credential-based authentication
- Poll Authentication: OAuth-style polling authentication
- Status Checking: Real-time authentication status verification
Installation
Add this to your Cargo.toml:
[]
= { = "../music_api/api" }
Enable API endpoints:
[]
= { = "../music_api/api", = ["api"] }
Enable authentication features:
[]
= { = "../music_api/api", = ["auth-username-password", "auth-poll"] }
Usage
API Model Conversion
use convert_to_api_music_api;
use MusicApi;
// Convert MusicApi to API model
let api_model = convert_to_api_music_api.await?;
println!;
println!;
println!;
Authentication Models
use ;
// Check authentication method
match api_model.auth_method
// Provide authentication values
let auth_values = UsernamePassword ;
Service Information
// Access service information
println!;
println!;
println!;
println!;
println!;
API Endpoints (when api feature enabled)
use ;
use bind_services;
// Bind API endpoints to your Actix-web application
new
.bind?
.run
.await
Available endpoints:
GET /music-apis- List music APIs with paginationPOST /music-apis/auth?apiSource=<source>- Authenticate a music APIPOST /music-apis/scan?apiSource=<source>- Scan a music APIPOST /music-apis/scan-origins?apiSource=<source>- Enable scan originGET /music-apis/search?query=<query>&apiSource=<source>- Search APIs
Feature Flags
api: Enable API endpoint implementations (default)db: Enable database features (default)auth-username-password: Enable username/password authenticationauth-poll: Enable polling-based authenticationopenapi: Enable OpenAPI schema generation (default)
Dependencies
Core dependencies:
- moosicbox_music_api: Core music API traits and interfaces
- moosicbox_paging: Pagination utilities
- moosicbox_profiles: Profile management with API features
- actix-web: Web framework for REST API endpoints
- serde: Serialization and deserialization
- log: Logging functionality
Optional dependencies:
- futures: Async utilities (when
apifeature enabled) - moosicbox_music_models: Music data models (when
apifeature enabled) - utoipa: OpenAPI schema generation (when
openapifeature enabled)
Integration
This package is designed for:
- REST API Development: API model definitions for endpoints
- Authentication Systems: Authentication method handling
- Service Management: Music service configuration and status
- API Documentation: OpenAPI schema generation