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 75.2.97.79:443 · api.whiletruemusic.com
2026-01-09 13:44
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 13:44:45 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=qzxfxiIvePTGXQb1gsa%2BTOGu3wSZKcTSHDuMnqjyW1c%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767966285"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=qzxfxiIvePTGXQb1gsa%2BTOGu3wSZKcTSHDuMnqjyW1c%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767966285"
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 75.2.97.79:80 · api.whiletruemusic.com
2026-01-08 21:02
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Thu, 08 Jan 2026 21:03:14 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=0CeSEQRzJKAOmeqE6XQKYWqNAj9Rb5S1wxqUlxQKJcU%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767906194"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=0CeSEQRzJKAOmeqE6XQKYWqNAj9Rb5S1wxqUlxQKJcU%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767906194"
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 75.2.97.79:443 · api.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:27 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=xRnXTSXTwkWY7rX5AwzL5pP7%2FGXkrwk1%2FQHIQJX0m3A%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767321387"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=xRnXTSXTwkWY7rX5AwzL5pP7%2FGXkrwk1%2FQHIQJX0m3A%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767321387"
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 75.2.97.79:80 · api.whiletruemusic.com
2026-01-01 21:11
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 2759
Content-Type: text/html; charset=utf-8
Date: Thu, 01 Jan 2026 21:11:14 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=GSX462IQ36J7n%2FRv%2B%2FPtcTJGj8MZlIUbr%2BmuKhik1BU%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1767301874"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=GSX462IQ36J7n%2FRv%2B%2FPtcTJGj8MZlIUbr%2BmuKhik1BU%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1767301874"
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 75.2.97.79:443 · api.whiletruemusic.com
2025-12-23 04:14
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 04:14:37 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=FdM82h%2FDfoGV8LdAI5XSsqpjuISZv%2F2PHqi1OZ4SAPQ%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766463277"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=FdM82h%2FDfoGV8LdAI5XSsqpjuISZv%2F2PHqi1OZ4SAPQ%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766463277"
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 75.2.97.79:80 · api.whiletruemusic.com
2025-12-22 06:23
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 06:23:52 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=PnRBbpeIQyBcwi1H4EN1VlkfB5I92CrukAo4sJIn1ks%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766384632"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=PnRBbpeIQyBcwi1H4EN1VlkfB5I92CrukAo4sJIn1ks%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766384632"
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 75.2.97.79:80 · api.whiletruemusic.com
2025-12-20 19:47
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 19:47:33 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=lrbgBp22kpAkW0nQy6v9haBt05phHGYpz9RspMR%2FVxI%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766260053"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=lrbgBp22kpAkW0nQy6v9haBt05phHGYpz9RspMR%2FVxI%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766260053"
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 75.2.97.79:443 · api.whiletruemusic.com
2025-12-20 16:23
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 16:23:40 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=pWcG9EbwgxUBTugORu97MpvA6fnVWFqDarqN8i%2F0ljY%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766247820"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=pWcG9EbwgxUBTugORu97MpvA6fnVWFqDarqN8i%2F0ljY%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766247820"
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 75.2.97.79:80 · api.whiletruemusic.com
2025-12-19 01:31
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 01:31: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=gQBkrGABszClF9BfjSCTHFQubvqrm9UAinPz7O6rNMU%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1766107914"}],"max_age":3600}
Reporting-Endpoints: heroku-nel="https://nel.heroku.com/reports?s=gQBkrGABszClF9BfjSCTHFQubvqrm9UAinPz7O6rNMU%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1766107914"
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>