Switched to Redoc

This commit is contained in:
2026-01-26 13:31:08 +00:00
parent 69802f3ece
commit c115f41dac
3 changed files with 39 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
import inspect
from typing import List, Optional
from ninja import NinjaAPI, Router, Schema
from ninja import NinjaAPI, Router, Schema, Redoc
from ninja.security import django_auth
from .security import JWTAuth
@@ -15,6 +15,7 @@ from .routers.access import build_router as build_access_router
from .routers.telemetry import build_router as build_telemetry_router
from .routers.agent import build_router as build_agent_router
from django.contrib.admin.views.decorators import staff_member_required
def register_routers(target_api: NinjaAPI) -> None:
target_api.add_router("/system", build_system_router(), tags=["system"])
@@ -39,6 +40,8 @@ api = build_api(
version="1.0.0",
description="Authenticated API for internal app use and external clients.",
auth=[django_auth, JWTAuth()],
docs=Redoc(),
docs_decorator=staff_member_required,
)
register_routers(api)
@@ -48,5 +51,7 @@ api_v1 = build_api(
description="Authenticated API for internal app use and external clients.",
auth=[django_auth, JWTAuth()],
urls_namespace="api-v1",
docs=Redoc(),
docs_decorator=staff_member_required,
)
register_routers(api_v1)

View File

@@ -0,0 +1,32 @@
{% load static %}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title|default:"Keywarden API" }}</title>
<link rel="stylesheet" href="{% static 'ninja/swagger-ui.css' %}">
<style>
.swagger-ui .opblock-summary {
flex-direction: row;
flex-wrap: nowrap;
}
.swagger-ui .opblock-summary-path {
max-width: none;
white-space: nowrap;
word-break: normal;
overflow-wrap: normal;
writing-mode: horizontal-tb;
}
.swagger-ui .opblock-summary-path a {
white-space: nowrap;
}
</style>
</head>
<body data-api-csrf="{{ add_csrf|yesno:'true,false' }}" data-csrf-token="{{ csrf_token }}">
<div id="swagger-ui"></div>
<script id="swagger-settings" type="application/json">{{ swagger_settings|safe }}</script>
<script src="{% static 'ninja/swagger-ui-bundle.js' %}"></script>
<script src="{% static 'ninja/swagger-ui-init.js' %}"></script>
</body>
</html>