This commit is contained in:
4DBug
2026-08-26 13:22:49 -05:00
commit 53b3c1da6c
96 changed files with 6210 additions and 0 deletions
+284
View File
@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>tv.bug.tools api</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css" />
<style>
html { box-sizing: border-box; }
*, *:before, *:after { box-sizing: inherit; }
body { margin: 0; background: #fafafa; }
#fallback { font-family: monospace; padding: 2rem; white-space: pre-wrap; }
.swagger-ui .topbar,
.swagger-ui .search { display: none !important; }
:root {
color-scheme: dark;
}
body {
background: #1e1e2e;
color: #cdd6f4;
}
.swagger-ui {
color: #cdd6f4;
background: transparent;
}
.swagger-ui .topbar {
background: #181825;
border-bottom: 1px solid #585b70;
}
.swagger-ui .topbar .download-url-wrapper .select-label {
color: #a6adc8;
}
.swagger-ui .topbar .download-url-wrapper input[type="text"] {
background: #45475a;
border: 1px solid #585b70;
color: #cdd6f4;
}
.swagger-ui .info,
.swagger-ui .info .title,
.swagger-ui .info h1,
.swagger-ui .info h2,
.swagger-ui .info h3,
.swagger-ui .info h4,
.swagger-ui .info h5 {
color: #cdd6f4;
}
.swagger-ui .info .description,
.swagger-ui .info p,
.swagger-ui .info li,
.swagger-ui .info .base-url {
color: #a6adc8;
}
.swagger-ui .scheme-container {
background: #313244;
box-shadow: none;
border: 1px solid #585b70;
}
.swagger-ui .filter .operation-filter-input {
border: 1px solid #585b70;
background: #45475a;
color: #cdd6f4;
}
.swagger-ui .opblock-tag {
color: #cdd6f4;
border-bottom: 1px solid #585b70;
}
.swagger-ui .opblock-tag small {
color: #a6adc8;
}
.swagger-ui .opblock {
border: 1px solid #585b70;
background: #313244;
border-radius: 6px;
margin: 0 0 12px;
box-shadow: none;
}
.swagger-ui .opblock .opblock-summary {
border-color: #585b70;
}
.swagger-ui .opblock .opblock-summary-method {
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
font-weight: 600;
min-width: 72px;
}
.swagger-ui .opblock.opblock-get .opblock-summary-method {
background: #89b4fa;
color: #11111b;
}
.swagger-ui .opblock.opblock-post .opblock-summary-method {
background: #a6e3a1;
color: #11111b;
}
.swagger-ui .opblock.opblock-put .opblock-summary-method {
background: #fab387;
color: #11111b;
}
.swagger-ui .opblock.opblock-patch .opblock-summary-method {
background: #cba6f7;
color: #11111b;
}
.swagger-ui .opblock.opblock-delete .opblock-summary-method {
background: #f38ba8;
color: #11111b;
}
.swagger-ui .opblock .opblock-summary-path,
.swagger-ui .opblock .opblock-summary-description {
color: #cdd6f4;
}
.swagger-ui .opblock-body {
background: #181825;
border-top: 1px solid #585b70;
}
.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-description-wrapper,
.swagger-ui .parameter__name,
.swagger-ui .parameter__type,
.swagger-ui label {
color: #cdd6f4;
}
.swagger-ui .parameter__extension,
.swagger-ui .parameter__in {
color: #a6adc8;
}
.swagger-ui input[type="text"],
.swagger-ui input[type="password"],
.swagger-ui input[type="search"],
.swagger-ui input[type="email"],
.swagger-ui textarea,
.swagger-ui select {
background: #45475a;
border: 1px solid #585b70;
color: #cdd6f4;
border-radius: 4px;
}
.swagger-ui input[type="text"]:focus,
.swagger-ui textarea:focus,
.swagger-ui select:focus {
outline: 2px solid #89b4fa;
outline-offset: 1px;
}
.swagger-ui .btn {
border-radius: 4px;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.swagger-ui .btn.cancel {
background: #45475a;
border-color: #585b70;
color: #cdd6f4;
}
.swagger-ui .btn.execute {
background: #89b4fa;
border-color: #89b4fa;
color: #11111b;
font-weight: 600;
}
.swagger-ui .btn.execute:hover {
filter: brightness(1.08);
}
.swagger-ui .responses-inner h4,
.swagger-ui .responses-inner h5,
.swagger-ui .tab li {
color: #cdd6f4;
}
.swagger-ui .response-col_status,
.swagger-ui .response-col_links {
color: #a6adc8;
}
.swagger-ui table thead tr th,
.swagger-ui table thead tr td {
background: #45475a;
border-bottom: 1px solid #585b70;
color: #cdd6f4;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.swagger-ui table tbody tr td {
border-bottom: 1px solid #585b70;
color: #cdd6f4;
}
.swagger-ui .model-box,
.swagger-ui .model,
.swagger-ui .renderedMarkdown code,
.swagger-ui .microlight,
.swagger-ui .highlight-code pre {
background: #11111b;
color: #cdd6f4;
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
border: 1px solid #585b70;
}
.swagger-ui .prop-type,
.swagger-ui .prop-format {
color: #94e2d5;
}
.swagger-ui .model-title,
.swagger-ui .model-hint {
color: #a6adc8;
}
.swagger-ui section.models {
border: 1px solid #585b70;
background: #313244;
}
.swagger-ui section.models.is-open h4 {
border-bottom: 1px solid #585b70;
color: #cdd6f4;
}
.swagger-ui .dialog-ux .modal-ux {
background: #181825;
border: 1px solid #585b70;
color: #cdd6f4;
}
.swagger-ui .dialog-ux .modal-ux-header h3 {
color: #cdd6f4;
}
.swagger-ui .errors-wrapper {
background: rgba(243, 139, 168, 0.12);
border: 1px solid #f38ba8;
color: #cdd6f4;
}
.swagger-ui .loading-container .loading::after {
color: #94e2d5;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
<script>
window.addEventListener('load', function () {
var ui = SwaggerUIBundle({
url: '/api.json',
dom_id: '#swagger-ui',
deepLinking: true,
defaultModelsExpandDepth: -1,
presets: [SwaggerUIBundle.presets.apis],
layout: 'BaseLayout',
requestInterceptor: function (req) { return req; },
});
window.ui = ui;
});
</script>
</body>
</html>
+524
View File
@@ -0,0 +1,524 @@
/* https://github.com/oqo0/swagger-themes */
@import url('https://unpkg.com/@catppuccin/palette/css/catppuccin.css');
:root {
--block-border-radius: 8px;
--innner-block-border-radius: 4px;
--icons-opacity: .32;
--secondary-icon-opacity: .6;
--black-icons-filter: invert(1);
}
[data-md-color-scheme="catppuccin-mocha"] {
/* primary colors */
--swagger-color: var(--ctp-latte-green);
--link-color: var(--ctp-latte-blue);
--accept-header-color: var(--ctp-latte-green);
/* methods colors */
--post-method-color: var(--ctp-latte-green);
--post-method-background-color: color-mix(in srgb, var(--ctp-latte-green), transparent 90%);
--get-method-color: var(--ctp-latte-blue);
--get-method-background-color: color-mix(in srgb, var(--ctp-latte-blue), transparent 90%);
--head-method-color: var(--ctp-latte-mauve);
--head-method-background-color: color-mix(in srgb, var(--ctp-latte-mauve), transparent 90%);
--put-method-color: var(--ctp-latte-peach);
--put-method-background-color: color-mix(in srgb, var(--ctp-latte-peach), transparent 90%);
--delete-method-color: var(--ctp-latte-red);
--delete-method-background-color: color-mix(in srgb, var(--ctp-latte-red), transparent 90%);
--options-method-color: var(--ctp-latte-sky);
--options-method-background-color: color-mix(in srgb, var(--ctp-latte-sky), transparent 90%);
--patch-method-color: var(--ctp-latte-teal);
--patch-method-background-color: color-mix(in srgb, var(--ctp-latte-teal), transparent 90%);
/* background */
--all-bg-color: var(--ctp-latte-base);
--secondary-bg-color: var(--ctp-latte-mantle);
--header-bg-color: var(--ctp-latte-mantle);
--block-bg-color: var(--ctp-latte-mantle);
--selecter-bg-color: var(--ctp-latte-mantle);
--teteriary-bg-color: var(--ctp-latte-crust);
/* text */
--primary-text-color: var(--ctp-latte-text);
--secondary-text-color: var(--ctp-latte-subtext0);
/* border */
--block-border-color: var(--ctp-latte-surface0);
/* icons */
--primary-icon-color: var(--ctp-latte-text);
}
[data-md-color-scheme="catppuccin-latte"] {
/* primary colors */
--swagger-color: var(--ctp-mocha-green);
--link-color: var(--ctp-mocha-blue);
--accept-header-color: var(--ctp-mocha-green);
/* methods colors */
--post-method-color: var(--ctp-mocha-green);
--post-method-background-color: color-mix(in srgb, var(--ctp-mocha-green), transparent 90%);
--get-method-color: var(--ctp-mocha-blue);
--get-method-background-color: color-mix(in srgb, var(--ctp-mocha-blue), transparent 90%);
--head-method-color: var(--ctp-mocha-mauve);
--head-method-background-color: color-mix(in srgb, var(--ctp-mocha-mauve), transparent 90%);
--put-method-color: var(--ctp-mocha-peach);
--put-method-background-color: color-mix(in srgb, var(--ctp-mocha-peach), transparent 90%);
--delete-method-color: var(--ctp-mocha-red);
--delete-method-background-color: color-mix(in srgb, var(--ctp-mocha-red), transparent 90%);
--options-method-color: var(--ctp-mocha-sky);
--options-method-background-color: color-mix(in srgb, var(--ctp-mocha-sky), transparent 90%);
--patch-method-color: var(--ctp-mocha-teal);
--patch-method-background-color: color-mix(in srgb, var(--ctp-mocha-teal), transparent 90%);
/* background */
--all-bg-color: var(--ctp-mocha-base);
--secondary-bg-color: var(--ctp-mocha-mantle);
--header-bg-color: var(--ctp-mocha-mantle);
--block-bg-color: var(--ctp-mocha-mantle);
--selecter-bg-color: var(--ctp-mocha-mantle);
--teteriary-bg-color: var(--ctp-mocha-crust);
/* text */
--primary-text-color: var(--ctp-mocha-text);
--secondary-text-color: var(--ctp-mocha-subtext0);
/* border */
--block-border-color: var(--ctp-mocha-surface0);
/* icons */
--primary-icon-color: var(--ctp-mocha-text);
}
/* primary colors */
.swagger-ui .topbar .download-url-wrapper .select-label select {
border: 2px solid var(--swagger-color);
}
.swagger-ui .info .title small.version-stamp {
background-color: var(--swagger-color);
}
.swagger-ui .info a {
color: var(--link-color);
}
.swagger-ui .response-control-media-type--accept-controller select {
border-color: var(--accept-header-color);
}
.swagger-ui .response-control-media-type__accept-message {
color: var(--accept-header-color);
}
.swagger-ui .btn.authorize {
color: var(--post-method-color);
}
.swagger-ui .btn.authorize {
border-color: var(--post-method-color);
}
.swagger-ui .btn.authorize svg {
fill: var(--post-method-color);
}
.swagger-ui .json-schema-2020-12__attribute--primary {
color: var(--head-method-color);
}
/* methods colors */
/* http post */
.swagger-ui .opblock.opblock-post .opblock-summary-method {
background: var(--post-method-color);
}
.swagger-ui .opblock.opblock-post .opblock-summary {
border-color: var(--post-method-color);
}
.swagger-ui .opblock.opblock-post {
background: var(--post-method-background-color);
border-color: var(--post-method-color);
}
.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after {
background: var(--post-method-color);
}
/* http get */
.swagger-ui .opblock.opblock-get .opblock-summary-method {
background: var(--get-method-color);
}
.swagger-ui .opblock.opblock-get .opblock-summary {
border-color: var(--get-method-color);
}
.swagger-ui .opblock.opblock-get {
background: var(--get-method-background-color);
border-color: var(--get-method-color);
}
.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after {
background: var(--get-method-color);
}
/* http head */
.swagger-ui .opblock.opblock-head .opblock-summary-method {
background: var(--head-method-color);
}
.swagger-ui .opblock.opblock-head .opblock-summary {
border-color: var(--head-method-color);
}
.swagger-ui .opblock.opblock-head {
background: var(--head-method-background-color);
border-color: var(--head-method-color);
}
.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span::after {
background: var(--head-method-color);
}
/* http put */
.swagger-ui .opblock.opblock-put .opblock-summary-method {
background: var(--put-method-color);
}
.swagger-ui .opblock.opblock-put .opblock-summary {
border-color: var(--put-method-color);
}
.swagger-ui .opblock.opblock-put {
background: var(--put-method-background-color);
border-color: var(--put-method-color);
}
.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after {
background: var(--put-method-color);
}
/* http delete */
.swagger-ui .opblock.opblock-delete .opblock-summary-method {
background: var(--delete-method-color);
}
.swagger-ui .opblock.opblock-delete .opblock-summary {
border-color: var(--delete-method-color);
}
.swagger-ui .opblock.opblock-delete {
background: var(--delete-method-background-color);
border-color: var(--delete-method-color);
}
.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after {
background: var(--delete-method-color);
}
/* http options */
.swagger-ui .opblock.opblock-options .opblock-summary-method {
background: var(--options-method-color);
}
.swagger-ui .opblock.opblock-options .opblock-summary {
border-color: var(--options-method-color);
}
.swagger-ui .opblock.opblock-options {
background: var(--options-method-background-color);
border-color: var(--options-method-color);
}
.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span::after {
background: var(--options-method-color);
}
/* http patch */
.swagger-ui .opblock.opblock-patch .opblock-summary-method {
background: var(--patch-method-color);
}
.swagger-ui .opblock.opblock-patchs .opblock-summary {
border-color: var(--patch-method-color);
}
.swagger-ui .opblock.opblock-patch {
background: var(--patch-method-background-color);
border-color: var(--patch-method-color);
}
.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span::after {
background: var(--patch-method-color);
}
/* blocks */
body {
background-color: var(--all-bg-color);
color: white;
}
.swagger-ui .topbar {
background-color: var(--header-bg-color);
}
.swagger-ui .scheme-container {
background: var(--secondary-bg-color);
}
.swagger-ui section.models .model-container {
background: var(--secondary-bg-color);
border-radius: var(--innner-block-border-radius);
}
.swagger-ui select {
background: var(--selecter-bg-color);
border-radius: var(--block-border-radius);
color: var(--primary-text-color);
}
.swagger-ui section.models {
border: 1px solid var(--block-border-color);
background-color: var(--block-bg-color);
}
.swagger-ui .opblock .opblock-section-header {
background: var(--secondary-bg-color);
}
.swagger-ui .body-param__example {
background-color: var(--secondary-bg-color) !important;
border-radius: var(--block-border-radius) !important;
}
.swagger-ui .example {
background-color: var(--secondary-bg-color) !important;
border-radius: var(--block-border-radius) !important;
}
.swagger-ui .copy-to-clipboard {
background: rgba(255, 255, 255, var(--icons-opacity));
border-radius: var(--block-border-radius);
}
.swagger-ui .opblock .opblock-summary-method {
border-radius: var(--innner-block-border-radius);
}
.swagger-ui input[type="email"],
.swagger-ui input[type="file"],
.swagger-ui input[type="password"],
.swagger-ui input[type="search"],
.swagger-ui input[type="text"],
.swagger-ui textarea {
background: var(--secondary-bg-color);
border: 1px solid var(--block-border-color);
border-radius: var(--block-border-radius);
color: var(--primary-text-color);
outline: none;
}
.swagger-ui .dialog-ux .modal-ux-header {
border-bottom: 1px solid var(--block-border-color);
}
.swagger-ui .btn {
border: 2px solid var(--block-border-color);
border-radius: var(--block-border-radius);
color: var(--primary-text-color);
}
.swagger-ui .dialog-ux .modal-ux {
background: var(--block-bg-color);
border: 1px solid var(--block-border-color);
border-radius: var(--block-border-radius);
}
.swagger-ui .auth-btn-wrapper {
justify-content: left;
}
.swagger-ui .opblock-tag {
border-bottom: 1px solid var(--block-border-color);
}
.swagger-ui section.models.is-open h4 {
border-bottom: 1px solid var(--block-border-color);
}
.swagger-ui .opblock {
border-radius: var(--block-border-radius);
}
.swagger-ui section.models {
border-radius: var(--block-border-radius);
}
/* button white outline fix */
.swagger-ui .model-box-control:focus,
.swagger-ui .models-control:focus,
.swagger-ui .opblock-summary-control:focus {
outline: none;
}
/* icons */
.swagger-ui .model-toggle::after {
opacity: var(--icons-opacity);
filter: var(--black-icons-filter);
}
.swagger-ui svg:not(:root) {
fill: var(--primary-icon-color);
}
.swagger-ui .opblock-summary-control svg:not(:root) {
opacity: var(--secondary-icon-opacity);
}
/* text */
.swagger-ui {
color: var(--primary-text-color);
}
.swagger-ui .info .title {
color: var(--primary-text-color);
}
.swagger-ui a.nostyle {
color: var(--primary-text-color);
}
.swagger-ui .model-title {
color: var(--primary-text-color);
}
.swagger-ui .models-control {
color: var(--primary-text-color);
}
.swagger-ui .dialog-ux .modal-ux-header h3 {
color: var(--primary-text-color);
}
.swagger-ui .dialog-ux .modal-ux-content h4 {
color: var(--primary-text-color);
}
.swagger-ui .dialog-ux .modal-ux-content p {
color: var(--secondary-text-color);
}
.swagger-ui ol {
color: var(--primary-text-color);
}
.swagger-ui h3 {
color: var(--primary-text-color) !important;
}
.swagger-ui h4 {
color: var(--primary-text-color) !important;
}
.swagger-ui h5 {
color: var(--secondary-text-color) !important;
}
.swagger-ui label {
color: var(--primary-text-color);
}
.swagger-ui .opblock .opblock-section-header h4 {
color: var(--primary-text-color);
}
.swagger-ui .tab li button.tablinks {
color: var(--primary-text-color);
}
.swagger-ui .opblock-description-wrapper p,
.swagger-ui .opblock-external-docs-wrapper p,
.swagger-ui .opblock-title_normal p {
color: var(--primary-text-color);
}
.opblock-summary-description {
color: var(--secondary-text-color) !important;
}
.swagger-ui table thead tr td, .swagger-ui table thead tr th {
border-bottom: 1px solid var(--block-border-color);
color: var(--primary-text-color);
}
.swagger-ui .response-col_status {
color: var(--primary-text-color);
}
.swagger-ui .response-col_links {
color: var(--secondary-text-color);
}
.swagger-ui .parameter__name {
color: var(--primary-text-color);
}
.swagger-ui .parameter__type {
color: var(--secondary-text-color);
}
.swagger-ui .prop-format {
color: var(--secondary-text-color);
}
.swagger-ui .info li,
.swagger-ui .info p,
.swagger-ui .info table {
color: var(--secondary-text-color);
}
.swagger-ui .model {
color: var(--secondary-text-color);
}
.swagger-ui .opblock-tag small {
color: var(--secondary-text-color);
}
.swagger-ui .json-schema-2020-12__title,
.swagger-ui .json-schema-2020-12-keyword__name--primary,
.swagger-ui .json-schema-2020-12-property .json-schema-2020-12__title {
color: var(--primary-text-color);
}
.swagger-ui .json-schema-2020-12-expand-deep-button {
color: var(--secondary-text-color);
}
/* json */
.swagger-ui .json-schema-2020-12-accordion,
.swagger-ui .json-schema-2020-12-expand-deep-button {
background: none;
}
.swagger-ui .json-schema-2020-12 {
background-color: var(--teteriary-bg-color);
}
.swagger-ui .json-schema-2020-12__constraint--string {
background-color: var(--put-method-color);
}