- Full OpenAPI 3.0 spec covering all 20 endpoints - Swagger UI served at /docs via CDN (zero deps) - Spec at /docs/openapi.yaml (go:embed) - Real data examples (Selic 15%, USD/BRL 5.19, etc.) - Publicly accessible (no API key needed for docs)
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package api
|
|
|
|
import (
|
|
_ "embed"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
//go:embed docs/openapi.yaml
|
|
var openapiSpec []byte
|
|
|
|
func RegisterSwagger(app *fiber.App) {
|
|
app.Get("/docs/openapi.yaml", func(c *fiber.Ctx) error {
|
|
c.Set("Content-Type", "application/yaml")
|
|
return c.Send(openapiSpec)
|
|
})
|
|
|
|
app.Get("/docs", func(c *fiber.Ctx) error {
|
|
c.Set("Content-Type", "text/html")
|
|
return c.SendString(swaggerHTML)
|
|
})
|
|
}
|
|
|
|
const swaggerHTML = `<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Sentinela API</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css">
|
|
<style>body { margin: 0; }</style>
|
|
</head>
|
|
<body>
|
|
<div id="swagger-ui"></div>
|
|
<script src="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
|
|
<script>
|
|
SwaggerUIBundle({
|
|
url: '/docs/openapi.yaml',
|
|
dom_id: '#swagger-ui',
|
|
deepLinking: true,
|
|
presets: [SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset],
|
|
layout: "BaseLayout"
|
|
})
|
|
</script>
|
|
</body>
|
|
</html>`
|