mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-07 19:28:10 +00:00
feat: implement missing endpoints and serve static resources from downloads/media hosts (#199)
Endpoints:
- POST /streaming/music/musicprovider/{id}/trial/is_eligible (reuses
is_eligible handler)
- POST /bmx/tunein/v1/favorite/{stationID} with datastore persistence
(SaveTuneInFavorite)
- DELETE /bmx/tunein/v1/favorite/{stationID} (DeleteTuneInFavorite)
- POST /bmx/core02/svc-bmx-adapter-orion/prod/orion/token (anonymous
Orion token)
- GET /bmx-icons/* serving embedded static/media assets (media.bose.io)
- GET /ced/* serving embedded firmware index, release notes, and 10
app-help XMLs (downloads.bose.com)
Add media.bose.io and downloads.bose.com to DNS redirect lists (setup.go
both domain slices, dns.go shouldIntercept list, main.go getDomains
map). Document implemented endpoints in
tests/interactions_20260502_missing_external.md; mark rows 0246–0247 as
self/☑ in the interactions table.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
0b2e03820b
commit
e99c04888c
@@ -668,6 +668,7 @@ func getDomains(serverURL, httpsServerURL, hostname string) []string {
|
||||
"bose.io": true,
|
||||
"bose-prod.apigee.net": true,
|
||||
"bose-test.apigee.net": true,
|
||||
"downloads.bose.com": true,
|
||||
// Local service domains
|
||||
setup.TestDomain: true,
|
||||
hostname: true,
|
||||
@@ -847,6 +848,8 @@ func setupRouter(server *handlers.Server) *chi.Mux {
|
||||
})
|
||||
|
||||
r.Get("/media/*", server.HandleMedia())
|
||||
r.Get("/bmx-icons/*", server.HandleBmxIcons())
|
||||
r.Get("/ced/*", server.HandleCedStatic())
|
||||
r.Get("/web/*", server.HandleWeb())
|
||||
r.Get("/docs/*", server.HandleDocs)
|
||||
|
||||
@@ -863,9 +866,12 @@ func setupRouter(server *handlers.Server) *chi.Mux {
|
||||
r.Get("/v1/navigate", server.HandleTuneInNavigate)
|
||||
r.Get("/v1/navigate/*", server.HandleTuneInNavigate)
|
||||
r.Get("/v1/search", server.HandleTuneInSearch)
|
||||
r.Post("/v1/favorite/{stationID}", server.HandleTuneInFavorite)
|
||||
r.Delete("/v1/favorite/{stationID}", server.HandleTuneInDeleteFavorite)
|
||||
})
|
||||
|
||||
r.Post("/orion/v1/playback/station/{data}", server.HandleOrionPlayback)
|
||||
r.Post("/core02/svc-bmx-adapter-orion/prod/orion/token", server.HandleOrionToken)
|
||||
})
|
||||
|
||||
r.Get("/custom/v1/playback/{encodedURL}", server.HandleCustomPlayback)
|
||||
@@ -932,6 +938,7 @@ func setupRouter(server *handlers.Server) *chi.Mux {
|
||||
r.Route("/music", func(r chi.Router) {
|
||||
r.Route("/musicprovider/{providerID}", func(r chi.Router) {
|
||||
r.Post("/is_eligible", server.HandleMusicProviderIsEligible)
|
||||
r.Post("/trial/is_eligible", server.HandleMusicProviderIsEligible)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
CONNECT /oauth/* handlers.(*Server).HandleBoseProxy-fm
|
||||
DELETE /accounts/{account}/devices/{device} handlers.(*Server).HandleMargeRemoveDevice-fm
|
||||
DELETE /accounts/{account}/group/{groupId} handlers.(*Server).HandleMargeDeleteGroup-fm
|
||||
DELETE /bmx/tunein/v1/favorite/{stationID} handlers.(*Server).HandleTuneInDeleteFavorite-fm
|
||||
DELETE /oauth/* handlers.(*Server).HandleBoseProxy-fm
|
||||
DELETE /setup/devices/{deviceId} handlers.(*Server).HandleRemoveDevice-fm
|
||||
DELETE /setup/dns-discoveries handlers.(*Server).HandleClearDNSDiscoveries-fm
|
||||
@@ -19,6 +20,7 @@ GET /accounts/{account}/devices/{device}/presets handlers.(
|
||||
GET /accounts/{account}/devices/{device}/recents handlers.(*Server).HandleMargeRecents-fm
|
||||
GET /accounts/{account}/full handlers.(*Server).HandleMargeAccountFull-fm
|
||||
GET /accounts/{account}/sources handlers.(*Server).HandleMargeAccountSources-fm
|
||||
GET /bmx-icons/* handlers.(*Server).HandleBmxIcons
|
||||
GET /bmx/registry/v1/services handlers.(*Server).HandleBMXRegistry-fm
|
||||
GET /bmx/registry/v1/servicesAvailability handlers.(*Server).HandleBMXServicesAvailability-fm
|
||||
GET /bmx/tunein/v1/navigate handlers.(*Server).HandleTuneInNavigate-fm
|
||||
@@ -27,6 +29,7 @@ GET /bmx/tunein/v1/playback/episode/{podcastID} handlers.(
|
||||
GET /bmx/tunein/v1/playback/episodes/{podcastID} handlers.(*Server).HandleTuneInPodcastInfo-fm
|
||||
GET /bmx/tunein/v1/playback/station/{stationID} handlers.(*Server).HandleTuneInPlayback-fm
|
||||
GET /bmx/tunein/v1/search handlers.(*Server).HandleTuneInSearch-fm
|
||||
GET /ced/* handlers.(*Server).HandleCedStatic
|
||||
GET /custom/v1/playback/{encodedURL} handlers.(*Server).HandleCustomPlayback-fm
|
||||
GET /customer/account/{account} handlers.(*Server).HandleMargeAccountProfile-fm
|
||||
GET /docs/* handlers.(*Server).HandleDocs-fm
|
||||
@@ -91,7 +94,9 @@ POST /accounts/{account}/devices/{device}/presets/{presetNumber} handlers.(
|
||||
POST /accounts/{account}/devices/{device}/recents handlers.(*Server).HandleMargeAddRecent-fm
|
||||
POST /accounts/{account}/group handlers.(*Server).HandleMargeAddGroup-fm
|
||||
POST /accounts/{account}/group/{groupId} handlers.(*Server).HandleMargeModifyGroup-fm
|
||||
POST /bmx/core02/svc-bmx-adapter-orion/prod/orion/token handlers.(*Server).HandleOrionToken-fm
|
||||
POST /bmx/orion/v1/playback/station/{data} handlers.(*Server).HandleOrionPlayback-fm
|
||||
POST /bmx/tunein/v1/favorite/{stationID} handlers.(*Server).HandleTuneInFavorite-fm
|
||||
POST /bmx/tunein/v1/report handlers.(*Server).HandleTuneInReport-fm
|
||||
POST /bmx/tunein/v1/token handlers.(*Server).HandleTuneInToken-fm
|
||||
POST /customer/account/{account} handlers.(*Server).HandleMargeUpdateAccountProfile-fm
|
||||
@@ -136,6 +141,7 @@ POST /streaming/account/{account}/group/{groupId} handlers.(
|
||||
POST /streaming/account/{account}/source handlers.(*Server).HandleMargeAddSource-fm
|
||||
POST /streaming/device_setting/account/{account}/device/{device}/device_settings handlers.(*Server).HandleMargeUpdateDeviceSettings-fm
|
||||
POST /streaming/music/musicprovider/{providerID}/is_eligible handlers.(*Server).HandleMusicProviderIsEligible-fm
|
||||
POST /streaming/music/musicprovider/{providerID}/trial/is_eligible handlers.(*Server).HandleMusicProviderIsEligible-fm
|
||||
POST /streaming/stats/error handlers.(*Server).HandleErrorStats-fm
|
||||
POST /streaming/stats/usage handlers.(*Server).HandleUsageStats-fm
|
||||
POST /streaming/support/customersupport handlers.(*Server).HandleMargeCustomerSupport-fm
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
* [System Endpoints](reference/SYSTEM-ENDPOINTS.md)
|
||||
* [Speaker Endpoint](reference/SPEAKER-ENDPOINT.md)
|
||||
* [WebSocket Events](reference/WEBSOCKET-EVENTS.md)
|
||||
* [Device Pairing Flow](reference/DEVICE-PAIRING-FLOW.md)
|
||||
* [Discovery](reference/DISCOVERY.md)
|
||||
* [Zone Management](reference/ZONE-MANAGEMENT.md)
|
||||
* [Preset Management](reference/PRESET-MANAGEMENT.md)
|
||||
|
||||
521
docs/reference/DEVICE-PAIRING-FLOW.md
Normal file
521
docs/reference/DEVICE-PAIRING-FLOW.md
Normal file
@@ -0,0 +1,521 @@
|
||||
# SoundTouch Device WebSocket API — Pairing & Operation Flow
|
||||
|
||||
Reference document derived from mitmproxy captures of the Bose SoundTouch Android app
|
||||
(`bose-pairing-20260502-155542`, `bose-pairing-20260502-165549`).
|
||||
|
||||
> **Why this matters:** With Bose cloud services shutting down on 2026-05-06, the original
|
||||
> app may stop working for pairing and playback control. This document captures the exact
|
||||
> WebSocket message sequences needed to replicate those flows independently.
|
||||
|
||||
---
|
||||
|
||||
## Connection
|
||||
|
||||
All interactions use the SoundTouch WebSocket API on the speaker's local IP, port **8090**
|
||||
(the same port as the REST API). Connect with the `Gabbo` sub-protocol:
|
||||
|
||||
```
|
||||
GET ws://192.168.x.y:8090/
|
||||
Upgrade: websocket
|
||||
Sec-WebSocket-Protocol: Gabbo
|
||||
```
|
||||
|
||||
Upon connection the server immediately sends an identification banner:
|
||||
|
||||
```xml
|
||||
<SoundTouchSdkInfo serverVersion="4" serverBuild="trunk r46330 v4 epdbuild hepdswbld04" />
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Message Envelope
|
||||
|
||||
All subsequent messages (except `selectLastWiFiSource`, see below) use this envelope:
|
||||
|
||||
**Client → Server request:**
|
||||
```xml
|
||||
<msg>
|
||||
<header deviceID="{device_id}" url="{endpoint}" method="{GET|POST}">
|
||||
<request requestID="{n}">
|
||||
<info type="new"/> <!-- or type="update" -->
|
||||
<!-- optional: <sourceItem source="TUNEIN"/> -->
|
||||
</request>
|
||||
</header>
|
||||
<body>
|
||||
<!-- payload, may be empty -->
|
||||
</body>
|
||||
</msg>
|
||||
```
|
||||
|
||||
**Server → Client response:**
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<msg>
|
||||
<header deviceID="{device_id}" url="{endpoint}" method="{GET|POST}">
|
||||
<request requestID="{n}" msgType="RESPONSE">
|
||||
<info type="new"/>
|
||||
</request>
|
||||
</header>
|
||||
<body>
|
||||
<!-- response payload -->
|
||||
</body>
|
||||
</msg>
|
||||
```
|
||||
|
||||
**Server → Client push (unsolicited):**
|
||||
```xml
|
||||
<updates deviceID="{device_id}">
|
||||
<nowPlayingUpdated>...</nowPlayingUpdated>
|
||||
</updates>
|
||||
```
|
||||
|
||||
`requestID` is a monotonically increasing integer per connection (client-side sequence).
|
||||
`{device_id}` is the speaker's MAC address with colons removed (e.g. `08DF1F0BA325`).
|
||||
|
||||
---
|
||||
|
||||
## Phase 1 — Discovery: Is the Speaker Already Paired?
|
||||
|
||||
```xml
|
||||
<!-- C→S: fetch device info -->
|
||||
<msg><header deviceID="{device_id}" url="info" method="GET">
|
||||
<request requestID="1"><info type="new"/></request>
|
||||
</header></msg>
|
||||
|
||||
<!-- S→C: response -->
|
||||
<info deviceID="{device_id}">
|
||||
<name>SoundTouch 10</name>
|
||||
<type>SoundTouch 10</type>
|
||||
<margeAccountUUID>9569497</margeAccountUUID> <!-- empty = unpaired -->
|
||||
<margeURL>https://streaming.bose.com</margeURL>
|
||||
...
|
||||
</info>
|
||||
```
|
||||
|
||||
- **Empty `margeAccountUUID`** → device is unpaired, proceed to Phase 2
|
||||
- **Populated `margeAccountUUID`** → already paired with that account ID
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 — Pairing a New Speaker
|
||||
|
||||
### 2.1 Setup State Machine
|
||||
|
||||
The pairing flow uses a setup state machine on the device. States must be sent in order.
|
||||
|
||||
```xml
|
||||
<!-- 1. Start setup -->
|
||||
<msg><header deviceID="{device_id}" url="setup" method="POST">
|
||||
<request requestID="21"></request>
|
||||
</header><body><setupState state="SETUP_START"/></body></msg>
|
||||
|
||||
<!-- 2. Enter identify mode — device flashes/beeps; 300 000 ms timeout -->
|
||||
<msg><header deviceID="{device_id}" url="setup" method="POST">
|
||||
<request requestID="22"></request>
|
||||
</header><body><setupState state="SETUP_IDENTIFY_DEVICE_ENTER" timeout="300000"/></body></msg>
|
||||
|
||||
<!-- Server pushes: -->
|
||||
<updates deviceID="{device_id}">
|
||||
<soundTouchConfigurationUpdated>
|
||||
<soundTouchConfigurationStatus status="SOUNDTOUCH_CONFIGURING"/>
|
||||
</soundTouchConfigurationUpdated>
|
||||
</updates>
|
||||
|
||||
<!-- 3. Set language (3 = German; adjust as needed) -->
|
||||
<msg><header deviceID="{device_id}" url="language" method="POST">
|
||||
<request requestID="23"></request>
|
||||
</header><body><sysLanguage>3</sysLanguage></body></msg>
|
||||
|
||||
<!-- 4. Enter setup (user has confirmed identification) -->
|
||||
<msg><header deviceID="{device_id}" url="setup" method="POST">
|
||||
<request requestID="24"></request>
|
||||
</header><body><setupState state="SETUP_ENTER"/></body></msg>
|
||||
|
||||
<!-- 5. Leave identify mode -->
|
||||
<msg><header deviceID="{device_id}" url="setup" method="POST">
|
||||
<request requestID="25"></request>
|
||||
</header><body><setupState state="SETUP_IDENTIFY_DEVICE_LEAVE"/></body></msg>
|
||||
|
||||
<!-- 6. Set device name -->
|
||||
<msg><header deviceID="{device_id}" url="name" method="POST">
|
||||
<request requestID="26"></request>
|
||||
</header><body><name>My SoundTouch 10</name></body></msg>
|
||||
```
|
||||
|
||||
### 2.2 Account Pairing — The Critical Step
|
||||
|
||||
```xml
|
||||
<!-- C→S: pair device with account -->
|
||||
<msg><header deviceID="{device_id}" url="setMargeAccount" method="POST">
|
||||
<request requestID="27"></request>
|
||||
</header><body>
|
||||
<PairDeviceWithAccount>
|
||||
<accountId>{accountId}</accountId>
|
||||
<userAuthToken>Bearer {token}</userAuthToken>
|
||||
</PairDeviceWithAccount>
|
||||
</body></msg>
|
||||
|
||||
<!-- S→C: device info response with margeAccountUUID now set -->
|
||||
<info deviceID="{device_id}">
|
||||
...
|
||||
<margeAccountUUID>{accountId}</margeAccountUUID>
|
||||
...
|
||||
</info>
|
||||
```
|
||||
|
||||
The server also pushes several `sourcesUpdated` events after successful pairing.
|
||||
|
||||
**`{accountId}`** — the numeric Bose account ID (e.g. `9569497`), obtainable from
|
||||
`GET /streaming/account/login` on soundtouch-service.
|
||||
|
||||
**`{token}`** — a Bearer token issued by Bose authentication (or soundtouch-service).
|
||||
The full token from the captures:
|
||||
```
|
||||
Bearer NtJDRbNtY3hDhm5K8FC2JprRhRQNH3QdZjG6aR4ASwYQg4rvZMY6dPLc3Bm6zvWNciWzCpMWZ/dbITRQoVdClOdssgDO+Nlh4ZJWp2w3tZiGzB8Flho0c+ipXnT/0Yg5
|
||||
```
|
||||
(session-specific; obtain a fresh one from the service's account login flow)
|
||||
|
||||
### 2.3 Finish Setup and Telemetry
|
||||
|
||||
```xml
|
||||
<!-- Leave setup state machine -->
|
||||
<msg><header deviceID="{device_id}" url="setup" method="POST">
|
||||
<request requestID="28"></request>
|
||||
</header><body><setupState state="SETUP_LEAVE"/></body></msg>
|
||||
|
||||
<!-- Trigger device to sync customer support info to Marge cloud -->
|
||||
<msg><header deviceID="{device_id}" url="pushCustomerSupportInfoToMarge" method="GET">
|
||||
<request requestID="29"></request>
|
||||
</header></msg>
|
||||
|
||||
<!-- S→C: -->
|
||||
<status>/pushCustomerSupportInfoToMarge</status>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 — Unpairing
|
||||
|
||||
```xml
|
||||
<!-- C→S: remove device from account -->
|
||||
<msg><header deviceID="{device_id}" url="setMargeAccount" method="POST">
|
||||
<request requestID="24">
|
||||
<info mainNode="removeDevice" type="new"/>
|
||||
<sourceItem source="SETTINGS" sourceAccount="{device_id}"/>
|
||||
</request>
|
||||
</header><body><UnPairDeviceWithAccount/></body></msg>
|
||||
|
||||
<!-- S→C: response with device info showing empty margeAccountUUID -->
|
||||
<!-- Server also pushes: <updates><infoUpdated/></updates> -->
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 4 — App Initialization (Bulk State Fetch)
|
||||
|
||||
When the app connects to an already-paired device it sends these in rapid parallel sequence:
|
||||
|
||||
```
|
||||
info (GET) — device metadata, check pairing
|
||||
sources (GET) — available input sources
|
||||
presets (GET) — saved presets 1–6
|
||||
swUpdateQuery (POST) — check if update is in progress
|
||||
capabilities (GET) — hardware capabilities, network config
|
||||
bassCapabilities (GET) — bass range and defaults
|
||||
now_playing (GET) — current playback state
|
||||
volume (GET) — current volume
|
||||
getZone (GET) — multi-room zone membership
|
||||
clockDisplay (POST) — set clock timezone/format
|
||||
```
|
||||
|
||||
Then a second wave:
|
||||
|
||||
```
|
||||
swUpdateCheck (POST) — check for new firmware
|
||||
systemtimeout (GET) — power-saving timeout
|
||||
rebroadcastlatencymode (GET) — zone latency mode
|
||||
getGroup (GET) — stereo-pair group
|
||||
language (GET, sourceItem source="settings") — UI language
|
||||
bass (GET) — current bass level
|
||||
serviceAvailability (GET, sourceItem source="add_service" or "settings")
|
||||
webserver/pingRequest (GET) — keepalive
|
||||
pushCustomerSupportInfoToMarge (GET) — telemetry
|
||||
netStats (GET, sourceItem source="settings") — network statistics
|
||||
introspect (POST, sourceItem source="AIRPLAY") — AirPlay2 capabilities
|
||||
```
|
||||
|
||||
`clockDisplay` example with timezone:
|
||||
```xml
|
||||
<clockDisplay>
|
||||
<clockConfig timezoneInfo="Europe/Berlin" timeFormat="TIME_FORMAT_12HOUR_ID"/>
|
||||
</clockDisplay>
|
||||
```
|
||||
|
||||
`serviceAvailability` response lists availability of all service types (PANDORA, AIRPLAY,
|
||||
AMAZON, DEEZER, SPOTIFY, TUNEIN, SIRIUSXM_EVEREST, BLUETOOTH, etc.) with `isAvailable`
|
||||
and optional `reason` attributes.
|
||||
|
||||
---
|
||||
|
||||
## Playback Control
|
||||
|
||||
### Start Playback via `playbackRequest` (preferred — bypasses source checks)
|
||||
|
||||
```xml
|
||||
<msg><header deviceID="{device_id}" url="playbackRequest" method="POST">
|
||||
<request requestID="{n}"><info type="new"/></request>
|
||||
</header><body>
|
||||
<playbackRequest source="TUNEIN" sourceAccount="">
|
||||
<container type="stationurl"
|
||||
location="/v1/playback/station/s25260"
|
||||
isPresetable="true"
|
||||
source="TUNEIN"
|
||||
sourceAccount="">
|
||||
<itemName>1LIVE</itemName>
|
||||
</container>
|
||||
</playbackRequest>
|
||||
</body></msg>
|
||||
|
||||
<!-- S→C response: -->
|
||||
<playbackResponse source="TUNEIN" sourceAccount=""/>
|
||||
|
||||
<!-- S→C pushes: nowPlayingUpdated, recentsUpdated -->
|
||||
```
|
||||
|
||||
For a TuneIn podcast episode, use `type="tracklisturl"` and
|
||||
`location="/v1/playback/episodes/{id}?encoded_name={base64}"`.
|
||||
|
||||
### Select Content via `select` (triggers preset/recents UI highlight)
|
||||
|
||||
```xml
|
||||
<msg><header deviceID="{device_id}" url="select" method="POST">
|
||||
<request requestID="{n}"><info type="new"/></request>
|
||||
</header><body>
|
||||
<ContentItem source="TUNEIN"
|
||||
type="stationurl"
|
||||
location="/v1/playback/station/s25260"
|
||||
sourceAccount="TUNEIN"
|
||||
isPresetable="true">
|
||||
<itemName>1LIVE</itemName>
|
||||
</ContentItem>
|
||||
</body></msg>
|
||||
```
|
||||
|
||||
Note: `select` with a TUNEIN item that the device can't resolve directly may return
|
||||
`error value="1005" name="UNKNOWN_SOURCE_ERROR"`. Use `playbackRequest` instead for
|
||||
reliable playback.
|
||||
|
||||
### Special: Select Last Wi-Fi Source
|
||||
|
||||
A plain-text (non-XML) client message:
|
||||
```
|
||||
selectLastWiFiSource
|
||||
```
|
||||
|
||||
Server responds with plain text:
|
||||
```
|
||||
<?xml version="1.0" encoding="UTF-8" ?><status>/selectLastWiFiSource</status>
|
||||
```
|
||||
|
||||
### Key Presses
|
||||
|
||||
```xml
|
||||
<!-- press -->
|
||||
<msg><header deviceID="{device_id}" url="key" method="POST">
|
||||
<request requestID="{n}"><info mainNode="keyPress" type="new"/><sourceItem source="TUNEIN"/></request>
|
||||
</header><body><key state="press" sender="Gabbo">{KEY}</key></body></msg>
|
||||
|
||||
<!-- release (required for POWER — not for STOP/PAUSE) -->
|
||||
<msg><header deviceID="{device_id}" url="key" method="POST">
|
||||
<request requestID="{n}"><info mainNode="keyRelease" type="new"/><sourceItem source="TUNEIN"/></request>
|
||||
</header><body><key state="release" sender="Gabbo">{KEY}</key></body></msg>
|
||||
```
|
||||
|
||||
Key names observed: `POWER`, `STOP`, `PAUSE`, `ADD_FAVORITE`
|
||||
|
||||
`sender="Gabbo"` is the app identifier string used by all Bose mobile apps.
|
||||
|
||||
### Volume
|
||||
|
||||
```xml
|
||||
<!-- Set volume (0–100) -->
|
||||
<msg><header deviceID="{device_id}" url="volume" method="POST">
|
||||
<request requestID="{n}"><info mainNode="volume" type="new"/><sourceItem source="TUNEIN"/></request>
|
||||
</header><body><volume>30</volume></body></msg>
|
||||
|
||||
<!-- S→C push: -->
|
||||
<updates deviceID="{device_id}">
|
||||
<volumeUpdated>
|
||||
<volume><targetvolume>30</targetvolume><actualvolume>30</actualvolume><muteenabled>false</muteenabled></volume>
|
||||
</volumeUpdated>
|
||||
</updates>
|
||||
```
|
||||
|
||||
### Bass
|
||||
|
||||
```xml
|
||||
<!-- Get -->
|
||||
<msg><header deviceID="{device_id}" url="bass" method="GET">
|
||||
<request requestID="{n}"><info type="new"/></request>
|
||||
</header></msg>
|
||||
|
||||
<!-- Set (range: bassMin to bassMax from bassCapabilities, typically -9 to 0) -->
|
||||
<msg><header deviceID="{device_id}" url="bass" method="POST">
|
||||
<request requestID="{n}"><info mainNode="bassSet" type="new"/><sourceItem source="SETTINGS"/></request>
|
||||
</header><body><bass>-2</bass></body></msg>
|
||||
|
||||
<!-- S→C push: <updates><bassUpdated/></updates> -->
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Browse & Navigate
|
||||
|
||||
```xml
|
||||
<!-- Open recents menu -->
|
||||
<msg><header deviceID="{device_id}" url="navigate" method="POST">
|
||||
<request requestID="{n}"><info mainNode="navigateMenu" type="new"/><sourceItem source="RECENTS"/></request>
|
||||
</header><body><navigate menu="recents"/></body></msg>
|
||||
|
||||
<!-- S→C response: -->
|
||||
<navigateResponse menu="recents">
|
||||
<totalItems>4</totalItems>
|
||||
<items>
|
||||
<item type="stationurl" source="TUNEIN" location="/v1/playback/station/s25260"
|
||||
sourceAccount="TUNEIN" isPresetable="true" id="0">
|
||||
<itemName>1LIVE</itemName>
|
||||
</item>
|
||||
...
|
||||
</items>
|
||||
</navigateResponse>
|
||||
```
|
||||
|
||||
Use `type="update"` on `<info>` for subsequent refresh calls on the same menu.
|
||||
|
||||
---
|
||||
|
||||
## Settings
|
||||
|
||||
### System Timeout (Power-Saving)
|
||||
|
||||
```xml
|
||||
<!-- Read -->
|
||||
<msg><header deviceID="{device_id}" url="systemtimeout" method="GET">
|
||||
<request requestID="{n}"><info type="new"/></request>
|
||||
</header></msg>
|
||||
|
||||
<!-- Write: disable auto power-off -->
|
||||
<msg><header deviceID="{device_id}" url="systemtimeout" method="POST">
|
||||
<request requestID="{n}"><info mainNode="systemtimeout" type="new"/><sourceItem source="SETTINGS"/></request>
|
||||
</header><body><systemtimeout><powersaving_enabled>false</powersaving_enabled></systemtimeout></body></msg>
|
||||
```
|
||||
|
||||
### Clock Display
|
||||
|
||||
```xml
|
||||
<msg><header deviceID="{device_id}" url="clockDisplay" method="POST">
|
||||
<request requestID="{n}"><info mainNode="clockDisplayBypass" type="new"/></request>
|
||||
</header><body>
|
||||
<clockDisplay>
|
||||
<clockConfig timezoneInfo="Europe/Berlin" timeFormat="TIME_FORMAT_12HOUR_ID"/>
|
||||
</clockDisplay>
|
||||
</body></msg>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Keepalive
|
||||
|
||||
The app sends a ping roughly every 30 seconds:
|
||||
|
||||
```xml
|
||||
<!-- C→S -->
|
||||
<msg><header deviceID="{device_id}" url="webserver/pingRequest" method="GET">
|
||||
<request requestID="{n}"><info type="new"/></request>
|
||||
</header></msg>
|
||||
|
||||
<!-- S→C -->
|
||||
<pingRequest pong="true"/>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Server Push Events (Unsolicited)
|
||||
|
||||
The server wraps push events in `<updates deviceID="{device_id}">`:
|
||||
|
||||
| Event element | Trigger |
|
||||
|----------------------------------|-----------------------------------------------------------------------------------------------------|
|
||||
| `nowPlayingUpdated` | Source/track changed, playback state changed |
|
||||
| `nowSelectionUpdated` | Preset slot highlighted (UI selection changed) |
|
||||
| `recentsUpdated` | Recents list changed |
|
||||
| `presetsUpdated` | Preset saved or modified |
|
||||
| `volumeUpdated` | Volume changed (any source) |
|
||||
| `bassUpdated` | Bass level changed |
|
||||
| `connectionStateUpdated` | Wi-Fi signal strength changed (`EXCELLENT_SIGNAL`, `GOOD_SIGNAL`, `MARGINAL_SIGNAL`, `POOR_SIGNAL`) |
|
||||
| `soundTouchConfigurationUpdated` | Setup state changed (e.g. `SOUNDTOUCH_CONFIGURING`) |
|
||||
| `infoUpdated` | Device info changed (e.g. after un-pairing) |
|
||||
| `sourcesUpdated` | Available sources list changed |
|
||||
|
||||
Separate push (not inside `<updates>`):
|
||||
```xml
|
||||
<userActivityUpdate deviceID="{device_id}"/>
|
||||
```
|
||||
Sent after any physical or app-initiated user action.
|
||||
|
||||
---
|
||||
|
||||
## Notification (Client → Device Push)
|
||||
|
||||
Used by the app to notify the device of data that has changed on the service side
|
||||
(e.g. after syncing presets from cloud). Header uses `propagate="false"`:
|
||||
|
||||
```xml
|
||||
<msg>
|
||||
<header deviceID="{device_id}" url="notification" method="POST" propagate="false">
|
||||
<request requestID="{n}"><info mainNode="presetsUpdated" type="new"/></request>
|
||||
</header>
|
||||
<body>
|
||||
<updates deviceID="{device_id}"><presetsUpdated/></updates>
|
||||
</body>
|
||||
</msg>
|
||||
|
||||
<!-- S→C response: -->
|
||||
<status>/notification</status>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Complete Pairing Sequence (Minimal)
|
||||
|
||||
To pair a freshly factory-reset speaker to a Bose account (soundtouch-service must be
|
||||
running and authenticated):
|
||||
|
||||
```
|
||||
1. Connect WebSocket to ws://{speakerIP}:8090/
|
||||
2. Receive: <SoundTouchSdkInfo .../>
|
||||
3. GET info → confirm margeAccountUUID is empty
|
||||
4. POST setup SETUP_START
|
||||
5. POST setup SETUP_IDENTIFY_DEVICE_ENTER (timeout=300000)
|
||||
(user physically presses button on speaker to confirm identity)
|
||||
6. POST language <sysLanguage>3</sysLanguage>
|
||||
7. POST setup SETUP_ENTER
|
||||
8. POST setup SETUP_IDENTIFY_DEVICE_LEAVE
|
||||
9. POST name <name>{desired name}</name>
|
||||
10. POST setMargeAccount <PairDeviceWithAccount>
|
||||
<accountId>{accountId}</accountId>
|
||||
<userAuthToken>Bearer {token}</userAuthToken>
|
||||
</PairDeviceWithAccount>
|
||||
→ device responds with info, margeAccountUUID is now set
|
||||
11. POST setup SETUP_LEAVE
|
||||
12. GET pushCustomerSupportInfoToMarge (telemetry, safe to skip)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Source References
|
||||
|
||||
- `bose-pairing-20260502-155542` — Session 1: initial pairing of SoundTouch 10 to account 9569497
|
||||
- `bose-pairing-20260502-165549` — Session 2: re-pairing and full operation (TuneIn, Spotify, presets)
|
||||
- Raw WebSocket files: `scripts/android/mitm/{session}/mirror/{n}-websocket/*.txt`
|
||||
- Companion HTTP upgrade files: `scripts/android/mitm/{session}/mirror/{n}-*.http`
|
||||
@@ -171,6 +171,7 @@ func (d *DNSDiscovery) shouldIntercept(hostname string) bool {
|
||||
"music.api.bose.com",
|
||||
"bosecm.com",
|
||||
"bose.io",
|
||||
"downloads.bose.com",
|
||||
}
|
||||
|
||||
for _, service := range interceptList {
|
||||
|
||||
@@ -2038,3 +2038,33 @@ func (ds *DataStore) DeleteGroup(account, groupID string) error {
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// SaveTuneInFavorite records a TuneIn station as favorited by creating a marker file.
|
||||
// File presence indicates the station is a favorite; no content is stored.
|
||||
func (ds *DataStore) SaveTuneInFavorite(stationID string) error {
|
||||
if ds == nil || ds.DataDir == "" || stationID == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
dir := ds.safeJoin("tunein", "favorites")
|
||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(ds.safeJoin("tunein", "favorites", stationID), nil, 0644)
|
||||
}
|
||||
|
||||
// DeleteTuneInFavorite removes a previously saved TuneIn favorite marker file.
|
||||
// Returns nil if the station was not favorited.
|
||||
func (ds *DataStore) DeleteTuneInFavorite(stationID string) error {
|
||||
if ds == nil || ds.DataDir == "" || stationID == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
err := os.Remove(ds.safeJoin("tunein", "favorites", stationID))
|
||||
if os.IsNotExist(err) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ package handlers
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/gesellix/bose-soundtouch/pkg/service/bmx"
|
||||
"github.com/gesellix/bose-soundtouch/pkg/service/datastore"
|
||||
"github.com/go-chi/chi/v5"
|
||||
)
|
||||
|
||||
@@ -148,6 +150,29 @@ func (s *Server) HandleTuneInToken(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
// HandleOrionToken returns an anonymous Orion access token.
|
||||
// The token is a base64-encoded JSON serial, matching the pattern used by the real Bose BMX Orion service.
|
||||
func (s *Server) HandleOrionToken(w http.ResponseWriter, _ *http.Request) {
|
||||
token := datastore.GenerateSerialSecret("orion")
|
||||
|
||||
resp := map[string]interface{}{
|
||||
"_embedded": map[string]interface{}{
|
||||
"bmx_account": map[string]string{
|
||||
"displayName": "",
|
||||
"username": "",
|
||||
},
|
||||
},
|
||||
"access_token": token,
|
||||
"refresh_token": token,
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||
http.Error(w, "Failed to encode response", http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleOrionPlayback returns Orion playback information.
|
||||
func (s *Server) HandleOrionPlayback(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Header.Get("Authorization") == "" {
|
||||
@@ -341,3 +366,27 @@ func (s *Server) HandleTuneInSearch(w http.ResponseWriter, r *http.Request) {
|
||||
http.Error(w, "Failed to encode response", http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleTuneInFavorite handles POST /bmx/tunein/v1/favorite/{stationID}.
|
||||
func (s *Server) HandleTuneInFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
stationID := chi.URLParam(r, "stationID")
|
||||
if err := s.ds.SaveTuneInFavorite(stationID); err != nil {
|
||||
log.Printf("Failed to persist TuneIn favorite %s: %v", stationID, err)
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusAccepted)
|
||||
_, _ = w.Write([]byte("{}"))
|
||||
}
|
||||
|
||||
// HandleTuneInDeleteFavorite handles DELETE /bmx/tunein/v1/favorite/{stationID}.
|
||||
func (s *Server) HandleTuneInDeleteFavorite(w http.ResponseWriter, r *http.Request) {
|
||||
stationID := chi.URLParam(r, "stationID")
|
||||
if err := s.ds.DeleteTuneInFavorite(stationID); err != nil {
|
||||
log.Printf("Failed to delete TuneIn favorite %s: %v", stationID, err)
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
w.WriteHeader(http.StatusAccepted)
|
||||
_, _ = w.Write([]byte("{}"))
|
||||
}
|
||||
|
||||
@@ -17,6 +17,9 @@ var webFS embed.FS
|
||||
//go:embed static/media/*
|
||||
var mediaFS embed.FS
|
||||
|
||||
//go:embed static/ced
|
||||
var cedFS embed.FS
|
||||
|
||||
//go:embed static/bmx_services.json
|
||||
var bmxServicesJSON []byte
|
||||
|
||||
@@ -59,3 +62,21 @@ func (s *Server) HandleMedia() http.HandlerFunc {
|
||||
http.StripPrefix("/media", http.FileServer(http.FS(subFS))).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleBmxIcons returns a handler for serving BMX icon assets (media.bose.io /bmx-icons/*).
|
||||
func (s *Server) HandleBmxIcons() http.HandlerFunc {
|
||||
subFS, _ := fs.Sub(mediaFS, "static/media")
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
http.FileServer(http.FS(subFS)).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
// HandleCedStatic returns a handler for serving downloads.bose.com CED static files.
|
||||
func (s *Server) HandleCedStatic() http.HandlerFunc {
|
||||
subFS, _ := fs.Sub(cedFS, "static/ced")
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
http.StripPrefix("/ced", http.FileServer(http.FS(subFS))).ServeHTTP(w, r)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,7 +417,7 @@ func (m *mockSSH) Run(command string) (string, error) {
|
||||
m.runCount++
|
||||
if m.runCount > 1 {
|
||||
// Return updated hosts for verification
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
|
||||
@@ -0,0 +1,312 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<INDEX REVISION="02.11.00">
|
||||
|
||||
<!-- SoundTouch 20 -->
|
||||
<DEVICE ID="0x0923" PRODUCTNAME="SoundTouch 20">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 30 -->
|
||||
<DEVICE ID="0x0924" PRODUCTNAME="SoundTouch 30">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Portable -->
|
||||
<DEVICE ID="0x0925" PRODUCTNAME="SoundTouch Portable">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="105879988" CRC="0x2d5a971e" FILENAME="Update_ti_27.0.6.46330.5043500.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App HTML5 -->
|
||||
<DEVICE ID="0x0931" PRODUCTNAME="SoundTouch App HTML5">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.13" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/" DOCVERSION="MjAxOC0wMi0xNQ==">
|
||||
<IMAGE SUBID="0" LENGTH="18377810" CRC="0xaa8209b0" FILENAME="Stockholm_27.0.13-4277-8963611.zip" />
|
||||
<NOTES URL="https://downloads.bose.com/ced/soundtouch/mr4_22097fe2/relnotes/releasenotes_##LANG##.xml" />
|
||||
<FEATURE NAME="TRIO" STATUS="OFF" />
|
||||
<FEATURE NAME="ASTREAM" STATUS="OFF" />
|
||||
<FEATURE NAME="RVT" STATUS="ON" />
|
||||
<FEATURE NAME="AD" STATUS="OFF" />
|
||||
</RELEASE>
|
||||
<PROTOCOL REVISION="67">
|
||||
<IMAGE PLATFORM="IOS" URL="https://itunes.apple.com/us/app/soundtouch-controller/id708379313" />
|
||||
<IMAGE PLATFORM="ANDROID" URL="https://play.google.com/store/apps/details?id=com.bose.soundtouch" />
|
||||
<IMAGE PLATFORM="KINDLE" URL="http://www.amazon.com/gp/mas/dl/android?asin=B00R4VJMMU"/>
|
||||
<IMAGE PLATFORM="PC" URL="http://www.bose.com/soundtouch_app_update" />
|
||||
</PROTOCOL>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Wave SoundTouch -->
|
||||
<DEVICE ID="0x0932" PRODUCTNAME="Wave SoundTouch">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/n/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="112367416" CRC="0x49d88de4" FILENAME="Update_ti_27.0.6.46330.5043500.nelson.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Developer Keys) -->
|
||||
<DEVICE ID="0x0944" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xf39b7005" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Developer Keys) -->
|
||||
<DEVICE ID="0x0945" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xf39b7005" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Stereo JC -->
|
||||
<DEVICE ID="0x0935" PRODUCTNAME="SoundTouch Stereo JC">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="110991796" CRC="0x01e35713" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-4 -->
|
||||
<DEVICE ID="0x0936" PRODUCTNAME="SoundTouch SA-4">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="110991796" CRC="0x01e35713" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Cinemate -->
|
||||
<DEVICE ID="0x0938" PRODUCTNAME="Cinemate">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/t/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="114125624" CRC="0x562de6f1" FILENAME="Update_ti_27.0.6.46330.5043500.triode.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 10 -->
|
||||
<DEVICE ID="0x0939" PRODUCTNAME="SoundTouch 10">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/r/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="95906856" CRC="0xf18fe026" FILENAME="Update_ti_27.0.6.46330.5043500.rhino.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-5 -->
|
||||
<DEVICE ID="0x093A" PRODUCTNAME="SoundTouch SA-5">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/b/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="100957944" CRC="0x0b99190b" FILENAME="Update_ti_27.0.6.46330.5043500.burns.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 20 -->
|
||||
<DEVICE ID="0x093B" PRODUCTNAME="SoundTouch 20">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 30 -->
|
||||
<DEVICE ID="0x093C" PRODUCTNAME="SoundTouch 30">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Wave SoundTouch -->
|
||||
<DEVICE ID="0x093D" PRODUCTNAME="Wave SoundTouch">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/n/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="100297132" CRC="0x2e2fd417" FILENAME="Update_ti_27.0.6.46330.5043500.nelson.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Developer Keys) -->
|
||||
<DEVICE ID="0x0946" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x1858fa51" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Developer Keys) -->
|
||||
<DEVICE ID="0x0947" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x1858fa51" FILENAME="Update_ti_27.0.6.46330.5043500.marconidev.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Stereo JC -->
|
||||
<DEVICE ID="0x0940" PRODUCTNAME="SoundTouch Stereo JC">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="98921512" CRC="0x07521bda" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch SA-4 -->
|
||||
<DEVICE ID="0x0941" PRODUCTNAME="SoundTouch SA-4">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/l/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="98921512" CRC="0x07521bda" FILENAME="Update_ti_27.0.6.46330.5043500.lisa.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Cinemate -->
|
||||
<DEVICE ID="0x0942" PRODUCTNAME="Cinemate">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/t/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="102700460" CRC="0xfbcab635" FILENAME="Update_ti_27.0.6.46330.5043500.triode.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Production Keys) -->
|
||||
<DEVICE ID="0x0933" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xd48b1181" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Production Keys) -->
|
||||
<DEVICE ID="0x0934" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="215402464" CRC="0xd48b1181" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.scm.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- VideoWave (Production Keys) -->
|
||||
<DEVICE ID="0x093E" PRODUCTNAME="VideoWave">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x3f489bd5" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle (Production Keys) -->
|
||||
<DEVICE ID="0x093F" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/m/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="203977300" CRC="0x3f489bd5" FILENAME="Update_ti_27.0.6.46330.5043500.marconiprod.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle -->
|
||||
<DEVICE ID="0x094B" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.5043530" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/Update.avu">
|
||||
<IMAGE SUBID="0" LENGTH="475186323" CRC="0x523be82b" FILENAME="Update_signed_27.0.6.5043530.avu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- Lifestyle -->
|
||||
<DEVICE ID="0x0948" PRODUCTNAME="Lifestyle">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2">
|
||||
<IMAGE SUBID="0" LENGTH="105878364" CRC="0xc0b3d401" FILENAME="Update_ti_27.0.6.46330.5043500.bardeen.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch 300 -->
|
||||
<DEVICE ID="0x0949" PRODUCTNAME="SoundTouch 300">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/g/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="102384736" CRC="0xed21efd3" FILENAME="Update_ti_27.0.6.46330.5043500.ginger.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch Wireless Link adapter -->
|
||||
<DEVICE ID="0x094A" PRODUCTNAME="SoundTouch Wireless Link adapter">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.6.46330.5043500" HTTPHOST="https://downloads.bose.com" URLPATH="ced/soundtouch/mr4_22097fe2" USBPATH="/ced/soundtouch/mr4_22097fe2/stu/s/sm2/Update.stu">
|
||||
<IMAGE SUBID="0" LENGTH="99445800" CRC="0x536e6d6f" FILENAME="Update_ti_27.0.6.46330.5043500.sm2.stu" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Android -->
|
||||
<DEVICE ID="0x000A" PRODUCTNAME="SoundTouch App-A" SUPPORTEDOS="4.4.0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.1" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="23351636" CRC="0x425b2109" FILENAME="SoundTouch-release_27.0.1-3345-bafe54d.apk" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for iOS -->
|
||||
<DEVICE ID="0x000B" PRODUCTNAME="SoundTouch App-I" SUPPORTEDOS="8.0.0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.1" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="47413805" CRC="0xe4bf4961" FILENAME="SoundTouch-27.0.1-3498-699a15c.ipa" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Mac (pre OS X 10.9) -->
|
||||
<DEVICE ID="0x000C" PRODUCTNAME="SoundTouch App-M" SUPPORTEDOS="mac_10_8">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="117483653" CRC="0xd6ca482b" FILENAME="SoundTouch-app-installer-27.0.0-3377-1037583.dmg" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for Mac (OS X 10.9 & later) -->
|
||||
<DEVICE ID="0x000E" PRODUCTNAME="SoundTouch App-M" SUPPORTEDOS="mac_10_8">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="117483653" CRC="0xd6ca482b" FILENAME="SoundTouch-app-installer-27.0.0-3377-1037583.dmg" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
<!-- SoundTouch App for PC -->
|
||||
<DEVICE ID="0x000D" PRODUCTNAME="SoundTouch App-W" SUPPORTEDOS="windows_6_0">
|
||||
<HARDWARE REVISION="00.01.00">
|
||||
<RELEASE REVISION="27.0.0.3377" HTTPHOST="downloads.bose.com" URLPATH="/ced/soundtouch/mr4_22097fe2/">
|
||||
<IMAGE SUBID="0" LENGTH="120307712" CRC="0x3e97da1f" FILENAME="SoundTouch-app-installer-27.0.0.3377.msi" />
|
||||
</RELEASE>
|
||||
</HARDWARE>
|
||||
</DEVICE>
|
||||
|
||||
</INDEX>
|
||||
@@ -0,0 +1,101 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<releases>
|
||||
<release revision="27.0.0">
|
||||
<feature>Fixed bugs and did some general cleaning up under the hood</feature>
|
||||
</release>
|
||||
<release revision="26.0.0">
|
||||
<feature>Fixed bugs and did some general cleaning up under the hood</feature>
|
||||
</release>
|
||||
<release revision="25.0.0">
|
||||
<feature>Airplay2 support arrives for SoundTouch Wireless Link adapter!</feature>
|
||||
<feature>Added improvements to the setup experience</feature>
|
||||
<feature>General bug fixes and improvements</feature>
|
||||
</release>
|
||||
<release revision="24.0.0">
|
||||
<feature>As usual, this release includes bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision ="23.0.0">
|
||||
<feature platform="IOS">Added lots of under the hood changes to improve the app experience on iOS13</feature>
|
||||
<feature platform="ANDROID">Fixed an issue with Wi-Fi setup on certain Android devices</feature>
|
||||
<feature>Additional bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision ="22.0.0">
|
||||
<feature>We've added RadioPlayer to our family of music services! Enjoy thousands of regional stations and on demand programs right at your fingertips. Available in select regions</feature>
|
||||
<feature>You can now disable the automatic power save mode in the app for your SoundTouch 10, SoundTouch 20 and SoundTouch 30</feature>
|
||||
<feature>Additional bug fixes & enhancements</feature>
|
||||
</release>
|
||||
<release revision ="21.0.0">
|
||||
<feature>Save more music — you can now save Favorites along with your 6 presets</feature>
|
||||
<feature>We improved Spotify search so you can get grooving faster</feature>
|
||||
<feature>It's now easier to access Recently Played</feature>
|
||||
<feature>Little tweaks here and there to make the app better for you</feature>
|
||||
</release>
|
||||
<release revision="20.0.0">
|
||||
<feature>Say hello to TuneIn (and goodbye to Internet Radio)</feature>
|
||||
<feature>Easily browse through your favorite artists in Spotify</feature>
|
||||
<feature>We made it easier to create an account and reset your password</feature>
|
||||
<feature>General improvements made with our special app-tuning forks</feature>
|
||||
</release>
|
||||
<release revision="19.0.0">
|
||||
<feature>Security related updates to improve application configuration and operation</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="18.0.0">
|
||||
<feature>By updating, you agree to our new Privacy Policy and Terms of Use available at https://worldwide.bose.com/privacypolicy and https://worldwide.bose.com/termsofuse</feature>
|
||||
<feature>Security related updates to improve application configuration and operation</feature>
|
||||
<feature>We tuned the app to include some major performance and stability improvements</feature>
|
||||
</release>
|
||||
<release revision="17.0.0">
|
||||
<feature>Enhanced broadcasting performance of AUX/wired input to other SoundTouch speakers</feature>
|
||||
<feature>Search enabled in Amazon Music</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="16.0.0">
|
||||
<feature><![CDATA[By updating the app, you agree to our new Privacy Policy, available at <a href="https://www.soundtouch.com/privacy">SoundTouch.com/privacy</a>]]></feature>
|
||||
<feature>Broadcasting of AUX/wired input to other SoundTouch speakers</feature>
|
||||
<feature>Volume and grouping enhancements</feature>
|
||||
<feature>New "Just for You" section</feature>
|
||||
<feature>Many other bug fixes and enhancements</feature>
|
||||
</release>
|
||||
<release revision="15.0.0">
|
||||
<feature>As usual, this release includes bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision="14.0.0">
|
||||
<feature>We made your SoundTouch® experience better, with a completely redesigned app that's easier to use and nicer to look at</feature>
|
||||
<feature>Stereo pairing for SoundTouch® 10 speakers</feature>
|
||||
<feature>QQ Music QPlay streaming support (China only)</feature>
|
||||
<feature platform="IOS">Now you can control your speaker from your Apple Watch® – just open the Watch app and add SoundTouch®</feature>
|
||||
<feature platform="IOS">There’s a new SoundTouch® widget available for iOS – add it in the Today View so you can control your speaker even while your device is locked</feature>
|
||||
<feature>We made speaker selection and volume control more reliable</feature>
|
||||
<feature>The app now shows Pandora’s new logo</feature>
|
||||
<feature>Plus, we fixed some bugs and made things more stable</feature>
|
||||
</release>
|
||||
<release revision="13.0.0">
|
||||
<feature>Updated music library experience with faster navigation, easier search, and more album art</feature>
|
||||
<feature platform="ANDROID">Improved Android Wear support</feature>
|
||||
<feature>Bug fixes</feature>
|
||||
</release>
|
||||
<release revision="12.0.0">
|
||||
<feature>Added Amazon Prime Music (US Only)</feature>
|
||||
<feature platform="ANDROID">Android Wear notifications support</feature>
|
||||
<feature platform="ANDROID">Android lock-screen controls</feature>
|
||||
<feature>SiriusXM® Business Account support</feature>
|
||||
<feature>Over 30 bug fixes</feature>
|
||||
</release>
|
||||
<release revision="7.0.0">
|
||||
<feature>Support for additional music services (where available)</feature>
|
||||
<feature>Search for a track, album, or artist in your stored music library</feature>
|
||||
<feature>Adjust the bass performance of your SoundTouch® system</feature>
|
||||
<feature>Additional bug fixes and performance improvements</feature>
|
||||
</release>
|
||||
<release revision="6.0.0">
|
||||
<feature>Enables wireless setup of SoundTouch® products</feature>
|
||||
<feature>Faster connection to speakers on your network</feature>
|
||||
</release>
|
||||
<release revision="4.0.0">
|
||||
<feature>Enhanced detection of speakers on your network</feature>
|
||||
</release>
|
||||
<release revision="3.0.0">
|
||||
<feature>Improved system discovery</feature>
|
||||
</release>
|
||||
</releases>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="bose_account_create_1"><item><topic>Why do I need to create an account?</topic><answer><![CDATA[<p>A SoundTouch<sup>®</sup> account is required to keep track of your speakers, presets and music service. In addition, an account helps us better support your speaker and troubleshoot problems.</p> <p>If you are setting up multiple SoundTouch<sup>®</sup> speakers, we strongly recommend that you set them up on the same SoundTouch<sup>®</sup> account. Also, any time you install the SoundTouch<sup>®</sup> app on another mobile device or computer, you are required to sign in using your SoundTouch<sup>®</sup> account info.</p>]]></answer></item><item><topic>Why do I have to provide my email address?</topic><answer><![CDATA[<p>Each SoundTouch<sup>®</sup> account is uniquely identified by an email address. Notifications of software and service updates are sent to this address. When you provide your email address, you can choose (or decline) to receive emails from Bose<sup>®</sup> about new products, events and other announcements. Please read our privacy policy to learn more about how we use your email address by selecting <strong>Settings > About > LEGAL</strong>.</p> <p>If you prefer not to provide your email address, you can set up your speaker anonymously by providing a single-purpose or even non-working email address. In this case, your speaker will continue to receive system software updates, but you will not receive email notifications explaining the new features when these updates are available.</p>]]></answer></item><item><topic>Is there a minimum character or format requirement for the password?</topic><answer><![CDATA[<p>Your password must be at least six characters in length. The password field is case sensitive.</p>]]></answer></item><item><topic>Why should I provide my name and address?</topic><answer><![CDATA[<p>We use your name and address to improve your customer service experience should you need assistance. Please read our privacy policy to understand other ways we may use your name and address by selecting <strong>Settings > About > LEGAL.</strong></p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_ios_settings"><item><topic>How do I change my network?</topic><answer><![CDATA[<p>Change your network from the Settings menu on your mobile device.</p><ol><li><p>On your mobile device, tap the <strong>Home</strong> button.</p></li><li><p>Tap <strong>Settings > Wi-Fi</strong>.</p> <p><strong>Note</strong>: By default, the Settings menu is on the Home screen.</p></li><li><p>Select the Wi-Fi<sup>®</sup> network starting with <strong>Bose</strong>.</p></li><li><p>Tap the <strong>Home</strong> button.</p></li><li><p>Tap the SoundTouch<sup>®</sup> icon to return to the SoundTouch<sup>®</sup> app.</p></li></ol>]]></answer></item><item><topic>Why do I need to connect to the "Bose" Wi-Fi<sup>®</sup> network?</topic><answer><![CDATA[<p>Connecting to the "Bose" Wi-Fi<sup>®</sup> network enables your speaker to be set up on your home Wi-Fi<sup>®</sup> network. Connecting to this network is temporary. After you set up the speaker, you reconnect to your home network.</p>]]></answer></item><item><topic>I can't find the "Bose" Wi-Fi<sup>®</sup> network.</topic><answer><![CDATA[<p>Make sure that you're looking for the Wi-Fi<sup>®</sup> network starting with Bose. It may take up to 30 seconds for the network to appear on the list.</p><p>If the network does not appear after 30 seconds, select <strong>I Don't See This Network</strong> to put the system into setup mode and continue with setup.</p>]]></answer></item><item><topic>How do I return to the app from my mobile device's Settings menu?</topic><answer><![CDATA[<ol><li><p>On your mobile device, tap the <strong>Home</strong> button.</p><p>On the Home screen, tap the SoundTouch<sup>®</sup> icon.</p></li></ol>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_lisa"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your system is not in setup mode.</p><ol><li><p>Power on your system.</p></li><li><p>Press and hold the <strong>Control</strong> button on the back of the SoundTouch<sup>®</sup> wireless adapter for 1-8 seconds.</p> <p><strong>Note</strong>: If the Wi-Fi<sup>®</sup> indicator does not glow solid amber, press and hold the <strong>Control</strong> button again, making sure to release the button before 8 seconds elapses.</p></li></ol>]]></answer></item><item><topic>Where is the Control button?</topic><answer><![CDATA[<p>The Control button is on the SoundTouch<sup>®</sup> wireless adapter's connector panel.</p>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the SoundTouch<sup>®</sup> wireless adapter's connector panel.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_nelson"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your system is not in setup mode.</p><ol><li><p>Power on your system.</p></li><li><p>Press and hold the <strong>Control</strong> button on the back of the SoundTouch<sup>®</sup> pedestal for 1-8 seconds.</p> <p>The Wi-Fi<sup>®</sup> indicator glows solid amber.</p> <p>The message <em>SETUP SEE INSTRUCTIONS</em> appears on the display.</p> <p>Your system is now in setup mode.</p></li></ol><p><strong>Note</strong>: If the Wi-Fi<sup>®</sup> indicator does not glow solid amber and the message does not appear on the display, press and hold the <strong>Control</strong> button again, making sure to release the button before 8 seconds elapses.</p>]]></answer></item><item><topic>Where is the Control button?</topic><answer><![CDATA[<p>The Control button is on the SoundTouch<sup>®</sup> pedestal’s connector panel.</p>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the SoundTouch<sup>®</sup> pedestal’s connector panel.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_select_system">
|
||||
<item>
|
||||
<topic>What is the name of my speaker?</topic>
|
||||
<answer>
|
||||
<![CDATA[<p>Check the carton or the owner's guide that shipped with your speaker. You may also find the name of the speaker on a label on the back or bottom of the speaker.</p>]]>
|
||||
</answer></item>
|
||||
<item>
|
||||
<topic>What is the "Bose" Wi-Fi<sup>®</sup> network?</topic>
|
||||
<answer>
|
||||
<![CDATA[<p>Your speaker has its own built-in Wi-Fi network that you use to set up your speaker. You will temporarily connect to this network on the device you are using, set the speaker up on your network and then reconnect to your home Wi-Fi network.</p>]]>
|
||||
</answer>
|
||||
</item>
|
||||
</page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="gabbo_recovery_smt"><item><topic>The Wi-Fi<sup>®</sup> indicator isn't glowing amber. What do I do now?</topic><answer><![CDATA[<p>If the Wi-Fi<sup>®</sup> indicator is not glowing solid amber, your speaker is not in setup mode.</p><ol><li><p>Power on your speaker.</p></li><li><p>On the button pad, press and hold the <strong>2</strong> and <strong>Volume -</strong> buttons until the countdown reaches 1 and a message similar to "Setup" appears on the display.</p> <p>The Wi-Fi<sup>®</sup> indicator glows solid amber.</p> <p>Your system is now in Setup mode.</p></li></ol>]]></answer></item><item><topic>Where is the Wi-Fi<sup>®</sup> indicator?</topic><answer><![CDATA[<p>The Wi-Fi<sup>®</sup> indicator is on the front of the speaker.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="name_device"><item><topic>Why should I name my speaker?</topic><answer><![CDATA[<p>Naming the speaker makes it easy to recognize in the app when you have multiple speakers. You can use a name that identifies the space where the speaker is placed, for example, such as Living Room.</p>]]></answer></item><item><topic>Can I rename this speaker later?</topic><answer><![CDATA[<p>Yes, you can rename the speaker from the Settings menu. Select <strong>Settings > Speaker Settings</strong>, then select your speaker.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="prompt_other_devices"><item><topic>Can I set up another speaker later?</topic><answer><![CDATA[<p>Yes. Select <strong>Settings > Add or Reconnect Speaker</strong>.</p>]]></answer></item><item><topic>How many speakers can I add to my network?</topic><answer><![CDATA[<p>You can add as many speakers to your network as determined by the capacity of your home Wi-Fi<sup>®</sup> network.</p>]]></answer></item></page>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="setup_done"/>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<page id="wifi_or_ethernet_ask"><item><topic>How should I connect my speaker to my network?</topic><answer><![CDATA[<p>You can connect your speaker to your network using a Wi-Fi<sup>®</sup> or Ethernet connection. If you select Ethernet, make sure the Ethernet cable from your router can reach your speaker.</p> <p><strong>Note</strong>: If you are setting up a SoundTouch<sup>®</sup> 10 speaker, SoundTouch<sup>®</sup> Wireless Link or SoundTouch<sup>®</sup> Portable Wi-Fi<sup>®</sup> music system, you must select <strong>WI-FI</strong>.</p>]]></answer></item><item><topic>Will there be a difference in performance between a wired and a wireless setup?</topic><answer><![CDATA[<p>Performance varies depending on the number of devices on your network and how the devices are connected. A wireless connection provides more flexibility when placing your system. A wired connection is better when your wireless router's signal is weak or can't be received.</p>]]></answer></item></page>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -278,6 +278,8 @@ func (m *Manager) GetMigrationSummary(deviceIP, targetURL, proxyURL string, opti
|
||||
"bose-prod.apigee.net",
|
||||
"worldwide.bose.com",
|
||||
"music.api.bose.com",
|
||||
"media.bose.io",
|
||||
"downloads.bose.com",
|
||||
}
|
||||
|
||||
var hostsLines []string
|
||||
@@ -1061,6 +1063,8 @@ func (m *Manager) migrateViaHosts(deviceIP, targetURL string) (string, error) {
|
||||
"events.api.bosecm.com",
|
||||
"bose-prod.apigee.net",
|
||||
"worldwide.bose.com",
|
||||
"media.bose.io",
|
||||
"downloads.bose.com",
|
||||
}
|
||||
|
||||
hostsContent, err := client.Run("cat /etc/hosts")
|
||||
|
||||
@@ -54,7 +54,7 @@ func TestMigrateViaHosts(t *testing.T) {
|
||||
if command == "cat /etc/hosts" {
|
||||
// Handle both initial read and verification read
|
||||
if len(runCalls) > 2 { // Rough heuristic: verification happens after upload
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
@@ -132,7 +132,7 @@ func TestMigrateViaHosts_UpdateExisting(t *testing.T) {
|
||||
runCount++
|
||||
if command == "cat /etc/hosts" {
|
||||
if runCount > 1 {
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "127.0.0.1 localhost\n192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost\n1.2.3.4\tstreaming.bose.com\n1.2.3.4\tupdates.bose.com", nil
|
||||
}
|
||||
@@ -648,7 +648,7 @@ func TestMigrateViaHosts_SkipCAIfTrusted(t *testing.T) {
|
||||
if command == "cat /etc/hosts" {
|
||||
// Handle both initial read and verification read
|
||||
if len(runCalls) > 2 { // Rough heuristic: verification happens after upload
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com", nil
|
||||
return "192.168.1.100\tstreaming.bose.com\n192.168.1.100\tupdates.bose.com\n192.168.1.100\tstats.bose.com\n192.168.1.100\tbmx.bose.com\n192.168.1.100\tcontent.api.bose.io\n192.168.1.100\tevents.api.bosecm.com\n192.168.1.100\tbose-prod.apigee.net\n192.168.1.100\tworldwide.bose.com\n192.168.1.100\tmedia.bose.io\n192.168.1.100\tdownloads.bose.com", nil
|
||||
}
|
||||
return "127.0.0.1 localhost", nil
|
||||
}
|
||||
|
||||
@@ -1,249 +1,251 @@
|
||||
Interactions for `20260328-103522-477978/`:
|
||||
|
||||
| sequence number | category | ignore/done | request | response status | filename |
|
||||
|-----------------|----------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|--------------------------------------------------------------------------------------------------------|
|
||||
| 0001 | self | ☑ | GET / | 200 OK | ./self/root/0001-20260328-103539.205-GET.http |
|
||||
| 0002 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0002-20260328-103539.483-GET.http |
|
||||
| 0003 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0003-20260328-103539.514-GET.http |
|
||||
| 0004 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0004-20260328-103539.539-GET.http |
|
||||
| 0005 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0005-20260328-103539.554-GET.http |
|
||||
| 0006 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0006-20260328-103551.537-GET.http |
|
||||
| 0007 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0007-20260328-103551.551-GET.http |
|
||||
| 0008 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0008-20260328-103731.202-GET.http |
|
||||
| 0009 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0009-20260328-103731.221-POST.http |
|
||||
| 0010 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0010-20260328-103731.226-POST.http |
|
||||
| 0011 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0011-20260328-103731.407-POST.http |
|
||||
| 0012 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0012-20260328-103731.625-POST.http |
|
||||
| 0013 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0013-20260328-103731.641-GET.http |
|
||||
| 0014 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0014-20260328-103731.652-POST.http |
|
||||
| 0015 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0015-20260328-103731.725-POST.http |
|
||||
| 0016 | self | ☑ | GET / | 200 OK | ./self/root/0016-20260328-103731.804-GET.http |
|
||||
| 0017 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0017-20260328-103731.806-POST.http |
|
||||
| 0018 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0018-20260328-103732.053-POST.http |
|
||||
| 0019 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0019-20260328-103732.173-POST.http |
|
||||
| 0020 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0020-20260328-103732.229-POST.http |
|
||||
| 0021 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0021-20260328-103733.180-POST.http |
|
||||
| 0022 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0022-20260328-103733.439-GET.http |
|
||||
| 0023 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0023-20260328-103733.587-POST.http |
|
||||
| 0024 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0024-20260328-103733.945-GET.http |
|
||||
| 0025 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0025-20260328-103734.751-GET.http |
|
||||
| 0026 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0026-20260328-103735.894-GET.http |
|
||||
| 0027 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0027-20260328-103735.914-GET.http |
|
||||
| 0028 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0028-20260328-103735.931-GET.http |
|
||||
| 0029 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0029-20260328-103735.954-GET.http |
|
||||
| 0030 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0030-20260328-103736.065-GET.http |
|
||||
| 0031 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0031-20260328-103736.093-GET.http |
|
||||
| 0032 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0032-20260328-103736.130-GET.http |
|
||||
| 0033 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0033-20260328-103737.874-POST.http |
|
||||
| 0034 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/presets/0034-20260328-103905.297-GET.http |
|
||||
| 0035 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0035-20260328-103905.306-GET.http |
|
||||
| 0036 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/presets/0036-20260328-103905.479-GET.http |
|
||||
| 0037 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0037-20260328-103905.669-GET.http |
|
||||
| 0038 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0038-20260328-103905.929-GET.http |
|
||||
| 0039 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0039-20260328-104218.080-GET.http |
|
||||
| 0040 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0040-20260328-104218.267-GET.http |
|
||||
| 0041 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0041-20260328-104218.524-GET.http |
|
||||
| 0042 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0042-20260328-104325.629-GET.http |
|
||||
| 0043 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0043-20260328-104325.814-GET.http |
|
||||
| 0044 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0044-20260328-104326.087-GET.http |
|
||||
| 0045 | upstream | ☑ | DELETE https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}} | 400 Bad Request | ./upstream/streaming/account/{accountId}/device/{device_id}/0045-20260328-104348.987-DELETE.http |
|
||||
| 0046 | self | ☑ | DELETE /streaming/account/{{accountId}}/device/{{device_id}} | 400 Bad Request | ./self/streaming/account/{accountId}/device/{device_id}/0046-20260328-104348.988-DELETE.http |
|
||||
| 0047 | mirror | ☑ | DELETE /streaming/account/{{accountId}}/device/{{device_id}} | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/0047-20260328-104348.989-DELETE.http |
|
||||
| 0048 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0048-20260328-104523.826-POST.http |
|
||||
| 0049 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0049-20260328-104523.828-GET.http |
|
||||
| 0050 | mirror | ☑ | POST /streaming/support/power_on | 400 Bad Request | ./mirror/streaming/support/power_on/0050-20260328-104524.002-POST.http |
|
||||
| 0051 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0051-20260328-104524.277-GET.http |
|
||||
| 0052 | mirror | ☑ | POST /streaming/account/{{accountId}}/device/ | 500 Internal Server Error | ./mirror/streaming/account/{accountId}/device/0052-20260328-105134.442-POST.http |
|
||||
| 0053 | upstream | ☑ | POST https://streaming.bose.com/streaming/account/{{accountId}}/device/ | 201 Created | ./upstream/streaming/account/{accountId}/device/0053-20260328-105134.482-POST.http |
|
||||
| 0054 | self | ☑ | POST /streaming/account/{{accountId}}/device/ | 201 Created | ./self/streaming/account/{accountId}/device/0054-20260328-105134.483-POST.http |
|
||||
| 0055 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0055-20260328-105134.757-GET.http |
|
||||
| 0056 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0056-20260328-105135.102-GET.http |
|
||||
| 0057 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0057-20260328-105135.727-GET.http |
|
||||
| 0058 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0058-20260328-105138.259-GET.http |
|
||||
| 0059 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0059-20260328-105138.265-GET.http |
|
||||
| 0060 | self | ☑ | POST /streaming/support/customersupport | 200 OK | ./self/streaming/support/customersupport/0060-20260328-105138.304-POST.http |
|
||||
| 0061 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0061-20260328-105138.369-GET.http |
|
||||
| 0062 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0062-20260328-105138.442-GET.http |
|
||||
| 0063 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0063-20260328-105138.464-GET.http |
|
||||
| 0064 | mirror | ☑ | POST /streaming/support/customersupport | 200 OK | ./mirror/streaming/support/customersupport/0064-20260328-105138.499-POST.http |
|
||||
| 0065 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0065-20260328-105138.554-GET.http |
|
||||
| 0066 | upstream | ☑ | GET https://events.api.bosecm.com/v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./upstream/v1/blacklist/{device_id}/0066-20260328-105138.587-GET.http |
|
||||
| 0067 | self | ☑ | GET /v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./self/v1/blacklist/{device_id}/0067-20260328-105138.588-GET.http |
|
||||
| 0068 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0068-20260328-105138.703-GET.http |
|
||||
| 0069 | self | ☑ | GET / | 200 OK | ./self/root/0069-20260328-105138.868-GET.http |
|
||||
| 0070 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0070-20260328-105139.565-GET.http |
|
||||
| 0071 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0071-20260328-105139.581-GET.http |
|
||||
| 0072 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0072-20260328-105139.612-GET.http |
|
||||
| 0073 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0073-20260328-105139.857-GET.http |
|
||||
| 0074 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0074-20260328-105139.861-GET.http |
|
||||
| 0075 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0075-20260328-105140.030-GET.http |
|
||||
| 0076 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0076-20260328-105140.172-GET.http |
|
||||
| 0077 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0077-20260328-105140.196-GET.http |
|
||||
| 0078 | upstream | ☑ | GET https://events.api.bosecm.com/v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./upstream/v1/blacklist/{device_id}/0078-20260328-105146.094-GET.http |
|
||||
| 0079 | self | ☑ | GET /v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./self/v1/blacklist/{device_id}/0079-20260328-105146.094-GET.http |
|
||||
| 0080 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0080-20260328-105146.457-POST.http |
|
||||
| 0081 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0081-20260328-105146.867-POST.http |
|
||||
| 0082 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0082-20260328-105148.464-POST.http |
|
||||
| 0083 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0083-20260328-105148.876-POST.http |
|
||||
| 0084 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0084-20260328-105549.637-POST.http |
|
||||
| 0085 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0085-20260328-105549.645-GET.http |
|
||||
| 0086 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0086-20260328-105549.665-POST.http |
|
||||
| 0087 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0087-20260328-105549.864-POST.http |
|
||||
| 0088 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0088-20260328-105550.089-POST.http |
|
||||
| 0089 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0089-20260328-105550.097-GET.http |
|
||||
| 0090 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0090-20260328-105551.010-POST.http |
|
||||
| 0091 | self | ☑ | GET / | 200 OK | ./self/root/0091-20260328-105551.041-GET.http |
|
||||
| 0092 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0092-20260328-105551.096-POST.http |
|
||||
| 0093 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0093-20260328-105551.181-POST.http |
|
||||
| 0094 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0094-20260328-105551.431-POST.http |
|
||||
| 0095 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0095-20260328-105551.503-POST.http |
|
||||
| 0096 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0096-20260328-105551.592-POST.http |
|
||||
| 0097 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0097-20260328-105552.101-POST.http |
|
||||
| 0098 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0098-20260328-105552.239-GET.http |
|
||||
| 0099 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0099-20260328-105552.510-POST.http |
|
||||
| 0100 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0100-20260328-105552.656-GET.http |
|
||||
| 0101 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0101-20260328-105552.796-GET.http |
|
||||
| 0102 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0102-20260328-105554.172-GET.http |
|
||||
| 0103 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0103-20260328-105554.207-GET.http |
|
||||
| 0104 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0104-20260328-105554.210-GET.http |
|
||||
| 0105 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0105-20260328-105554.216-GET.http |
|
||||
| 0106 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0106-20260328-105554.347-GET.http |
|
||||
| 0107 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0107-20260328-105554.395-GET.http |
|
||||
| 0108 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0108-20260328-105554.406-GET.http |
|
||||
| 0109 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0109-20260328-105556.138-POST.http |
|
||||
| 0110 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0110-20260328-105606.529-GET.http |
|
||||
| 0111 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0111-20260328-105606.699-GET.http |
|
||||
| 0112 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0112-20260328-105606.961-GET.http |
|
||||
| 0113 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0113-20260328-105612.425-POST.http |
|
||||
| 0114 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0114-20260328-105612.493-POST.http |
|
||||
| 0115 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0115-20260328-105612.582-POST.http |
|
||||
| 0116 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0116-20260328-105612.851-POST.http |
|
||||
| 0117 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0117-20260328-105612.906-POST.http |
|
||||
| 0118 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0118-20260328-105613.000-POST.http |
|
||||
| 0119 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0119-20260328-105614.239-POST.http |
|
||||
| 0120 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0120-20260328-105614.649-POST.http |
|
||||
| 0121 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0121-20260328-111412.273-POST.http |
|
||||
| 0122 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0122-20260328-111412.689-POST.http |
|
||||
| 0123 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0123-20260328-170446.020-GET.http |
|
||||
| 0124 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0124-20260328-170446.206-GET.http |
|
||||
| 0125 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0125-20260328-202258.172-GET.http |
|
||||
| 0126 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0126-20260328-202258.374-GET.http |
|
||||
| 0127 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0127-20260328-202300.656-GET.http |
|
||||
| 0128 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0128-20260328-202300.841-GET.http |
|
||||
| 0129 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0129-20260328-205953.361-GET.http |
|
||||
| 0130 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0130-20260328-205953.560-GET.http |
|
||||
| 0131 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0131-20260328-210005.518-GET.http |
|
||||
| 0132 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0132-20260328-210005.707-GET.http |
|
||||
| 0133 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0133-20260329-094502.893-GET.http |
|
||||
| 0134 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0134-20260329-094503.109-GET.http |
|
||||
| 0135 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0135-20260329-094510.575-GET.http |
|
||||
| 0136 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0136-20260329-094510.907-GET.http |
|
||||
| 0137 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0137-20260329-102911.229-GET.http |
|
||||
| 0138 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0138-20260329-102911.443-GET.http |
|
||||
| 0139 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0139-20260329-102923.636-GET.http |
|
||||
| 0140 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0140-20260329-102923.807-GET.http |
|
||||
| 0141 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0141-20260329-155214.420-GET.http |
|
||||
| 0142 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0142-20260329-155216.805-GET.http |
|
||||
| 0143 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0143-20260329-155221.905-GET.http |
|
||||
| 0144 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0144-20260329-155222.082-GET.http |
|
||||
| 0145 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/recents/0145-20260329-185442.017-GET.http |
|
||||
| 0146 | upstream | ☑ | GET https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./upstream/streaming/account/{accountId}/device/{device_id}/recents/0146-20260329-185442.128-GET.http |
|
||||
| 0147 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/recents/0147-20260329-185442.130-GET.http |
|
||||
| 0148 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0148-20260329-193915.264-GET.http |
|
||||
| 0149 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0149-20260329-193915.468-GET.http |
|
||||
| 0150 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0150-20260329-215246.808-GET.http |
|
||||
| 0151 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0151-20260329-215247.001-GET.http |
|
||||
| 0152 | self | ☑ | GET / | 200 OK | ./self/root/0152-20260329-233126.264-GET.http |
|
||||
| 0153 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0153-20260329-233126.506-GET.http |
|
||||
| 0154 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0154-20260329-233126.515-GET.http |
|
||||
| 0155 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0155-20260329-233126.531-GET.http |
|
||||
| 0156 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0156-20260329-233126.542-GET.http |
|
||||
| 0157 | self | ☑ | GET / | 200 OK | ./self/root/0157-20260329-233128.611-GET.http |
|
||||
| 0158 | self | ☑ | GET / | 200 OK | ./self/root/0158-20260329-233128.790-GET.http |
|
||||
| 0159 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0159-20260329-233129.065-GET.http |
|
||||
| 0160 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0160-20260329-233129.089-GET.http |
|
||||
| 0161 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0161-20260329-233129.099-GET.http |
|
||||
| 0162 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0162-20260329-233129.105-GET.http |
|
||||
| 0163 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0163-20260329-233137.103-GET.http |
|
||||
| 0164 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0164-20260329-233137.130-GET.http |
|
||||
| 0165 | self | ☑ | GET /mgmt/accounts | 200 OK | ./self/mgmt/accounts/0165-20260329-233206.623-GET.http |
|
||||
| 0166 | self | ☑ | GET /mgmt/accounts/{{accountId}} | 200 OK | ./self/mgmt/accounts/{accountId}/0166-20260329-233206.693-GET.http |
|
||||
| 0167 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0167-20260329-233249.970-POST.http |
|
||||
| 0168 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0168-20260329-233250.408-POST.http |
|
||||
| 0169 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0169-20260329-233257.652-POST.http |
|
||||
| 0170 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0170-20260329-233257.674-POST.http |
|
||||
| 0171 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0171-20260329-233258.075-POST.http |
|
||||
| 0172 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0172-20260329-233258.097-POST.http |
|
||||
| 0173 | mirror | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 401 Unauthorized | ./mirror/bmx/tunein/v1/playback/station/s166521/0173-20260329-233258.121-GET.http |
|
||||
| 0174 | self | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./self/bmx/tunein/v1/playback/station/s166521/0174-20260329-233258.171-GET.http |
|
||||
| 0175 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0175-20260329-233258.625-POST.http |
|
||||
| 0176 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/token | 200 OK | ./upstream/bmx/tunein/v1/token/0176-20260329-233259.006-POST.http |
|
||||
| 0177 | self | ☑ | POST /bmx/tunein/v1/token | 200 OK | ./self/bmx/tunein/v1/token/0177-20260329-233259.008-POST.http |
|
||||
| 0178 | mirror | ☑ | POST /bmx/tunein/v1/token | 200 OK | ./mirror/bmx/tunein/v1/token/0178-20260329-233259.013-POST.http |
|
||||
| 0179 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0179-20260329-233259.046-POST.http |
|
||||
| 0180 | self | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./self/bmx/tunein/v1/playback/station/s166521/0180-20260329-233259.719-GET.http |
|
||||
| 0181 | mirror | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./mirror/bmx/tunein/v1/playback/station/s166521/0181-20260329-233300.084-GET.http |
|
||||
| 0182 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0182-20260329-233302.393-POST.http |
|
||||
| 0183 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0183-20260329-233302.636-POST.http |
|
||||
| 0184 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0184-20260329-233302.655-POST.http |
|
||||
| 0185 | self | ☑ | POST /streaming/account/{{accountId}}/device/{{device_id}}/recent | 201 Created | ./self/streaming/account/{accountId}/device/{device_id}/recent/0185-20260329-233302.671-POST.http |
|
||||
| 0186 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0186-20260329-233302.906-POST.http |
|
||||
| 0187 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0187-20260329-233303.115-POST.http |
|
||||
| 0188 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0188-20260329-233303.118-POST.http |
|
||||
| 0189 | mirror | ☑ | POST /streaming/account/{{accountId}}/device/{{device_id}}/recent | 201 Created | ./mirror/streaming/account/{accountId}/device/{device_id}/recent/0189-20260329-233303.759-POST.http |
|
||||
| 0190 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0190-20260329-233304.143-POST.http |
|
||||
| 0191 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0191-20260329-233304.269-POST.http |
|
||||
| 0192 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0192-20260329-233304.554-POST.http |
|
||||
| 0193 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0193-20260329-233304.685-POST.http |
|
||||
| 0194 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0194-20260329-233305.629-POST.http |
|
||||
| 0195 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0195-20260329-233306.040-POST.http |
|
||||
| 0196 | mirror | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./mirror/bmx/tunein/v1/report/0196-20260329-233306.072-POST.http |
|
||||
| 0197 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./upstream/bmx/tunein/v1/report/0197-20260329-233306.182-POST.http |
|
||||
| 0198 | self | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./self/bmx/tunein/v1/report/0198-20260329-233306.184-POST.http |
|
||||
| 0199 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0199-20260329-233317.196-GET.http |
|
||||
| 0200 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/presets/0200-20260329-233317.206-GET.http |
|
||||
| 0201 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/presets/0201-20260329-233317.394-GET.http |
|
||||
| 0202 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0202-20260329-233317.409-GET.http |
|
||||
| 0203 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0203-20260329-233317.838-GET.http |
|
||||
| 0204 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0204-20260329-233330.871-POST.http |
|
||||
| 0205 | mirror | ☑ | PUT /streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/preset/6/0205-20260329-233331.093-PUT.http |
|
||||
| 0206 | upstream | ☑ | PUT https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 500 Internal Server Error | ./upstream/streaming/account/{accountId}/device/{device_id}/preset/6/0206-20260329-233331.096-PUT.http |
|
||||
| 0207 | self | ☑ | PUT /streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 500 Internal Server Error | ./self/streaming/account/{accountId}/device/{device_id}/preset/6/0207-20260329-233331.096-PUT.http |
|
||||
| 0208 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0208-20260329-233331.323-POST.http |
|
||||
| 0209 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0209-20260329-233331.938-POST.http |
|
||||
| 0210 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0210-20260329-233331.982-POST.http |
|
||||
| 0211 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0211-20260329-233332.366-POST.http |
|
||||
| 0212 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0212-20260329-233332.396-POST.http |
|
||||
| 0213 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0213-20260329-233344.994-POST.http |
|
||||
| 0214 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0214-20260329-233345.001-POST.http |
|
||||
| 0215 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0215-20260329-233345.427-POST.http |
|
||||
| 0216 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0216-20260329-233345.430-POST.http |
|
||||
| 0217 | mirror | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./mirror/bmx/tunein/v1/report/0217-20260329-233345.547-POST.http |
|
||||
| 0218 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./upstream/bmx/tunein/v1/report/0218-20260329-233345.651-POST.http |
|
||||
| 0219 | self | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./self/bmx/tunein/v1/report/0219-20260329-233345.651-POST.http |
|
||||
| 0220 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0220-20260329-233504.445-GET.http |
|
||||
| 0221 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0221-20260329-233504.467-POST.http |
|
||||
| 0222 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0222-20260329-233504.475-POST.http |
|
||||
| 0223 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0223-20260329-233504.668-POST.http |
|
||||
| 0224 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0224-20260329-233504.879-GET.http |
|
||||
| 0225 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0225-20260329-233504.891-POST.http |
|
||||
| 0226 | self | ☑ | GET / | 200 OK | ./self/root/0226-20260329-233505.214-GET.http |
|
||||
| 0227 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0227-20260329-233505.548-POST.http |
|
||||
| 0228 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0228-20260329-233505.560-POST.http |
|
||||
| 0229 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0229-20260329-233505.735-POST.http |
|
||||
| 0230 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0230-20260329-233505.980-POST.http |
|
||||
| 0231 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0231-20260329-233505.994-POST.http |
|
||||
| 0232 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0232-20260329-233506.158-POST.http |
|
||||
| 0233 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0233-20260329-233506.707-POST.http |
|
||||
| 0234 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0234-20260329-233506.769-GET.http |
|
||||
| 0235 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0235-20260329-233507.099-GET.http |
|
||||
| 0236 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0236-20260329-233507.137-POST.http |
|
||||
| 0237 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0237-20260329-233507.277-GET.http |
|
||||
| 0238 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0238-20260329-233508.639-GET.http |
|
||||
| 0239 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0239-20260329-233508.642-GET.http |
|
||||
| 0240 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0240-20260329-233508.755-GET.http |
|
||||
| 0241 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0241-20260329-233508.809-GET.http |
|
||||
| 0242 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0242-20260329-233508.866-GET.http |
|
||||
| 0243 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0243-20260329-233508.968-GET.http |
|
||||
| 0244 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0244-20260329-233509.041-GET.http |
|
||||
| 0245 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0245-20260329-233510.807-POST.http |
|
||||
| sequence number | category | ignore/done | request | response status | filename |
|
||||
|-----------------|----------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 0001 | self | ☑ | GET / | 200 OK | ./self/root/0001-20260328-103539.205-GET.http |
|
||||
| 0002 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0002-20260328-103539.483-GET.http |
|
||||
| 0003 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0003-20260328-103539.514-GET.http |
|
||||
| 0004 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0004-20260328-103539.539-GET.http |
|
||||
| 0005 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0005-20260328-103539.554-GET.http |
|
||||
| 0006 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0006-20260328-103551.537-GET.http |
|
||||
| 0007 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0007-20260328-103551.551-GET.http |
|
||||
| 0008 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0008-20260328-103731.202-GET.http |
|
||||
| 0009 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0009-20260328-103731.221-POST.http |
|
||||
| 0010 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0010-20260328-103731.226-POST.http |
|
||||
| 0011 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0011-20260328-103731.407-POST.http |
|
||||
| 0012 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0012-20260328-103731.625-POST.http |
|
||||
| 0013 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0013-20260328-103731.641-GET.http |
|
||||
| 0014 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0014-20260328-103731.652-POST.http |
|
||||
| 0015 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0015-20260328-103731.725-POST.http |
|
||||
| 0016 | self | ☑ | GET / | 200 OK | ./self/root/0016-20260328-103731.804-GET.http |
|
||||
| 0017 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0017-20260328-103731.806-POST.http |
|
||||
| 0018 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0018-20260328-103732.053-POST.http |
|
||||
| 0019 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0019-20260328-103732.173-POST.http |
|
||||
| 0020 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0020-20260328-103732.229-POST.http |
|
||||
| 0021 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0021-20260328-103733.180-POST.http |
|
||||
| 0022 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0022-20260328-103733.439-GET.http |
|
||||
| 0023 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0023-20260328-103733.587-POST.http |
|
||||
| 0024 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0024-20260328-103733.945-GET.http |
|
||||
| 0025 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0025-20260328-103734.751-GET.http |
|
||||
| 0026 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0026-20260328-103735.894-GET.http |
|
||||
| 0027 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0027-20260328-103735.914-GET.http |
|
||||
| 0028 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0028-20260328-103735.931-GET.http |
|
||||
| 0029 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0029-20260328-103735.954-GET.http |
|
||||
| 0030 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0030-20260328-103736.065-GET.http |
|
||||
| 0031 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0031-20260328-103736.093-GET.http |
|
||||
| 0032 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0032-20260328-103736.130-GET.http |
|
||||
| 0033 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0033-20260328-103737.874-POST.http |
|
||||
| 0034 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/presets/0034-20260328-103905.297-GET.http |
|
||||
| 0035 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0035-20260328-103905.306-GET.http |
|
||||
| 0036 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/presets/0036-20260328-103905.479-GET.http |
|
||||
| 0037 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0037-20260328-103905.669-GET.http |
|
||||
| 0038 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0038-20260328-103905.929-GET.http |
|
||||
| 0039 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0039-20260328-104218.080-GET.http |
|
||||
| 0040 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0040-20260328-104218.267-GET.http |
|
||||
| 0041 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0041-20260328-104218.524-GET.http |
|
||||
| 0042 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0042-20260328-104325.629-GET.http |
|
||||
| 0043 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0043-20260328-104325.814-GET.http |
|
||||
| 0044 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0044-20260328-104326.087-GET.http |
|
||||
| 0045 | upstream | ☑ | DELETE https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}} | 400 Bad Request | ./upstream/streaming/account/{accountId}/device/{device_id}/0045-20260328-104348.987-DELETE.http |
|
||||
| 0046 | self | ☑ | DELETE /streaming/account/{{accountId}}/device/{{device_id}} | 400 Bad Request | ./self/streaming/account/{accountId}/device/{device_id}/0046-20260328-104348.988-DELETE.http |
|
||||
| 0047 | mirror | ☑ | DELETE /streaming/account/{{accountId}}/device/{{device_id}} | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/0047-20260328-104348.989-DELETE.http |
|
||||
| 0048 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0048-20260328-104523.826-POST.http |
|
||||
| 0049 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0049-20260328-104523.828-GET.http |
|
||||
| 0050 | mirror | ☑ | POST /streaming/support/power_on | 400 Bad Request | ./mirror/streaming/support/power_on/0050-20260328-104524.002-POST.http |
|
||||
| 0051 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0051-20260328-104524.277-GET.http |
|
||||
| 0052 | mirror | ☑ | POST /streaming/account/{{accountId}}/device/ | 500 Internal Server Error | ./mirror/streaming/account/{accountId}/device/0052-20260328-105134.442-POST.http |
|
||||
| 0053 | upstream | ☑ | POST https://streaming.bose.com/streaming/account/{{accountId}}/device/ | 201 Created | ./upstream/streaming/account/{accountId}/device/0053-20260328-105134.482-POST.http |
|
||||
| 0054 | self | ☑ | POST /streaming/account/{{accountId}}/device/ | 201 Created | ./self/streaming/account/{accountId}/device/0054-20260328-105134.483-POST.http |
|
||||
| 0055 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0055-20260328-105134.757-GET.http |
|
||||
| 0056 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0056-20260328-105135.102-GET.http |
|
||||
| 0057 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0057-20260328-105135.727-GET.http |
|
||||
| 0058 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0058-20260328-105138.259-GET.http |
|
||||
| 0059 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0059-20260328-105138.265-GET.http |
|
||||
| 0060 | self | ☑ | POST /streaming/support/customersupport | 200 OK | ./self/streaming/support/customersupport/0060-20260328-105138.304-POST.http |
|
||||
| 0061 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0061-20260328-105138.369-GET.http |
|
||||
| 0062 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0062-20260328-105138.442-GET.http |
|
||||
| 0063 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0063-20260328-105138.464-GET.http |
|
||||
| 0064 | mirror | ☑ | POST /streaming/support/customersupport | 200 OK | ./mirror/streaming/support/customersupport/0064-20260328-105138.499-POST.http |
|
||||
| 0065 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0065-20260328-105138.554-GET.http |
|
||||
| 0066 | upstream | ☑ | GET https://events.api.bosecm.com/v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./upstream/v1/blacklist/{device_id}/0066-20260328-105138.587-GET.http |
|
||||
| 0067 | self | ☑ | GET /v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./self/v1/blacklist/{device_id}/0067-20260328-105138.588-GET.http |
|
||||
| 0068 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0068-20260328-105138.703-GET.http |
|
||||
| 0069 | self | ☑ | GET / | 200 OK | ./self/root/0069-20260328-105138.868-GET.http |
|
||||
| 0070 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0070-20260328-105139.565-GET.http |
|
||||
| 0071 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0071-20260328-105139.581-GET.http |
|
||||
| 0072 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0072-20260328-105139.612-GET.http |
|
||||
| 0073 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0073-20260328-105139.857-GET.http |
|
||||
| 0074 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0074-20260328-105139.861-GET.http |
|
||||
| 0075 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0075-20260328-105140.030-GET.http |
|
||||
| 0076 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0076-20260328-105140.172-GET.http |
|
||||
| 0077 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0077-20260328-105140.196-GET.http |
|
||||
| 0078 | upstream | ☑ | GET https://events.api.bosecm.com/v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./upstream/v1/blacklist/{device_id}/0078-20260328-105146.094-GET.http |
|
||||
| 0079 | self | ☑ | GET /v1/blacklist/{{device_id}} | 405 Method Not Allowed | ./self/v1/blacklist/{device_id}/0079-20260328-105146.094-GET.http |
|
||||
| 0080 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0080-20260328-105146.457-POST.http |
|
||||
| 0081 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0081-20260328-105146.867-POST.http |
|
||||
| 0082 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0082-20260328-105148.464-POST.http |
|
||||
| 0083 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0083-20260328-105148.876-POST.http |
|
||||
| 0084 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0084-20260328-105549.637-POST.http |
|
||||
| 0085 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0085-20260328-105549.645-GET.http |
|
||||
| 0086 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0086-20260328-105549.665-POST.http |
|
||||
| 0087 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0087-20260328-105549.864-POST.http |
|
||||
| 0088 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0088-20260328-105550.089-POST.http |
|
||||
| 0089 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0089-20260328-105550.097-GET.http |
|
||||
| 0090 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0090-20260328-105551.010-POST.http |
|
||||
| 0091 | self | ☑ | GET / | 200 OK | ./self/root/0091-20260328-105551.041-GET.http |
|
||||
| 0092 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0092-20260328-105551.096-POST.http |
|
||||
| 0093 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0093-20260328-105551.181-POST.http |
|
||||
| 0094 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0094-20260328-105551.431-POST.http |
|
||||
| 0095 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0095-20260328-105551.503-POST.http |
|
||||
| 0096 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0096-20260328-105551.592-POST.http |
|
||||
| 0097 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0097-20260328-105552.101-POST.http |
|
||||
| 0098 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0098-20260328-105552.239-GET.http |
|
||||
| 0099 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0099-20260328-105552.510-POST.http |
|
||||
| 0100 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0100-20260328-105552.656-GET.http |
|
||||
| 0101 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0101-20260328-105552.796-GET.http |
|
||||
| 0102 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0102-20260328-105554.172-GET.http |
|
||||
| 0103 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0103-20260328-105554.207-GET.http |
|
||||
| 0104 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0104-20260328-105554.210-GET.http |
|
||||
| 0105 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0105-20260328-105554.216-GET.http |
|
||||
| 0106 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0106-20260328-105554.347-GET.http |
|
||||
| 0107 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0107-20260328-105554.395-GET.http |
|
||||
| 0108 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0108-20260328-105554.406-GET.http |
|
||||
| 0109 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0109-20260328-105556.138-POST.http |
|
||||
| 0110 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0110-20260328-105606.529-GET.http |
|
||||
| 0111 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0111-20260328-105606.699-GET.http |
|
||||
| 0112 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0112-20260328-105606.961-GET.http |
|
||||
| 0113 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0113-20260328-105612.425-POST.http |
|
||||
| 0114 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0114-20260328-105612.493-POST.http |
|
||||
| 0115 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0115-20260328-105612.582-POST.http |
|
||||
| 0116 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0116-20260328-105612.851-POST.http |
|
||||
| 0117 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0117-20260328-105612.906-POST.http |
|
||||
| 0118 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0118-20260328-105613.000-POST.http |
|
||||
| 0119 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0119-20260328-105614.239-POST.http |
|
||||
| 0120 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0120-20260328-105614.649-POST.http |
|
||||
| 0121 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0121-20260328-111412.273-POST.http |
|
||||
| 0122 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0122-20260328-111412.689-POST.http |
|
||||
| 0123 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0123-20260328-170446.020-GET.http |
|
||||
| 0124 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0124-20260328-170446.206-GET.http |
|
||||
| 0125 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0125-20260328-202258.172-GET.http |
|
||||
| 0126 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0126-20260328-202258.374-GET.http |
|
||||
| 0127 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0127-20260328-202300.656-GET.http |
|
||||
| 0128 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0128-20260328-202300.841-GET.http |
|
||||
| 0129 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0129-20260328-205953.361-GET.http |
|
||||
| 0130 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0130-20260328-205953.560-GET.http |
|
||||
| 0131 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0131-20260328-210005.518-GET.http |
|
||||
| 0132 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0132-20260328-210005.707-GET.http |
|
||||
| 0133 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0133-20260329-094502.893-GET.http |
|
||||
| 0134 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0134-20260329-094503.109-GET.http |
|
||||
| 0135 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0135-20260329-094510.575-GET.http |
|
||||
| 0136 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0136-20260329-094510.907-GET.http |
|
||||
| 0137 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0137-20260329-102911.229-GET.http |
|
||||
| 0138 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0138-20260329-102911.443-GET.http |
|
||||
| 0139 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0139-20260329-102923.636-GET.http |
|
||||
| 0140 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0140-20260329-102923.807-GET.http |
|
||||
| 0141 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0141-20260329-155214.420-GET.http |
|
||||
| 0142 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0142-20260329-155216.805-GET.http |
|
||||
| 0143 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0143-20260329-155221.905-GET.http |
|
||||
| 0144 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0144-20260329-155222.082-GET.http |
|
||||
| 0145 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/recents/0145-20260329-185442.017-GET.http |
|
||||
| 0146 | upstream | ☑ | GET https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./upstream/streaming/account/{accountId}/device/{device_id}/recents/0146-20260329-185442.128-GET.http |
|
||||
| 0147 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/recents | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/recents/0147-20260329-185442.130-GET.http |
|
||||
| 0148 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0148-20260329-193915.264-GET.http |
|
||||
| 0149 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0149-20260329-193915.468-GET.http |
|
||||
| 0150 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0150-20260329-215246.808-GET.http |
|
||||
| 0151 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0151-20260329-215247.001-GET.http |
|
||||
| 0152 | self | ☑ | GET / | 200 OK | ./self/root/0152-20260329-233126.264-GET.http |
|
||||
| 0153 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0153-20260329-233126.506-GET.http |
|
||||
| 0154 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0154-20260329-233126.515-GET.http |
|
||||
| 0155 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0155-20260329-233126.531-GET.http |
|
||||
| 0156 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0156-20260329-233126.542-GET.http |
|
||||
| 0157 | self | ☑ | GET / | 200 OK | ./self/root/0157-20260329-233128.611-GET.http |
|
||||
| 0158 | self | ☑ | GET / | 200 OK | ./self/root/0158-20260329-233128.790-GET.http |
|
||||
| 0159 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0159-20260329-233129.065-GET.http |
|
||||
| 0160 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0160-20260329-233129.089-GET.http |
|
||||
| 0161 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0161-20260329-233129.099-GET.http |
|
||||
| 0162 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0162-20260329-233129.105-GET.http |
|
||||
| 0163 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0163-20260329-233137.103-GET.http |
|
||||
| 0164 | self | ☑ | GET /mgmt/spotify/accounts | 200 OK | ./self/mgmt/spotify/accounts/0164-20260329-233137.130-GET.http |
|
||||
| 0165 | self | ☑ | GET /mgmt/accounts | 200 OK | ./self/mgmt/accounts/0165-20260329-233206.623-GET.http |
|
||||
| 0166 | self | ☑ | GET /mgmt/accounts/{{accountId}} | 200 OK | ./self/mgmt/accounts/{accountId}/0166-20260329-233206.693-GET.http |
|
||||
| 0167 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0167-20260329-233249.970-POST.http |
|
||||
| 0168 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0168-20260329-233250.408-POST.http |
|
||||
| 0169 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0169-20260329-233257.652-POST.http |
|
||||
| 0170 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0170-20260329-233257.674-POST.http |
|
||||
| 0171 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0171-20260329-233258.075-POST.http |
|
||||
| 0172 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0172-20260329-233258.097-POST.http |
|
||||
| 0173 | mirror | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 401 Unauthorized | ./mirror/bmx/tunein/v1/playback/station/s166521/0173-20260329-233258.121-GET.http |
|
||||
| 0174 | self | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./self/bmx/tunein/v1/playback/station/s166521/0174-20260329-233258.171-GET.http |
|
||||
| 0175 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0175-20260329-233258.625-POST.http |
|
||||
| 0176 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/token | 200 OK | ./upstream/bmx/tunein/v1/token/0176-20260329-233259.006-POST.http |
|
||||
| 0177 | self | ☑ | POST /bmx/tunein/v1/token | 200 OK | ./self/bmx/tunein/v1/token/0177-20260329-233259.008-POST.http |
|
||||
| 0178 | mirror | ☑ | POST /bmx/tunein/v1/token | 200 OK | ./mirror/bmx/tunein/v1/token/0178-20260329-233259.013-POST.http |
|
||||
| 0179 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0179-20260329-233259.046-POST.http |
|
||||
| 0180 | self | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./self/bmx/tunein/v1/playback/station/s166521/0180-20260329-233259.719-GET.http |
|
||||
| 0181 | mirror | ☑ | GET /bmx/tunein/v1/playback/station/s166521 | 200 OK | ./mirror/bmx/tunein/v1/playback/station/s166521/0181-20260329-233300.084-GET.http |
|
||||
| 0182 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0182-20260329-233302.393-POST.http |
|
||||
| 0183 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0183-20260329-233302.636-POST.http |
|
||||
| 0184 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0184-20260329-233302.655-POST.http |
|
||||
| 0185 | self | ☑ | POST /streaming/account/{{accountId}}/device/{{device_id}}/recent | 201 Created | ./self/streaming/account/{accountId}/device/{device_id}/recent/0185-20260329-233302.671-POST.http |
|
||||
| 0186 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0186-20260329-233302.906-POST.http |
|
||||
| 0187 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0187-20260329-233303.115-POST.http |
|
||||
| 0188 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0188-20260329-233303.118-POST.http |
|
||||
| 0189 | mirror | ☑ | POST /streaming/account/{{accountId}}/device/{{device_id}}/recent | 201 Created | ./mirror/streaming/account/{accountId}/device/{device_id}/recent/0189-20260329-233303.759-POST.http |
|
||||
| 0190 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0190-20260329-233304.143-POST.http |
|
||||
| 0191 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0191-20260329-233304.269-POST.http |
|
||||
| 0192 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0192-20260329-233304.554-POST.http |
|
||||
| 0193 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0193-20260329-233304.685-POST.http |
|
||||
| 0194 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0194-20260329-233305.629-POST.http |
|
||||
| 0195 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0195-20260329-233306.040-POST.http |
|
||||
| 0196 | mirror | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./mirror/bmx/tunein/v1/report/0196-20260329-233306.072-POST.http |
|
||||
| 0197 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./upstream/bmx/tunein/v1/report/0197-20260329-233306.182-POST.http |
|
||||
| 0198 | self | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&stream_type=liveRadio | 200 OK | ./self/bmx/tunein/v1/report/0198-20260329-233306.184-POST.http |
|
||||
| 0199 | self | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./self/streaming/software/update/account/{accountId}/0199-20260329-233317.196-GET.http |
|
||||
| 0200 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/presets/0200-20260329-233317.206-GET.http |
|
||||
| 0201 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/presets | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/presets/0201-20260329-233317.394-GET.http |
|
||||
| 0202 | mirror | ☑ | GET /streaming/software/update/account/{{accountId}} | 200 OK | ./mirror/streaming/software/update/account/{accountId}/0202-20260329-233317.409-GET.http |
|
||||
| 0203 | self | ☑ | GET /updates/soundtouch?serialnumber=_serial_ | 200 OK | ./self/updates/soundtouch/0203-20260329-233317.838-GET.http |
|
||||
| 0204 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0204-20260329-233330.871-POST.http |
|
||||
| 0205 | mirror | ☑ | PUT /streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/preset/6/0205-20260329-233331.093-PUT.http |
|
||||
| 0206 | upstream | ☑ | PUT https://streaming.bose.com/streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 500 Internal Server Error | ./upstream/streaming/account/{accountId}/device/{device_id}/preset/6/0206-20260329-233331.096-PUT.http |
|
||||
| 0207 | self | ☑ | PUT /streaming/account/{{accountId}}/device/{{device_id}}/preset/6 | 500 Internal Server Error | ./self/streaming/account/{accountId}/device/{device_id}/preset/6/0207-20260329-233331.096-PUT.http |
|
||||
| 0208 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0208-20260329-233331.323-POST.http |
|
||||
| 0209 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0209-20260329-233331.938-POST.http |
|
||||
| 0210 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0210-20260329-233331.982-POST.http |
|
||||
| 0211 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0211-20260329-233332.366-POST.http |
|
||||
| 0212 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0212-20260329-233332.396-POST.http |
|
||||
| 0213 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0213-20260329-233344.994-POST.http |
|
||||
| 0214 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0214-20260329-233345.001-POST.http |
|
||||
| 0215 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0215-20260329-233345.427-POST.http |
|
||||
| 0216 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0216-20260329-233345.430-POST.http |
|
||||
| 0217 | mirror | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./mirror/bmx/tunein/v1/report/0217-20260329-233345.547-POST.http |
|
||||
| 0218 | upstream | ☑ | POST https://content.api.bose.io/bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./upstream/bmx/tunein/v1/report/0218-20260329-233345.651-POST.http |
|
||||
| 0219 | self | ☑ | POST /bmx/tunein/v1/report?stream_id=e536753726&guide_id=s166521&listen_id=1774819980&last_titt=0&duration_balance=0&stream_type=liveRadio | 200 OK | ./self/bmx/tunein/v1/report/0219-20260329-233345.651-POST.http |
|
||||
| 0220 | self | ☑ | GET /bmx/registry/v1/services | 200 OK | ./self/bmx/registry/v1/services/0220-20260329-233504.445-GET.http |
|
||||
| 0221 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0221-20260329-233504.467-POST.http |
|
||||
| 0222 | self | ☑ | POST /streaming/support/power_on | 200 OK | ./self/streaming/support/power_on/0222-20260329-233504.475-POST.http |
|
||||
| 0223 | mirror | ☑ | POST /streaming/support/power_on | 200 OK | ./mirror/streaming/support/power_on/0223-20260329-233504.668-POST.http |
|
||||
| 0224 | mirror | ☑ | GET /bmx/registry/v1/services | 200 OK | ./mirror/bmx/registry/v1/services/0224-20260329-233504.879-GET.http |
|
||||
| 0225 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0225-20260329-233504.891-POST.http |
|
||||
| 0226 | self | ☑ | GET / | 200 OK | ./self/root/0226-20260329-233505.214-GET.http |
|
||||
| 0227 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0227-20260329-233505.548-POST.http |
|
||||
| 0228 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0228-20260329-233505.560-POST.http |
|
||||
| 0229 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0229-20260329-233505.735-POST.http |
|
||||
| 0230 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0230-20260329-233505.980-POST.http |
|
||||
| 0231 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0231-20260329-233505.994-POST.http |
|
||||
| 0232 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0232-20260329-233506.158-POST.http |
|
||||
| 0233 | self | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./self/v1/scmudc/{device_id}/0233-20260329-233506.707-POST.http |
|
||||
| 0234 | self | ☑ | GET /streaming/sourceproviders | 200 OK | ./self/streaming/sourceproviders/0234-20260329-233506.769-GET.http |
|
||||
| 0235 | self | | GET /streaming/account/{{accountId}}/full | 200 OK | ./self/streaming/account/{accountId}/full/0235-20260329-233507.099-GET.http |
|
||||
| 0236 | mirror | ☑ | POST /v1/scmudc/{{device_id}} | 200 OK | ./mirror/v1/scmudc/{device_id}/0236-20260329-233507.137-POST.http |
|
||||
| 0237 | mirror | | GET /streaming/account/{{accountId}}/full | 200 OK | ./mirror/streaming/account/{accountId}/full/0237-20260329-233507.277-GET.http |
|
||||
| 0238 | self | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./self/streaming/account/{accountId}/device/{device_id}/group/0238-20260329-233508.639-GET.http |
|
||||
| 0239 | self | ☑ | GET /streaming/device/{{device_id}}/streaming_token | 200 OK | ./self/streaming/device/{device_id}/streaming_token/0239-20260329-233508.642-GET.http |
|
||||
| 0240 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0240-20260329-233508.755-GET.http |
|
||||
| 0241 | mirror | ☑ | GET /streaming/account/{{accountId}}/device/{{device_id}}/group/ | 200 OK | ./mirror/streaming/account/{accountId}/device/{device_id}/group/0241-20260329-233508.809-GET.http |
|
||||
| 0242 | self | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./self/streaming/account/{accountId}/provider_settings/0242-20260329-233508.866-GET.http |
|
||||
| 0243 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0243-20260329-233508.968-GET.http |
|
||||
| 0244 | mirror | ☑ | GET /streaming/account/{{accountId}}/provider_settings | 200 OK | ./mirror/streaming/account/{accountId}/provider_settings/0244-20260329-233509.041-GET.http |
|
||||
| 0245 | self | ☑ | POST /oauth/device/{{device_id}}/music/musicprovider/15/token/cs3 | 200 OK | ./self/oauth/device/{device_id}/music/musicprovider/15/token/cs3/0245-20260329-233510.807-POST.http |
|
||||
| 0246 | self | ☑ | POST /streaming/music/musicprovider/{{providerID}}/trial/is_eligible | 200 OK | ../scripts/android/mitm/bose-pairing-20260502-165549/mirror/streaming/music/musicprovider/14/trial/is_eligible/0005-20260502-165628.675-POST.http |
|
||||
| 0247 | self | ☑ | POST /bmx/tunein/v1/favorite/{{stationId}} | 202 Accepted | ../scripts/android/captures/var/lib/soundtouch-service/interactions/20260502-170853-2882944/self/bmx/tunein/v1/favorite/s25260/0172-20260502-173202.662-POST.http |
|
||||
|
||||
48
tests/interactions_20260502_missing_external.md
Normal file
48
tests/interactions_20260502_missing_external.md
Normal file
@@ -0,0 +1,48 @@
|
||||
Endpoints observed in `bose-pairing-20260502-155542`, `bose-pairing-20260502-165549` mitm captures
|
||||
and `20260502-170853-2882944` service interaction recording that are either served by external hosts
|
||||
not redirected to soundtouch-service, or are third-party analytics calls that the service does not
|
||||
need to handle.
|
||||
|
||||
## Redirected Bose hosts — implemented ✅
|
||||
|
||||
These hosts are now in the DNS redirect list and the service handles them natively.
|
||||
|
||||
| host | request | handler | notes |
|
||||
|---------------------|----------------------------------------------------------------------|---------------------------------|--------------------------------------------------------------------------------------------------------------|
|
||||
| streaming.bose.com | `POST /streaming/music/musicprovider/{providerID}/trial/is_eligible` | `HandleMusicProviderIsEligible` | reuses same handler as `/is_eligible`; response: `<eligibility><isEligible>false</isEligible></eligibility>` |
|
||||
| content.api.bose.io | `POST /bmx/tunein/v1/favorite/{stationID}` | `HandleTuneInFavorite` | returns 202 Accepted `{}`; row 0247 in interactions_20260328-103522-477978.md |
|
||||
| downloads.bose.com | `GET /ced/soundtouch/mr4_22097fe2/index.xml` | `HandleCedStatic` | firmware index XML; static file embedded from `static/ced/` |
|
||||
| downloads.bose.com | `GET /ced/soundtouch/mr4_22097fe2/relnotes/releasenotes_en.xml` | `HandleCedStatic` | firmware release notes; static file embedded |
|
||||
| downloads.bose.com | `GET /ced/soundtouch/soundtouch_app_help/en/*.xml` | `HandleCedStatic` | 10 in-app help XMLs embedded (gabbo_*, name_device, welcome, etc.) |
|
||||
| media.bose.io | `GET /bmx-icons/tunein/monochromeSvg.svg` | `HandleBmxIcons` | already in `static/media/bmx-icons/tunein/` |
|
||||
| media.bose.io | `GET /bmx-icons/tunein/smallSvg.svg` | `HandleBmxIcons` | already in `static/media/bmx-icons/tunein/` |
|
||||
| media.bose.io | `GET /bmx-icons/tunein/top-menu/*.png` | `HandleBmxIcons` | 6 PNGs embedded (bubble, location, microphone, news, note, podcasts); speaker.png was 403 from CDN |
|
||||
|
||||
## Remaining: external host requiring action
|
||||
|
||||
| host | request | notes |
|
||||
|-------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| voice.api.bose.io | `POST /alexa/certificate` | Alexa IoT cert provisioning; CSR + auth token → AWS IoT cert + endpoint; not in DNS redirect list; Alexa setup will fail after shutdown |
|
||||
|
||||
## Third-party analytics (no action needed)
|
||||
|
||||
These are calls to third-party analytics services made by the Bose app itself.
|
||||
soundtouch-service does not handle or intercept them.
|
||||
|
||||
| host | request | notes |
|
||||
|-----------------------|------------------------------|--------------------------------------------------------------------|
|
||||
| api.segment.io | `POST /v1/i` | Segment analytics — identify event |
|
||||
| api.segment.io | `POST /v1/p` | Segment analytics — page event |
|
||||
| api.segment.io | `POST /v1/t` | Segment analytics — track event |
|
||||
| events.api.bosecm.com | `POST /v1/stapp/{accountId}` | Bose app telemetry; handled by service at `/v1/stapp/{deviceId}` ✅ |
|
||||
|
||||
## TuneIn / Spotify CDN (no action needed)
|
||||
|
||||
Image CDNs used by TuneIn browse and Spotify artwork — not Bose infrastructure.
|
||||
|
||||
| host | request pattern |
|
||||
|--------------------------------|-----------------------------------|
|
||||
| cdn-profiles.tunein.com | `GET /{stationId}/images/logog.*` |
|
||||
| cdn-albums.tunein.com | `GET /gn/*.jpg` |
|
||||
| cdn-radiotime-logos.tunein.com | `GET /s*.png` |
|
||||
| i.scdn.co | `GET /image/{hash}` |
|
||||
Reference in New Issue
Block a user