soundtouch

package module
v0.62.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2026 License: MIT Imports: 0 Imported by: 0

README ΒΆ

Bose SoundTouch Toolkit

A comprehensive solution for controlling and preserving Bose SoundTouch devices, including a Go library, CLI tool, and a local service for cloud emulation.

Go Reference Go Report Card

Note: This is an independent project based on the official Bose SoundTouch Web API documentation. Not affiliated with or endorsed by Bose Corporation.

Features

  • βœ… Complete API Coverage: All available SoundTouch Web API endpoints implemented
  • 🎡 Media Control: Play, pause, stop, volume, bass, balance, source selection
  • πŸ”” Smart Notifications: TTS messages, URL audio content, notification beeps (ST-10)
  • 🏠 Multiroom Support: Create and manage zones across multiple speakers
  • ⚑ Real-time Events: WebSocket connection for live device state monitoring
  • πŸ” Device Discovery: Automatic discovery via UPnP/SSDP and mDNS
  • πŸ“» Content Navigation: Browse and search TuneIn, Pandora, Spotify, local music
  • πŸ“» Custom Radio: Play any stream URL via flexible proxying
  • πŸ“» RadioBrowser: Access thousands of internet radio stations via radio-browser.info
  • πŸŽ™οΈ Station Management: Add and play radio stations without presets
  • πŸ–₯️ CLI Tool: Comprehensive command-line interface
  • 🌐 SoundTouch Service: Emulate Bose cloud services for offline device operation
  • πŸ”§ Service Migration: Migrate devices to use local services instead of Bose cloud (XML, Hosts, or DNS redirection)
  • πŸ” DNS Discovery & Interception: Dynamic DNS server for intercepting and logging Bose service queries (requires port 53)
  • πŸ“Š DNS Discovery Analysis: Track and deduplicate all device DNS queries to discover hidden hostnames
  • πŸ“Š Traffic Analysis: Proxy and log device communications
  • πŸ“ HTTP Recording: Persist interactions as re-playable .http files
  • πŸ”„ Endpoint Mirroring: Asynchronously mirror local requests to Bose cloud for parity testing
  • βš–οΈ Parity Logging: Detect and record discrepancies between local and official Bose responses
  • 🧹 Session Management: Manage and cleanup recorded interaction sessions
  • πŸ”’ Production Ready: Extensive testing with real SoundTouch hardware
  • 🌐 Cross-Platform: Windows, macOS, Linux support

Quick Start

Installation
Install CLI and Service Tools
go install github.com/gesellix/bose-soundtouch/cmd/soundtouch-cli@latest
go install github.com/gesellix/bose-soundtouch/cmd/soundtouch-service@latest
Add Library to Your Project
go get github.com/gesellix/bose-soundtouch
CLI Usage

Find SoundTouch devices on your network:

soundtouch-cli discover devices

