Heroku
tcp/443 tcp/80
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1b885ff43209d61ec85a8b0d3ef3eee9cef3eee9cef3eee9c
Public Swagger UI/API detected at path: /swagger.json - sample paths: GET /shows POST /contact POST /subscribe-to-newsletter
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1b885ff43209d61ec85a8b0d3ef3eee9cef3eee9cef3eee9c
Public Swagger UI/API detected at path: /swagger.json - sample paths: GET /shows POST /contact POST /subscribe-to-newsletter
Open service 13.248.132.87:443 · api-staging.whiletruemusic.com
2026-01-09 06:43
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Jan 2026 06:43:22 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=yF6C14FMJiAH2BADPLJIcFCzfWj5%2Bn25NjPvc8NrB5s%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767941002"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=yF6C14FMJiAH2BADPLJIcFCzfWj5%2Bn25NjPvc8NrB5s%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767941002"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 99.83.151.71:80 · api-staging.whiletruemusic.com
2026-01-08 23:59
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Fri, 09 Jan 2026 00:00:04 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=wRj13OLC7GoL3d00VKrmotmUM1psXQ%2FLsIpeUZLaBFk%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767916804"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=wRj13OLC7GoL3d00VKrmotmUM1psXQ%2FLsIpeUZLaBFk%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767916804"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 13.248.132.87:443 · api-staging.whiletruemusic.com
2026-01-02 02:36
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Fri, 02 Jan 2026 02:36:53 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=7tSwlZtrWx3fl8ih2NngRJ8vLkv7nPwc9CKU6gMKV5w%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767321413"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=7tSwlZtrWx3fl8ih2NngRJ8vLkv7nPwc9CKU6gMKV5w%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767321413"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 99.83.151.71:80 · api-staging.whiletruemusic.com
2026-01-02 01:29
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Fri, 02 Jan 2026 01:29:20 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=14%2BwR98xY7FCkn7pmn9l8e6WJoaOngAPcPud%2F4s%2F7ZU%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767317360"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=14%2BwR98xY7FCkn7pmn9l8e6WJoaOngAPcPud%2F4s%2F7ZU%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767317360"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 99.83.151.71:80 · api-staging.whiletruemusic.com
2025-12-23 07:30
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Tue, 23 Dec 2025 07:30:22 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=ftDEspHbovg%2FiBW105YQ2J7GMZrYc1pMXENLO0YF6Jg%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766475022"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=ftDEspHbovg%2FiBW105YQ2J7GMZrYc1pMXENLO0YF6Jg%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766475022"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 13.248.132.87:443 · api-staging.whiletruemusic.com
2025-12-22 15:28
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Mon, 22 Dec 2025 15:28:48 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=Kj68O8bJw4nvu7bDBmiXxRgs4Oi68K7hAt5LicUWdZg%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766417328"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=Kj68O8bJw4nvu7bDBmiXxRgs4Oi68K7hAt5LicUWdZg%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766417328"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 99.83.151.71:80 · api-staging.whiletruemusic.com
2025-12-21 06:39
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Sun, 21 Dec 2025 06:39:18 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=WzeI6VhLizcgBQ6euQkrMuVczSB7dP%2FJp1DeWpf%2FuQM%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766299158"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=WzeI6VhLizcgBQ6euQkrMuVczSB7dP%2FJp1DeWpf%2FuQM%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766299158"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 13.248.132.87:443 · api-staging.whiletruemusic.com
2025-12-20 18:17
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Sat, 20 Dec 2025 18:17:53 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=fi7S34Fu1qk0V0T8DMcRUx4dg8H7KWAVAXqBfruHn0Y%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766254673"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=fi7S34Fu1qk0V0T8DMcRUx4dg8H7KWAVAXqBfruHn0Y%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766254673"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>
Open service 99.83.151.71:80 · api-staging.whiletruemusic.com
2025-12-19 08:25
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Fri, 19 Dec 2025 08:25:54 GMT
Nel: {"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}
Report-To: {"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=n6oHNDmjOuEIYuxFbgD7%2F%2FNyEBj7LVqJJ7dR4GYaqzI%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766132754"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=n6oHNDmjOuEIYuxFbgD7%2F%2FNyEBj7LVqJJ7dR4GYaqzI%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766132754"
Server: Heroku
Vary: origin,accept-encoding
Via: 1.1 heroku-router
Connection: close
Page title: while(true) API Documentation
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>while(true) API Documentation</title>
<link rel="stylesheet" type="text/css" href="/swaggerui/swagger-ui.css" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/swaggerui/favicon-16x16.png" sizes="16x16" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="/swaggerui/swagger-ui-bundle.js"></script>
<script src="/swaggerui/swagger-ui-standalone-preset.js"></script>
<script src="/swaggerui/extend.js" type="text/javascript"></script>
<script>
function getUrlVars() {
const vars = [];
let hash;
const hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (let i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
window.onload = function() {
let url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/swagger.json";
}
// pull validatorUrl string or null form server
let validatorUrl = null;
validatorUrl: '//online.swagger.io/validator';
const ACCESS_TOKEN_QUERY_PARAM_NAME = 'access_token';
const accessToken = getUrlVars()[ACCESS_TOKEN_QUERY_PARAM_NAME];
const swaggerOptions = {
url: url + (accessToken ? (url.indexOf('?') < 0 ? '?' : '&') + ACCESS_TOKEN_QUERY_PARAM_NAME + '=' + accessToken : ''),
validatorUrl: validatorUrl,
dom_id: '#swagger-ui',
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: 'StandaloneLayout',
docExpansion: "list",
tagsSorter: apisSorter.alpha,
operationsSorter: operationsSorter.alpha,
// patch: uiCompleteScript -- Rendering
onComplete: function() {
},
tryItOutEnabled: false,
}
const uiOptions = {};
Object.assign(swaggerOptions, uiOptions);
const ui = SwaggerUIBundle(swaggerOptions);
window.ui = ui;
};
</script>
</body>
</html>