Based on real device testing, the /trackInfo endpoint returns
'AllegroWebserver timeout' errors despite being documented in the
official Bose SoundTouch Web API v1.0 specification.
## Changes
- Updated API coverage from 89% to 84% (16/19 functional endpoints)
- Marked /trackInfo as ❌ Non-functional in all documentation
- Added warning comments to GetTrackInfo() method
- Updated CLI command with warning message
- Recommend using /now_playing instead for track information
## Real Device Evidence
- Device: SoundTouch at 192.168.178.28:8090
- Error: 'AllegroWebserver timeout: /trackInfo'
- Status: Endpoint documented but not working on hardware
This reflects the reality that some officially documented endpoints
may not function properly on actual devices, emphasizing the importance
of real hardware testing in API implementation.
Implements the remaining zone slave management endpoints from the official
Bose SoundTouch Web API v1.0 specification, bringing API coverage to 89%.
## New Features
### Client Methods
- AddZoneSlave(masterID, slaveID, slaveIP) - Add individual device to zone
- AddZoneSlaveByDeviceID(masterID, slaveID) - Add device by ID only
- RemoveZoneSlave(masterID, slaveID, slaveIP) - Remove individual device
- RemoveZoneSlaveByDeviceID(masterID, slaveID) - Remove device by ID only
### Models
- ZoneSlaveRequest - Request structure for slave operations
- ZoneSlaveEntry - Individual slave entry with IP address support
- Complete XML marshaling/unmarshaling with proper omitempty handling
- Comprehensive validation and error handling
### CLI Commands
- zone add-slave --master ID --slave ID [--slave-ip IP]
- zone remove-slave --master ID --slave ID [--slave-ip IP]
## Implementation Details
- Follows official API specification exactly (POST /addZoneSlave, /removeZoneSlave)
- Supports both device ID + IP and device ID only operations
- Comprehensive input validation (IP addresses, device ID conflicts)
- Proper XML formatting with omitempty for optional IP addresses
- Extensive test coverage (580+ lines of tests)
- Integration with existing high-level zone management API
## Testing
- 200+ new test cases covering all functionality
- Complete model validation and XML marshaling tests
- HTTP client integration tests with mock servers
- Error handling and edge case coverage
- Network error simulation tests
## Documentation Updates
- Updated API coverage from 84% to 89% (17/19 endpoints)
- Comprehensive API coverage analysis document
- Updated README.md with new endpoint status
- Added practical usage examples
- CLI help documentation
## Compatibility
- Maintains full backward compatibility
- Complements existing high-level zone API
- Users can choose between low-level official API or enhanced high-level API
- No breaking changes to existing functionality
This implementation provides both the exact official API endpoints and
enhanced high-level zone management, giving users maximum flexibility
for zone operations while maintaining full API compliance.
- Fix inaccuracies in API-Endpoints-Overview.md:
* Mark bassCapabilities, trackInfo, and SetName as implemented
* Update zone management and WebSocket status to implemented
* Correct official API coverage from 94% to 84%
- Update README.md API coverage table:
* Add missing implemented endpoints (bassCapabilities, trackInfo, SetName)
* Add missing official endpoints with proper status
* Update implementation percentage to reflect actual coverage
- Add comprehensive API-COVERAGE-ANALYSIS.md:
* Complete analysis of 16/19 official endpoints implemented (84%)
* Document 5 extended features beyond official API v1.0
* Detailed impact assessment of 3 missing professional endpoints
* Analysis of superior zone management implementation
* Testing coverage and recommendations
Key findings:
- All essential functionality is 100% implemented
- Missing endpoints are low-impact professional/audiophile features
- Zone management uses superior high-level API vs low-level official approach
- Extended features include balance, clock, and network management
- Comprehensive WebSocket event system implemented
- Create OFFICIAL-API-VERIFICATION.md with complete analysis
- Verify our implementation against official Bose SoundTouch Web API v1.0
- Document 94% endpoint coverage (15/19 official endpoints)
- Identify 4 missing low-impact endpoints
- Confirm 100% coverage of essential user functionality
- Note additional endpoints we implemented beyond official API
- Update API-Endpoints-Overview.md with verification results
Key findings:
- /reboot confirmed NOT in official API (correctly removed)
- /clockTime, /clockDisplay, /networkInfo, /balance work but not in v1.0 spec
- Missing endpoints have minimal user impact
- Implementation exceeds official specification in functionality
- Removed incorrect Reboot() and SupportsReboot() methods from client
- Removed CLI flags and handlers for reboot functionality
- Deleted reboot test files
- Updated documentation to reflect actual API capabilities
- Fixed API-Endpoints-Overview.md and STATUS.md
- Confirmed via real hardware testing that /reboot endpoint does not exist in official SoundTouch API
The /reboot endpoint was incorrectly assumed to exist but is not documented in the official Bose SoundTouch Web API specification.
- Add comprehensive preset reading functionality with helper methods
- Implement GetNextAvailablePresetSlot() and IsCurrentContentPresetable()
- Add CLI support for viewing presets with -presets flag
- Fix Preset XML tag to use lowercase 'preset' for API compliance
- Update documentation to reflect official API design:
* GET /presets: fully implemented with rich analysis
* POST /presets: officially 'N/A' per Bose documentation (not supported by design)
- Add detailed PRESET-MANAGEMENT.md documentation
- Update API endpoints overview and project status
- All tests passing with real device validation
Preset management is now 100% complete according to official API specification.
Read operations provide comprehensive preset analysis, while creation
is intentionally handled by official app/hardware controls per API design.
- Implement GET/POST /clockTime endpoints for device time management
- Implement GET/POST /clockDisplay endpoints for clock display configuration
- Implement GET /networkInfo endpoint with real API structure
- Add comprehensive models for ClockTime, ClockDisplay, and NetworkInformation
- Update NetworkInformation to match real SoundTouch API responses:
* WiFi interfaces with SSID, frequency, signal strength, and connection state
* Ethernet interfaces with connection state
* Proper attribute-based XML structure matching actual device responses
- Add CLI support for all system endpoints with detailed output formatting
- Add comprehensive test coverage for all new models and client methods
- Update documentation to reflect real API structure and capabilities
- Anonymize all personal data (IP addresses, device IDs, device names)
- Add SYSTEM-ENDPOINTS.md documentation with real-world examples
Features:
- Clock time sync with current system time or specific timestamps
- Clock display configuration (enable/disable, format, brightness, auto-dim)
- Rich network interface information with WiFi signal quality and frequency bands
- Support for both WiFi and Ethernet SoundTouch devices
- Validated against real SoundTouch 10 and SoundTouch 20 device responses
All tests pass and builds successfully.
- Add complete balance control functionality via GET/POST /balance endpoints
- Implement GetBalance() for current stereo balance retrieval
- Add SetBalance() with range validation (-50 to +50)
- Include IncreaseBalance() and DecreaseBalance() with safety limits
- Add SetBalanceSafe() with automatic value clamping
- Create comprehensive balance models with validation and helpers
- Add CLI flags: -balance, -set-balance, -inc-balance, -dec-balance
- Implement left/right percentage calculation and human-readable descriptions
- Create comprehensive test suite (30+ test cases) with mock servers
- Add error handling for devices that don't support balance control
- Update documentation with complete balance control reference
- Update API endpoints status (GET/POST /balance: ✅ Implemented)
- Update project status (70% overall completion, 100% control endpoints)
- Complete audio management trilogy: Volume + Bass + Balance
- Real device testing shows device-dependent feature availability
- XML request/response format validation and compliance
- Human-readable balance descriptions (Far Left, Center, Right, etc.)
- Left/Right channel percentage display for better UX
- Add complete bass control functionality via GET/POST /bass endpoints
- Implement GetBass() for current bass level retrieval
- Add SetBass() with range validation (-9 to +9)
- Include IncreaseBass() and DecreaseBass() with safety limits
- Add SetBassSafe() with automatic value clamping
- Create comprehensive bass models with validation and helpers
- Add CLI flags: -bass, -set-bass, -inc-bass, -dec-bass
- Implement safety features with range validation and clamping
- Create comprehensive test suite (30+ test cases) with mock servers
- Add integration tests with real device validation (SoundTouch 10/20)
- Update documentation with complete BASS-CONTROLS.md guide
- Update API endpoints status (GET/POST /bass: ✅ Implemented)
- Update project status (55% overall completion, 80% control endpoints)
- Real device testing with bass adjustment and validation
- Error handling for invalid ranges and API responses
- XML request/response format validation and compliance
- Human-readable bass level descriptions and categorization
- Add complete source selection functionality via POST /select endpoint
- Implement SelectSource() with all source types (SPOTIFY, BLUETOOTH, AUX, etc.)
- Add convenience methods: SelectSpotify(), SelectBluetooth(), SelectAux(), SelectTuneIn(), SelectPandora()
- Add SelectSourceFromItem() for working with SourceItem objects
- Add CLI flags: -select-source, -source-account, -spotify, -bluetooth, -aux
- Create comprehensive test suite (30+ test cases) with mock servers
- Add integration tests with real device validation (SoundTouch 10/20)
- Update documentation with complete SOURCE-SELECTION.md guide
- Update API endpoints status (POST /select: ✅ Implemented)
- Update project status (50% overall completion, 60% control endpoints)
- Real device testing with Spotify and TuneIn source selection
- Error handling for invalid sources and API responses
- XML request format validation and compliance
Documentation Updates:
• Update README.md to reflect implemented key controls and volume management
• Add implementation status indicators to API-Endpoints-Overview.md
• Update PLAN.md roadmap to show completed phases
• Create STATUS.md with comprehensive project status summary
Key Changes:
• Mark key controls and volume management as implemented (not planned)
• Add CLI examples for media controls and volume management
• Update API overview with ✅/🔄 status indicators
• Document press+release key pattern implementation
• Add real device validation notes
• Update Go library usage examples
Current Status:
✅ 6/6 Informational endpoints complete
✅ 2/3 Core control endpoints complete (key + volume)
✅ Host:port parsing enhancement
✅ Production-ready CLI with safety features
✅ Comprehensive testing with real devices
Next Priority:
🔄 Source selection, bass control, preset management
- Implement HTTP client with XML support for SoundTouch Web API
- Add UPnP device discovery with SSDP protocol
- Create type-safe Go models for API responses
- Build CLI tool with device discovery and info commands
- Add comprehensive configuration management via .env and env vars
- Include extensive documentation (API endpoints, patterns, development guide)
- Translate all German documentation to English
- Set up modern Go project structure with testing framework
- Add Makefile for cross-platform builds and development workflow
Features:
✅ Device discovery (UPnP + manual configuration)
✅ Device information retrieval
✅ XML request/response handling
✅ CLI interface with flexible device targeting
✅ Cross-platform compatibility
✅ Comprehensive test coverage with mock data
✅ Production-ready configuration management