Control a device (replace 192.168.1.100 with your speaker's IP):

# Basic information
soundtouch-cli --host 192.168.1.100 info

# Media controls
soundtouch-cli --host 192.168.1.100 play start
soundtouch-cli --host 192.168.1.100 volume set --level 50

# Preset management
soundtouch-cli --host 192.168.1.100 preset list

For full CLI documentation, see the CLI Reference.

SoundTouch Service (Cloud Shutdown Protection)

The soundtouch-service is a local server that emulates Bose's cloud services. This is critical for keeping your speakers functional after the Bose Cloud Shutdown in May 2026.

Key Features:
  • 🏠 Local Emulation: BMX and Marge service implementation
  • πŸ”Œ Easy Setup: Activate SSH via USB stick (remote_services file)
  • πŸ”§ Device Migration: Seamlessly transition devices to local control
  • 🌐 Web Management UI: Easy browser-based setup and management
  • πŸ’Ύ Persistent Data: Store presets, recents, and sources locally
  • πŸ”„ Endpoint Mirroring: Asynchronously mirror local requests to Bose cloud for parity testing
  • βš–οΈ Parity Logging: Detect and record discrepancies between local and official Bose responses
  • πŸ“ HTTP Recording: Persist all interactions as re-playable .http files
  • 🧹 Session Management: Manage and cleanup recorded interaction sessions
Quick Start:
# Start the service
soundtouch-service

Open http://localhost:8000 in your browser to manage your devices. Documentation is also available directly through the web interface.

For a comprehensive guide on transitioning your system, see the Bose Cloud Shutdown: Survival Guide.

Detailed service configuration and Docker instructions can be found in SoundTouch Service Guide.

For professional migration tips and safety measures, see the Migration & Safety Guide.

Library Usage
Basic Control
package main

import (
    "fmt"
    "log"

    "github.com/gesellix/bose-soundtouch/pkg/client"
)

func main() {
    // Connect to your SoundTouch device
    c := client.NewClient(&client.Config{
        Host: "192.168.1.100",
        Port: 8090,
    })

    // Get device information
    info, err := c.GetDeviceInfo()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Device: %s\n", info.Name)

    // Control playback
    err = c.Play()
    if err != nil {
        log.Fatal(err)
    }

    // Set volume
    err = c.SetVolume(50)
    if err != nil {
        log.Fatal(err)
    }
}
Device Discovery
package main

import (
    "context"
    "fmt"
    "log"
    "time"

    "github.com/gesellix/bose-soundtouch/pkg/discovery"
)

func main() {
    // Discover SoundTouch devices
    service := discovery.NewService(5 * time.Second)
    devices, err := service.DiscoverDevices(context.Background())
    if err != nil {
        log.Fatal(err)
    }

    for _, device := range devices {
        fmt.Printf("Found: %s at %s:%d\n",
            device.Name, device.Host, device.Port)
    }
}
Real-time Events
package main

import (
    "context"
    "fmt"
    "log"

    "github.com/gesellix/bose-soundtouch/pkg/client"
    "github.com/gesellix/bose-soundtouch/pkg/models"
)

func main() {
    c := client.NewClient(&client.Config{
        Host: "192.168.1.100",
        Port: 8090,
    })

    // Subscribe to device events
    events, err := c.SubscribeToEvents(context.Background())
    if err != nil {
        log.Fatal(err)
    }

    for event := range events {
        switch e := event.(type) {
        case *models.NowPlayingUpdated:
            fmt.Printf("Now playing: %s by %s\n", e.Track, e.Artist)
        case *models.VolumeUpdated:
            fmt.Printf("Volume changed to: %d\n", e.ActualVolume)
        case *models.ConnectionStateUpdated:
            fmt.Printf("Connection state: %s\n", e.State)
        }
    }
}
Preset Management
package main

import (
    "fmt"
    "log"

    "github.com/gesellix/bose-soundtouch/pkg/client"
    "github.com/gesellix/bose-soundtouch/pkg/models"
)

func main() {
    c := client.NewClient(&client.Config{
        Host: "192.168.1.100",
        Port: 8090,
    })

    // Get current presets
    presets, err := c.GetPresets()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Found %d presets\n", len(presets.Preset))

    // Store currently playing content as preset 1
    err = c.StoreCurrentAsPreset(1)
    if err != nil {
        log.Fatal(err)
    }

    // Store Spotify playlist as preset 2
    spotifyContent := &models.ContentItem{
        Source:        "SPOTIFY",
        Type:          "uri",
        Location:      "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M",
        SourceAccount: "your_username",
        IsPresetable:  true,
        ItemName:      "Today's Top Hits",
    }
    err = c.StorePreset(2, spotifyContent)
    if err != nil {
        log.Fatal(err)
    }

    // Store radio station as preset 3
    radioContent := &models.ContentItem{
        Source:       "TUNEIN",
        Type:         "stationurl",
        Location:     "/v1/playbook/station/s33828",
        IsPresetable: true,
        ItemName:     "K-LOVE Radio",
    }
    err = c.StorePreset(3, radioContent)
    if err != nil {
        log.Fatal(err)
    }

    // Select preset 1
    err = c.SelectPreset(1)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Preset management complete!")
}
Multiroom Zones
package main

import (
    "log"

    "github.com/gesellix/bose-soundtouch/pkg/client"
    "github.com/gesellix/bose-soundtouch/pkg/models"
)

func main() {
    master := client.NewClient(&client.Config{
        Host: "192.168.1.100", // Master speaker
        Port: 8090,
    })

    // Create a multiroom zone
    zone := &models.Zone{
        Master: "192.168.1.100",
        Members: []models.ZoneMember{
            {IPAddress: "192.168.1.101"}, // Living room
            {IPAddress: "192.168.1.102"}, // Kitchen
        },
    }

    err := master.SetZone(zone)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Multiroom zone created!")
}
Speaker Notifications (ST-10 only)
package main

import (
    "log"

    "github.com/gesellix/bose-soundtouch/pkg/client"
)

func main() {
    c := client.NewClient(&client.Config{
        Host: "192.168.1.100",
        Port: 8090,
    })

    // Play Text-to-Speech message (language code "EN", "DE", etc.)
    err := c.PlayTTS("Welcome home!", "your-app-key", "EN", 70)
    if err != nil {
        log.Fatal(err)
    }

    // Play audio content from URL
    err = c.PlayURL(
        "https://example.com/doorbell.mp3",
        "your-app-key",
        "Doorbell",
        "Front Door",
        "Visitor Alert",
        80,
    )
    if err != nil {
        log.Fatal(err)
    }

    // Play notification beep
    err = c.PlayNotificationBeep()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Notifications sent!")
}

Supported Devices

This library supports all Bose SoundTouch-compatible devices, including:

  • SoundTouch 10, 20, 30 series
  • SoundTouch Portable
  • Wave SoundTouch music system
  • SoundTouch-enabled Bose speakers

Tested Hardware:

  • βœ… SoundTouch 10
  • βœ… SoundTouch 20

API Coverage

Feature Status Description
Device Info βœ… Complete Device details, name, capabilities
Media Control βœ… Complete Play/pause/stop, track navigation
Volume & Audio βœ… Complete Volume, bass, balance control
Source Selection βœ… Complete Spotify, Bluetooth, AUX, etc.
Content Navigation βœ… Complete Browse music libraries, radio stations
Station Management βœ… Complete Search, add, remove stations
Preset Management βœ… Complete Store, select, remove presets
Real-time Events βœ… Complete WebSocket event streaming
Multiroom Zones βœ… Complete Zone creation and management
Speaker Notifications βœ… Complete TTS, URL audio, beep alerts (ST-10)
System Settings βœ… Complete Clock, display, network info
Advanced Audio βœ… Complete DSP controls, tone controls

API Limitations: None - all documented SoundTouch Web API functionality is implemented, including endpoints discovered via the comprehensive SoundTouch Plus Wiki.

Documentation

Development

Prerequisites
  • Go 1.25.6 or later
  • Optional: SoundTouch device for testing
Building from Source
# Clone the repository
git clone https://github.com/gesellix/bose-soundtouch.git
cd Bose-SoundTouch

# Install dependencies
go mod download

# Build CLI tool
make build

# Run tests
make test

# Install CLI locally
go install ./cmd/soundtouch-cli
Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Setting up your development environment
  • Coding guidelines and best practices
  • Testing with real devices
  • Submitting pull requests

Examples

Check out the examples/ directory for more usage patterns:

  • Basic HTTP Client: Simple device control
  • Preset Management: Store and manage favorite content
  • Navigation & Stations: Browse content and manage radio stations
  • WebSocket Events: Real-time monitoring
  • Device Discovery: Finding devices on your network
  • Multiroom Management: Zone operations
  • Advanced Audio: DSP and tone controls

License

This project is licensed under the MIT License - see the LICENSE file for details.

Disclaimer

This is an independent project based on the official Bose SoundTouch Web API documentation provided by Bose Corporation. It is not affiliated with, endorsed by, or supported by Bose Corporation. Use at your own risk.

SoundTouch is a trademark of Bose Corporation.

SoundTouch End of Life Notice

Important: Bose has announced that SoundTouch cloud support will end on May 6, 2026.

What will continue to work:

  • βœ… Local API control (this library's primary functionality)
  • βœ… Bluetooth, AirPlay, Spotify Connect, and AUX streaming
  • βœ… Remote control features (Play, Pause, Skip, Volume)
  • βœ… Multiroom grouping

What will stop working:

  • ❌ Cloud-based preset sync between devices and SoundTouch app
  • ❌ Browsing music services directly from the SoundTouch app
  • ❌ Cloud-based features and updates

What continues to work:

  • βœ… Local preset management via this API client (store, select, remove)
  • βœ… Direct content playback (stations, playlists, etc.)

This Go library will continue to work as it uses the local Web API for direct device control, which is unaffected by the cloud service discontinuation. The local preset management functionality implemented in this library (discovered through the SoundTouch Plus Wiki) provides an alternative to the cloud-based preset features that will be discontinued.

Community Alternatives: See the Related Projects & Credits section below for additional tools like SoundCork that provide cloud service alternatives and the SoundTouch Plus project that offers comprehensive Home Assistant integration.

This project builds upon the excellent work of several community projects:

SoundCork 🍾
  • Project: SoundCork - SoundTouch API Intercept
  • Authors: Deborah Kaplan and contributors
  • Our Implementation: The soundtouch-service in this project is heavily inspired by SoundCork's Python implementation. SoundCork pioneered the approach of intercepting and emulating Bose's cloud services, providing the foundation for offline SoundTouch operation.
  • Key Contributions: Service emulation architecture, BMX/Marge endpoint discovery, device migration strategies
  • License: MIT License
ÜberBâse API 🎡
  • Project: ÜberBΓΆse API
  • Author: Julius
  • Our Implementation: This project provided valuable insights into advanced SoundTouch API endpoints and helped make our implementation more complete, particularly for content navigation and advanced device features.
  • Key Contributions: Extended API endpoint documentation, advanced feature discovery
  • License: MIT License
SoundTouch Plus 🏠
  • Project: SoundTouch Plus Home Assistant Component
  • Wiki: SoundTouch WebServices API Documentation
  • Author: Todd Lucas
  • Our Implementation: The comprehensive API documentation in the SoundTouch Plus Wiki provided invaluable insights into undocumented endpoints beyond the official API, enabling our preset management and content navigation features.
  • Key Contributions: Extensive API endpoint documentation, real-world usage patterns
  • License: MIT License
SoundTouch Hook πŸͺ
  • Project: Bose SoundTouch Hook
  • Author: Adrian BΓΆckenkamp
  • Our Implementation: This project provides a powerful framework for intercepting and hooking into internal device processes using LD_PRELOAD. It was instrumental in verifying internal function calls and understanding how the device validates cloud domains.
  • Key Contributions: Reverse engineering framework, process hooking, cross-compilation toolchain
  • License: GPL-3.0 License
Community Ecosystem

These projects together form a comprehensive ecosystem for SoundTouch device management:

  • This Project: Go library + CLI + service for programmatic control and offline operation
  • SoundCork: Python-based service interception and cloud replacement
  • SoundTouch Plus: Home Assistant integration with extensive device support
  • ÜberBΓΆse: API research and advanced endpoint discovery
  • SoundTouch Hook: Advanced reverse engineering and process instrumentation

We are grateful to these projects and their maintainers for paving the way and providing the foundation that made this comprehensive Go implementation possible. The SoundTouch community's collaborative approach to reverse engineering and documentation has been invaluable.

Contributing Back

If you discover new endpoints, features, or improvements through this library, please consider contributing back to these projects as well. The stronger our community ecosystem becomes, the better we can support SoundTouch devices beyond Bose's official support timeline.

Support


Star this project ⭐ if you find it useful!

Documentation ΒΆ

Overview ΒΆ

Package soundtouch provides a comprehensive Go library, CLI tool, and local service for controlling and emulating Bose SoundTouch devices.

This project implements the complete Bose SoundTouch Web API, enabling programmatic control of SoundTouch speakers including playback control, volume management, source selection, multiroom zone management, and real-time event monitoring.

It also provides a local service (`soundtouch-service`) that can emulate the Bose Cloud, allowing for offline control and enhanced debugging through HTTP interaction recording.

Quick Start ΒΆ

Install the library:

go get github.com/gesellix/bose-soundtouch

Basic usage example:

package main

import (
	"fmt"
	"log"

	"github.com/gesellix/bose-soundtouch/pkg/client"
)

func main() {
	// Create a client for your SoundTouch device
	config := &client.Config{
		Host: "192.168.1.100",
		Port: 8090,
	}
	client := client.NewClient(config)

	// Get device information
	info, err := client.GetInfo()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Device: %s\n", info.Name)

	// Control playback
	err = client.Play()
	if err != nil {
		log.Fatal(err)
	}
}

SoundTouch Service ΒΆ

The `soundtouch-service` provides several advanced features:

  • Bose Cloud Emulation: Allows speakers to work without an internet connection.
  • HTTP Interaction Recording: Captures all traffic as IntelliJ-compatible .http files.
  • Speaker Migration: Automated tools to redirect speakers to the local service.
  • Web Interface: A management dashboard for proxy settings and speaker setup.

Install the service:

go install github.com/gesellix/bose-soundtouch/cmd/soundtouch-service@latest

CLI Tool ΒΆ

The package includes a comprehensive CLI tool for device control:

# Install the CLI
go install github.com/gesellix/bose-soundtouch/cmd/soundtouch-cli@latest

# Discover devices
soundtouch-cli discover devices

# Control a device
soundtouch-cli --host 192.168.1.100 play start

Supported Features ΒΆ

  • βœ… Device Information & Capabilities
  • βœ… Playback, Volume, Bass, and Balance Control
  • βœ… Source Selection & Preset Management
  • βœ… Real-time WebSocket Events
  • βœ… Multiroom Zone Management
  • βœ… Device Discovery (UPnP/SSDP and mDNS)
  • βœ… Local Cloud Emulation (soundtouch-service)
  • βœ… HTTP Traffic Recording & Sanitization
  • βœ… Automated Speaker Migration & Revert

Package Structure ΒΆ

  • client: HTTP client for SoundTouch Web API
  • discovery: Device discovery using UPnP/SSDP and mDNS
  • models: Data structures for API requests/responses
  • service: Core logic for the soundtouch-service (proxy, recording, setup)
  • cmd/soundtouch-cli: Command-line interface tool
  • cmd/soundtouch-service: Local cloud emulation service

Implementation Notes ΒΆ

This project is an independent effort to preserve the functionality of Bose SoundTouch devices and provide enhanced debugging and control capabilities. It is not affiliated with or endorsed by Bose Corporation.

For detailed API documentation, examples, and advanced usage patterns, visit: https://pkg.go.dev/github.com/gesellix/bose-soundtouch

Directories ΒΆ

Path Synopsis
cmd
debug-consolidation command
Package main provides a debug tool for analyzing device consolidation and migration scenarios.
Package main provides a debug tool for analyzing device consolidation and migration scenarios.
example-mdns command
Package main provides an example of discovering SoundTouch devices using mDNS.
Package main provides an example of discovering SoundTouch devices using mDNS.
example-unified command
Package main provides an example of discovering SoundTouch devices using all three mechanisms.
Package main provides an example of discovering SoundTouch devices using all three mechanisms.
example-upnp command
Package main provides an example of discovering SoundTouch devices using UPnP.
Package main provides an example of discovering SoundTouch devices using UPnP.
favicon-gen command
Package main provides a utility to generate PNG and ICO favicons from SVG source files.
Package main provides a utility to generate PNG and ICO favicons from SVG source files.
mdns-scanner command
Package main provides a simple mDNS scanner to discover SoundTouch devices on the network.
Package main provides a simple mDNS scanner to discover SoundTouch devices on the network.
mock-spotify command
Package main provides a mock Spotify server for testing purposes.
Package main provides a mock Spotify server for testing purposes.
soundtouch-cli command
Package main provides the soundtouch-cli balance control commands.
Package main provides the soundtouch-cli balance control commands.
soundtouch-service command
Package main provides the SoundTouch service daemon that acts as a proxy and management interface for Bose SoundTouch devices, providing Marge service emulation and device discovery.
Package main provides the SoundTouch service daemon that acts as a proxy and management interface for Bose SoundTouch devices, providing Marge service emulation and device discovery.
soundtouch-web command
Package main provides a web UI for controlling Bose SoundTouch devices.
Package main provides a web UI for controlling Bose SoundTouch devices.
soundtouch-web/handlers
Package handlers contains HTTP handlers for the SoundTouch web UI.
Package handlers contains HTTP handlers for the SoundTouch web UI.
soundtouch-web/webtypes
Package webtypes contains type definitions for the SoundTouch web UI.
Package webtypes contains type definitions for the SoundTouch web UI.
websocket-demo command
Package main provides a demonstration of WebSocket event handling for Bose SoundTouch devices.
Package main provides a demonstration of WebSocket event handling for Bose SoundTouch devices.
Package main demonstrates the new recording filename format that includes date information.
Package main demonstrates the new recording filename format that includes date information.
account-management command
Package main demonstrates music service account management functionality for Bose SoundTouch devices.
Package main demonstrates music service account management functionality for Bose SoundTouch devices.
advanced-audio-controls command
Package main provides an example of using advanced audio controls.
Package main provides an example of using advanced audio controls.
content-selection command
Package main demonstrates content selection functionality for Bose SoundTouch devices.
Package main demonstrates content selection functionality for Bose SoundTouch devices.
introspect command
Package main demonstrates introspect functionality for Bose SoundTouch devices.
Package main demonstrates introspect functionality for Bose SoundTouch devices.
recents command
Package main demonstrates recent content functionality for Bose SoundTouch devices.
Package main demonstrates recent content functionality for Bose SoundTouch devices.
service-availability command
Package main demonstrates service availability checking for SoundTouch devices
Package main demonstrates service availability checking for SoundTouch devices
service-demo command
Package main provides a demo client for the SoundTouch service API, demonstrating how to interact with devices and retrieve media information.
Package main provides a demo client for the SoundTouch service API, demonstrating how to interact with devices and retrieve media information.
zone-slave-operations command
Package main provides an example of using zone slave operations.
Package main provides an example of using zone slave operations.
pkg
client
Package client provides a comprehensive HTTP client for controlling Bose SoundTouch devices.
Package client provides a comprehensive HTTP client for controlling Bose SoundTouch devices.
config
Package config provides configuration management for the Bose SoundTouch Go library.
Package config provides configuration management for the Bose SoundTouch Go library.
discovery
Package discovery provides device discovery functionality for Bose SoundTouch devices using mDNS and UPnP protocols.
Package discovery provides device discovery functionality for Bose SoundTouch devices using mDNS and UPnP protocols.
models
Package models provides data structures and types for music service account management on Bose SoundTouch devices.
Package models provides data structures and types for music service account management on Bose SoundTouch devices.
service/bmx
Package bmx implements minimal helper calls to public TuneIn endpoints and wraps them into Bose-compatible response models.
Package bmx implements minimal helper calls to public TuneIn endpoints and wraps them into Bose-compatible response models.
service/certmanager
Package certmanager provides tools for managing Root CAs and generating SSL certificates.
Package certmanager provides tools for managing Root CAs and generating SSL certificates.
service/constants
Package constants defines file names, directories, and common values used by the service layer.
Package constants defines file names, directories, and common values used by the service layer.
service/datastore
Package datastore provides a simple XML-based datastore for SoundTouch devices.
Package datastore provides a simple XML-based datastore for SoundTouch devices.
service/handlers
Package handlers provides HTTP handlers for the SoundTouch service.
Package handlers provides HTTP handlers for the SoundTouch service.
service/marge
Package marge provides XML generation and data management for the Marge service, which handles SoundTouch device configuration, presets, recents, and account management.
Package marge provides XML generation and data management for the Marge service, which handles SoundTouch device configuration, presets, recents, and account management.
service/proxy
Package proxy provides a logging reverse proxy used for speaker traffic debugging.
Package proxy provides a logging reverse proxy used for speaker traffic debugging.
service/setup
Package setup contains speaker migration and configuration helpers.
Package setup contains speaker migration and configuration helpers.
service/spotify
Package spotify provides Spotify OAuth integration and token management for the SoundTouch service, ported from soundcork's Python implementation.
Package spotify provides Spotify OAuth integration and token management for the SoundTouch service, ported from soundcork's Python implementation.
service/ssh
Package ssh provides simple SSH operations used during device setup and migration.
Package ssh provides simple SSH operations used during device setup and migration.
testutils/spotify
Package spotify provides shared handlers for mocking the Spotify API.
Package spotify provides shared handlers for mocking the Spotify API.
scripts
extract-ws command
http-diff command
tests
integration/mocks
Package mocks provides mock implementations for external services during testing.
Package mocks provides mock implementations for external services during testing.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL