diff --git a/Makefile b/Makefile index bf37f76..90c4de5 100644 --- a/Makefile +++ b/Makefile @@ -123,6 +123,8 @@ test-http-client: /workdir/register_device.http \ /workdir/customer_support.http \ /workdir/power_on.http \ + /workdir/get_bmx_services.http \ + /workdir/get_sourceproviders.http \ /workdir/get_provider_settings.http \ /workdir/tunein_playback_station.http \ /workdir/set_preset_6.http \ diff --git a/tests/integration/http-client/get_bmx_services.http b/tests/integration/http-client/get_bmx_services.http new file mode 100644 index 0000000..5cfe5f7 --- /dev/null +++ b/tests/integration/http-client/get_bmx_services.http @@ -0,0 +1,30 @@ +### GET /bmx/registry/v1/services +GET {{host}}/bmx/registry/v1/services +User-Agent: Bose_Lisa/27.0.6 +Accept: */* +X-Bmx-Api-Key: {{bmxApiKey}} + +> {% + client.test("Request executed successfully", function() { + client.assert(response.status === 200, "Response status is not 200"); + }); + + client.test("Response content-type is application/json", function() { + var type = response.contentType.mimeType; + client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'"); + }); + + client.test("Response body structure", function() { + client.assert(response.body.hasOwnProperty("_links"), "Missing '_links'"); + client.assert(response.body.hasOwnProperty("askAgainAfter"), "Missing 'askAgainAfter'"); + client.assert(Array.isArray(response.body.bmx_services), "'bmx_services' should be an array"); + }); + + client.test("All bmx_services have id.name and id.value", function() { + response.body.bmx_services.forEach(function(service, index) { + client.assert(service.hasOwnProperty("id"), "Service at index " + index + " missing 'id'"); + client.assert(typeof service.id.name === "string", "Service at index " + index + " 'id.name' should be a string"); + client.assert(typeof service.id.value === "number", "Service at index " + index + " 'id.value' should be a number"); + }); + }); +%} diff --git a/tests/integration/http-client/get_provider_settings.http b/tests/integration/http-client/get_provider_settings.http index cf3ceb2..a241d1c 100644 --- a/tests/integration/http-client/get_provider_settings.http +++ b/tests/integration/http-client/get_provider_settings.http @@ -9,11 +9,26 @@ User-Agent: Bose_Lisa/27.0.6 > {% client.test("Request executed successfully", function() { client.assert(response.status === 200, "Response status is not 200"); - client.assert(response.contentType.mimeType === "application/vnd.bose.streaming-v1.2+xml", "Expected 'application/vnd.bose.streaming-v1.2+xml' but received '" + response.contentType.mimeType + "'"); }); - client.test("Response body contains ", function() { - const doc = response.body; - client.assert(doc.getElementsByTagName("providerSettings").length > 0, "Response body does not contain "); + client.test("Response content-type is correct", function() { + var type = response.contentType.mimeType; + client.assert(type === "application/vnd.bose.streaming-v1.2+xml", "Expected 'application/vnd.bose.streaming-v1.2+xml' but received '" + type + "'"); + }); + + client.test("Response body structure", function() { + client.assert(response.body.getElementsByTagName("providerSettings").length > 0, "Missing 'providerSettings' root element"); + client.assert(response.body.getElementsByTagName("providerSetting").length > 0, "Missing 'providerSetting' elements"); + }); + + client.test("All providerSettings have required children", function() { + var settings = response.body.getElementsByTagName("providerSetting"); + for (var i = 0; i < settings.length; i++) { + var setting = settings[i]; + client.assert(setting.getElementsByTagName("boseId").length > 0, "Setting " + i + " missing 'boseId'"); + client.assert(setting.getElementsByTagName("keyName").length > 0, "Setting " + i + " missing 'keyName'"); + client.assert(setting.getElementsByTagName("value").length > 0, "Setting " + i + " missing 'value'"); + client.assert(setting.getElementsByTagName("providerId").length > 0, "Setting " + i + " missing 'providerId'"); + } }); %} diff --git a/tests/integration/http-client/get_sourceproviders.http b/tests/integration/http-client/get_sourceproviders.http new file mode 100644 index 0000000..490a955 --- /dev/null +++ b/tests/integration/http-client/get_sourceproviders.http @@ -0,0 +1,43 @@ +### GET /streaming/sourceproviders +GET {{host}}/streaming/sourceproviders +User-Agent: Bose_Lisa/27.0.6 +Accept: application/vnd.bose.streaming-v1.2+xml + +> {% + client.test("Request executed successfully", function() { + client.assert(response.status === 200, "Response status is not 200"); + }); + + client.test("Response content-type is correct", function() { + var type = response.contentType.mimeType; + client.assert(type === "application/vnd.bose.streaming-v1.2+xml", "Expected 'application/vnd.bose.streaming-v1.2+xml' but received '" + type + "'"); + }); + + client.test("Response body structure", function() { + client.assert(response.body.getElementsByTagName("sourceProviders").length > 0, "Missing 'sourceProviders' root element"); + client.assert(response.body.getElementsByTagName("sourceprovider").length > 0, "Missing 'sourceprovider' elements"); + }); + + client.test("Check specific source providers", function() { + var providers = response.body.getElementsByTagName("sourceprovider"); + var foundSpotify = false; + var foundTuneIn = false; + + for (var i = 0; i < providers.length; i++) { + var provider = providers[i]; + var id = provider.getAttribute("id"); + var nameElement = provider.getElementsByTagName("name")[0]; + var name = nameElement ? nameElement.textContent : ""; + + if (id === "15" && name === "SPOTIFY") { + foundSpotify = true; + } + if (id === "25" && name === "TUNEIN") { + foundTuneIn = true; + } + } + + client.assert(foundSpotify, "SPOTIFY (id=15) not found"); + client.assert(foundTuneIn, "TUNEIN (id=25) not found"); + }); +%} diff --git a/tests/integration/http-client/http-client.env.json b/tests/integration/http-client/http-client.env.json index 143edc1..4f35de0 100644 --- a/tests/integration/http-client/http-client.env.json +++ b/tests/integration/http-client/http-client.env.json @@ -14,7 +14,8 @@ "deviceName": "SoundTouch-11", "spotifyUserId": "13570", "spotifyToken": "example-spotify-token", - "spotifyDisplayName": "For Lovers, Not Killers" + "spotifyDisplayName": "For Lovers, Not Killers", + "bmxApiKey": "bmx-api-key" }, "ci": { "host": "http://soundtouch-service:8000", @@ -31,6 +32,7 @@ "deviceName": "SoundTouch-12", "spotifyUserId": "13570", "spotifyToken": "example-spotify-token", - "spotifyDisplayName": "For Lovers, Not Killers" + "spotifyDisplayName": "For Lovers, Not Killers", + "bmxApiKey": "bmx-api-key" } } diff --git a/tests/interactions_20260328-103522-477978.md b/tests/interactions_20260328-103522-477978.md index 8cd0a8a..504da42 100644 --- a/tests/interactions_20260328-103522-477978.md +++ b/tests/interactions_20260328-103522-477978.md @@ -9,12 +9,12 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | +| 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 | @@ -23,17 +23,17 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | +| 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 | +| 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 | @@ -49,33 +49,33 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | +| 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 | +| 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 | +| 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 | +| 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 | +| 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 | @@ -86,11 +86,11 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | @@ -99,16 +99,16 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | +| 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 | @@ -221,11 +221,11 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | @@ -235,15 +235,15 @@ Interactions for `20260328-103522-477978/`: | 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 | +| 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 | +| 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 | +| 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 |