DMS.Documentation 1.0.1

dotnet add package DMS.Documentation --version 1.0.1                
NuGet\Install-Package DMS.Documentation -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DMS.Documentation" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DMS.Documentation --version 1.0.1                
#r "nuget: DMS.Documentation, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DMS.Documentation as a Cake Addin
#addin nuget:?package=DMS.Documentation&version=1.0.1

// Install DMS.Documentation as a Cake Tool
#tool nuget:?package=DMS.Documentation&version=1.0.1                

DMS.Documentation

Paquete NuGet: DMS.Documentation
Autor: Fredy Fuentes
Versión Actual: 1.0.0

📜 Descripción

Biblioteca para generar documentación Swagger/OpenAPI en aplicaciones .NET con ejemplos personalizados, esquemas de seguridad y manejo de errores estandarizados. Ideal para APIs REST que requieren documentación detallada y mantenible.

📝 Características Principales

  • Generación automática de ejemplos para solicitudes y respuestas.
  • Esquema de seguridad JWT integrado (Bearer Token).
  • Manejo de errores estandarizados (400, 401, 500) con ejemplos.
  • Personalización de la información básica (título, versión, contacto).
  • Soporte para .NET 7.0+ y Swagger/OpenAPI.

📖 Ejemplos de Uso

📖 Configurar Documentación en Program.cs

using DMS.Documentation.Extensions;

var builder = WebApplication.CreateBuilder(args);

// Configurar documentación
builder.Services.ConfigureDocumentation(
    title: "Mi API",
    version: "v1",
    descripcion: "API para gestión de usuarios",
    name: "Soporte Técnico",
    email: "soporte@empresa.com",
    url: "https://empresa.com",
    requestExamples: new Dictionary<string, Dictionary<string, object>>
    {
        ["POST_/api/users"] = new Dictionary<string, object>
        {
            ["CrearUsuario"] = new { Name = "John Doe", Email = "john@example.com" }
        }
    },
    successExamples: new Dictionary<string, Dictionary<string, object>>
    {
        ["GET_/api/users"] = new Dictionary<string, object>
        {
            ["ListaUsuarios"] = new[] { new { Id = 1, Name = "Jane Doe" } }
        }
    }
);

📖 Documentación Generada

{
    "openapi": "3.0.4",
    "info": {
        "title": "Advance API DMS",
        "description": "API para el sistema advance",
        "contact": {
            "name": "Fredy Fuentes",
            "url": "https://www.dms.ms",
            "email": "fredy.fuentes@dms.ms"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
          "url": "https://localhost:7253"
        },
        {
          "url": "http://localhost:5080"
        }
    ],
    "paths": {
        "/api/users": {
            post": {
            "tags": [
              "User"
            ],
            "requestBody": {
            "content": {
                "application/json": {
                "schema": {
                    "$ref": "#/components/schemas/CrearUsuario"
                  },
                  "examples": {
                     "CrearUsuario": {
                        "value": {
                            "name": "John Doe",
                            "email": "john@example.com"
                        }
                     }
                  }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CrearUsuario"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrearUsuario"
                },
                "examples": {
                  "ListaUsuarios": {
                    "value": [
                      {
                        "id": 1,
                        "name": "Jane Doe"
                      }
                    ]
                  }
                }
              }
            }
          }
        }
        ...
}

🚀 Instalación

Puedes instalar el paquete desde NuGet con:

dotnet add package DMS.Documentation

🛠 Compatibilidad

  • .NET 9.0+

📄 Documentación Completa

Clase Descripción
DmsDocumentationExtension Configuración principal de la documentación.
BearerSecuritySchemeTransformer Añade esquema JWT a la documentación.
ErrorResponsesTransformer Ejemplos estandarizados para códigos de error 400, 401 y 500.
OpenApiExampleGenerator Genera ejemplos en formato OpenAPI a partir de objetos C#.

⚠️ Mejores Prácticas

  • Ejemplos Reales: Usa datos que reflejen casos reales de uso.
  • Documentación Completa: Describe cada endpoint y modelo de datos.
  • Seguridad: Nunca expongas ejemplos con datos sensibles.
  • Actualización: Mantén la documentación actualizada con cada cambio.

📄 Licencia

Este proyecto se encuentra bajo la licencia Apache2-0.


📌 Cómo Contribuir

Si deseas contribuir, revisa el archivo CONTRIBUTING.md para más detalles.


📜 Changelog

Para ver los cambios en cada versión, consulta el archivo CHANGELOG.md.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.1 83 3/27/2025
1.0.0 87 3/27/2025