{
    "openapi": "3.0.0",
    "info": {
        "title": "Funerprevision API",
        "description": "API de Funerprevision / CAVEPRO: autenticación JWT, clientes, pagos, inventarios, ventas por puerta y administración",
        "version": "1.0.0"
    },
    "paths": {
        "/api/register": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Registro de nuevo usuario",
                "operationId": "8a56853624e025573120a09a4c75d468",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "email",
                                    "password",
                                    "role"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "example": "04121234567"
                                    },
                                    "document_type": {
                                        "type": "string",
                                        "example": "V"
                                    },
                                    "document_number": {
                                        "type": "string",
                                        "example": "15825639"
                                    },
                                    "is_active": {
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "role": {
                                        "type": "string",
                                        "enum": [
                                            "admin",
                                            "operator",
                                            "viewer"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Usuario creado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                }
            }
        },
        "/api/login/send-code": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Enviar código de verificación al correo del usuario",
                "operationId": "d0bedde739a8d765cd4ca23a5d0ca1fd",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "usuario@ejemplo.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password",
                                        "example": "secret"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Código enviado o modo temporal activo"
                    },
                    "401": {
                        "description": "Credenciales inválidas"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    },
                    "429": {
                        "description": "Demasiados intentos / espere para reenviar"
                    },
                    "500": {
                        "description": "Error al enviar el correo"
                    }
                }
            }
        },
        "/api/login": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Login de usuario",
                "operationId": "a3b306d14572d1f4bd6c064b3233e7b8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password",
                                    "codigo"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "codigo": {
                                        "type": "string",
                                        "example": "123456"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Login exitoso"
                    },
                    "401": {
                        "description": "Credenciales inválidas"
                    }
                }
            }
        },
        "/api/logout": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Cerrar sesión",
                "operationId": "fe8f3429cd6979b3b4517e186505f9f9",
                "responses": {
                    "200": {
                        "description": "Sesión cerrada"
                    },
                    "500": {
                        "description": "Error al cerrar sesión"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/refresh": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Refrescar token JWT",
                "operationId": "2c27d311a2876560fcb5a754b556cdc5",
                "responses": {
                    "200": {
                        "description": "Token refrescado"
                    },
                    "500": {
                        "description": "Error al refrescar token"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/me": {
            "get": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Obtener usuario autenticado",
                "operationId": "9d9bc556f927575aa492a88c28fe5908",
                "responses": {
                    "200": {
                        "description": "Datos del usuario"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks": {
            "get": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Obtener lista de bancos",
                "operationId": "caa138ee4cdf9701a3ec3c3198e9f777",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Búsqueda por nombre o código",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "example": "venezuela"
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "description": "Filtro por estado activo",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "example": true
                        }
                    },
                    {
                        "name": "supports_debit",
                        "in": "query",
                        "description": "Filtro por soporte de débito",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "example": true
                        }
                    },
                    {
                        "name": "supports_transfer",
                        "in": "query",
                        "description": "Filtro por soporte de transferencias",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "example": true
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Cantidad de resultados por página",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista paginada de bancos",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Crear un nuevo banco",
                "operationId": "3fa927bf23da99bcc82d71249de2c6d5",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "code",
                                    "name"
                                ],
                                "properties": {
                                    "code": {
                                        "description": "Código del banco",
                                        "type": "string",
                                        "maxLength": 10,
                                        "example": "001"
                                    },
                                    "name": {
                                        "description": "Nombre del banco",
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "Banco de Venezuela"
                                    },
                                    "is_active": {
                                        "description": "Estado activo del banco",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "supports_debit": {
                                        "description": "Soporte para pagos con débito",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "supports_transfer": {
                                        "description": "Soporte para transferencias",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "api_endpoint": {
                                        "description": "Endpoint de la API del banco",
                                        "type": "string",
                                        "format": "url",
                                        "example": "https://api.banco.com"
                                    },
                                    "api_key": {
                                        "description": "Clave API del banco",
                                        "type": "string",
                                        "example": "your-api-key"
                                    },
                                    "phone": {
                                        "description": "Teléfono del banco",
                                        "type": "string",
                                        "maxLength": 13,
                                        "example": "0424-1234567"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Banco creado exitosamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Banco creado exitosamente"
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Datos de validación incorrectos"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks/{bank}": {
            "get": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Obtener un banco específico",
                "operationId": "4b557b8cc027d2e1abfb49e6026f6ac0",
                "parameters": [
                    {
                        "name": "bank",
                        "in": "path",
                        "description": "ID del banco",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Datos del banco",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Banco no encontrado"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Actualizar un banco",
                "operationId": "b3e847f4926a39d10d1ab046703d8ee7",
                "parameters": [
                    {
                        "name": "bank",
                        "in": "path",
                        "description": "ID del banco",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "code": {
                                        "description": "Código del banco",
                                        "type": "string",
                                        "maxLength": 10,
                                        "example": "001"
                                    },
                                    "name": {
                                        "description": "Nombre del banco",
                                        "type": "string",
                                        "maxLength": 255,
                                        "example": "Banco de Venezuela"
                                    },
                                    "is_active": {
                                        "description": "Estado activo del banco",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "supports_debit": {
                                        "description": "Soporte para pagos con débito",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "supports_transfer": {
                                        "description": "Soporte para transferencias",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "api_endpoint": {
                                        "description": "Endpoint de la API del banco",
                                        "type": "string",
                                        "format": "url",
                                        "example": "https://api.banco.com"
                                    },
                                    "api_key": {
                                        "description": "Clave API del banco",
                                        "type": "string",
                                        "example": "your-api-key"
                                    },
                                    "phone": {
                                        "description": "Teléfono del banco",
                                        "type": "string",
                                        "maxLength": 13,
                                        "example": "0424-1234567"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Banco actualizado exitosamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Banco actualizado exitosamente"
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Datos de validación incorrectos"
                    },
                    "404": {
                        "description": "Banco no encontrado"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Eliminar un banco",
                "operationId": "bfbc0674acb8a3e46c1ad30b0ee5eb3f",
                "parameters": [
                    {
                        "name": "bank",
                        "in": "path",
                        "description": "ID del banco",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Banco eliminado exitosamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Banco eliminado exitosamente"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "No se puede eliminar el banco porque tiene pagos asociados"
                    },
                    "404": {
                        "description": "Banco no encontrado"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks/active": {
            "get": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Obtener bancos activos",
                "operationId": "c86d60a0c878c084a15c83291098d983",
                "responses": {
                    "200": {
                        "description": "Lista de bancos activos",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks/debit-supported": {
            "get": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Obtener bancos que soportan débito",
                "operationId": "ca9ee1058b0ff9b00bf5fd6c06572f96",
                "responses": {
                    "200": {
                        "description": "Lista de bancos que soportan pagos con débito",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks/transfer-supported": {
            "get": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Obtener bancos que soportan transferencias",
                "operationId": "3187646dfa631bb541ddb9123d76f967",
                "responses": {
                    "200": {
                        "description": "Lista de bancos que soportan transferencias",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/banks/{bank}/toggle-active": {
            "post": {
                "tags": [
                    "Bancos"
                ],
                "summary": "Cambiar estado activo de un banco",
                "operationId": "a90c2c5e1ce500d5be9f4259760d6017",
                "parameters": [
                    {
                        "name": "bank",
                        "in": "path",
                        "description": "ID del banco",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Estado del banco cambiado exitosamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Banco activado exitosamente"
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Banco no encontrado"
                    },
                    "401": {
                        "description": "Token inválido o expirado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/clients": {
            "get": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Listar clientes",
                "description": "Obtiene una lista paginada de clientes con filtros opcionales",
                "operationId": "af1f3794367a5e843bf15e3a9033d911",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Término de búsqueda",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "document_type",
                        "in": "query",
                        "description": "Tipo de documento",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "V",
                                "E",
                                "J",
                                "P",
                                "G"
                            ]
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "description": "Estado activo",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Elementos por página",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista de clientes obtenida exitosamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "data": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No autorizado",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "No autorizado"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Crear cliente",
                "operationId": "15981a5da120d8b4ea1b91b05a35622b",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "name",
                                    "document_type",
                                    "document_number"
                                ],
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Juan Pérez"
                                    },
                                    "document_type": {
                                        "type": "string",
                                        "enum": [
                                            "V",
                                            "E",
                                            "J",
                                            "P",
                                            "G"
                                        ]
                                    },
                                    "document_number": {
                                        "type": "string",
                                        "example": "12345678"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "example": "04121234567"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "juan@example.com"
                                    },
                                    "address": {
                                        "type": "string"
                                    },
                                    "is_active": {
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "user_id": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "usuariowisphub": {
                                        "type": "string",
                                        "example": "usuario_wisphub"
                                    },
                                    "idservicio": {
                                        "type": "integer",
                                        "example": 123
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Cliente creado",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Cliente creado exitosamente"
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Documento duplicado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/clients/{client}": {
            "get": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Obtener cliente",
                "operationId": "8fc07341eb8ece62ad4fdda3a30c7b25",
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cliente obtenido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Actualizar cliente",
                "operationId": "558832db987fc02c8a5107fb013891c9",
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "example": "Juan Pérez"
                                    },
                                    "document_type": {
                                        "type": "string",
                                        "enum": [
                                            "V",
                                            "E",
                                            "J",
                                            "P",
                                            "G"
                                        ]
                                    },
                                    "document_number": {
                                        "type": "string",
                                        "example": "12345678"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "example": "04121234567"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "example": "juan@example.com"
                                    },
                                    "address": {
                                        "type": "string"
                                    },
                                    "is_active": {
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "user_id": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "usuariowisphub": {
                                        "type": "string",
                                        "example": "usuario_wisphub"
                                    },
                                    "idservicio": {
                                        "type": "integer",
                                        "example": 123
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Cliente actualizado"
                    },
                    "409": {
                        "description": "Documento duplicado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Eliminar cliente",
                "operationId": "9102c26412072310db7ca015461a16cb",
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cliente eliminado"
                    },
                    "409": {
                        "description": "Tiene contratos activos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/clients/search": {
            "get": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Buscar cliente por documento",
                "operationId": "cf24d6ad748e1ea565bb8c41f57d4534",
                "parameters": [
                    {
                        "name": "document_type",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "V",
                                "E",
                                "J",
                                "P",
                                "G"
                            ]
                        }
                    },
                    {
                        "name": "document_number",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Cliente encontrado"
                    },
                    "404": {
                        "description": "No encontrado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/clients/{client}/contracts": {
            "get": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Contratos del cliente",
                "operationId": "45f8e16b6afd2200e638f29d18d337a6",
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de contratos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/stats/tiposervicio": {
            "get": {
                "tags": [
                    "Clientes"
                ],
                "summary": "Estadísticas de clientes por tipo de servicio",
                "operationId": "10f4a2869ddc1318bd411a7c4d679937",
                "responses": {
                    "200": {
                        "description": "Totales por tiposervicio"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Listar contratos",
                "operationId": "ee3d11bd377d704f11055900ae0bca16",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "client_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "active",
                                "suspended",
                                "cancelled",
                                "expired"
                            ]
                        }
                    },
                    {
                        "name": "is_active",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado paginado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Crear contrato",
                "operationId": "16cfc7a89e05bcca267234e620042864",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "contract_number",
                                    "client_id",
                                    "service_type",
                                    "service_plan",
                                    "monthly_amount",
                                    "start_date"
                                ],
                                "properties": {
                                    "contract_number": {
                                        "type": "string"
                                    },
                                    "client_id": {
                                        "type": "integer"
                                    },
                                    "service_type": {
                                        "type": "string"
                                    },
                                    "service_plan": {
                                        "type": "string"
                                    },
                                    "monthly_amount": {
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "start_date": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "end_date": {
                                        "type": "string",
                                        "format": "date",
                                        "nullable": true
                                    },
                                    "status": {
                                        "type": "string",
                                        "enum": [
                                            "active",
                                            "suspended",
                                            "cancelled",
                                            "expired"
                                        ],
                                        "nullable": true
                                    },
                                    "is_active": {
                                        "type": "boolean",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Contrato creado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/paid-invoices/{bdclient}/pagos-realizados-movil": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Listar contratos con facturas pagadas y swoficina=0",
                "operationId": "75cbc8577897bd6f6940eb9d27e6815c",
                "parameters": [
                    {
                        "name": "bdclient",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de contratos con facturas pagadas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/{contract}": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Obtener contrato",
                "operationId": "6cf16b0aa91af0b8b99a55f175d78aa6",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contrato obtenido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Actualizar contrato",
                "operationId": "4128fabdd64a3585fa1ec256e064ae2d",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {}
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Contrato actualizado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Eliminar contrato",
                "operationId": "0d0a72121e014407f77d8afd206ed45f",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contrato eliminado"
                    },
                    "409": {
                        "description": "Tiene facturas pendientes"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/invoices/{invoice_number}/mark-swoficina": {
            "put": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Marcar factura con swoficina=1 por que el cliente pago desde la App Movil",
                "operationId": "a0123b4bd38b8bda06c6a60705976904",
                "parameters": [
                    {
                        "name": "invoice_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura marcada correctamente"
                    },
                    "404": {
                        "description": "Factura no encontrada"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/invoices/{numero_contrato}/mark-swoficinaalfa": {
            "put": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Marcar factura con swoficina=2 por que el cliente pago en la taquilla",
                "operationId": "64745f19b582cac83ce3d51673615353",
                "parameters": [
                    {
                        "name": "invoice_number",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura marcada correctamente"
                    },
                    "404": {
                        "description": "Factura no encontrada"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/update-client-contract/{bdclient}": {
            "put": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Actualizar cliente y contrato por cédula y contrato",
                "description": "Busca el cliente por document_number (clients) y el contrato por contract_number (input: contract_numbert) validando la relación clients.id = contracts.client_id. Actualiza name/usuariowisphub/idservicio en clients, phone solo si se envía, y usuariowisphub/idservicio en contracts.",
                "operationId": "129d8bd47cc84cd1d2a4115c474e238c",
                "parameters": [
                    {
                        "name": "bdclient",
                        "in": "path",
                        "description": "Nombre de la conexión/base de datos (multi-tenant)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "document_number",
                                    "name",
                                    "usuariowisphub",
                                    "idservicio",
                                    "contract_numbert"
                                ],
                                "properties": {
                                    "document_number": {
                                        "type": "string",
                                        "example": "643140"
                                    },
                                    "cedula_anterior": {
                                        "type": "string",
                                        "example": "643140"
                                    },
                                    "name": {
                                        "type": "string",
                                        "example": "MANUEL ANTONIO PEREZ MENDEZ"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "example": "04241254981",
                                        "nullable": true
                                    },
                                    "usuariowisphub": {
                                        "type": "string",
                                        "example": "manuela@tv-daf-2013-ca"
                                    },
                                    "idservicio": {
                                        "type": "integer",
                                        "example": 2208
                                    },
                                    "contract_numbert": {
                                        "type": "string",
                                        "example": "A-000001"
                                    },
                                    "bdclient": {
                                        "type": "string",
                                        "example": "tvdaf2013_apppagodaf",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Actualización exitosa"
                    },
                    "404": {
                        "description": "Cliente o contrato no encontrado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/{contractNumber}/payment-history/{bdcliente}": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Historial de pagos por número de contrato",
                "operationId": "9eb01703e6f02446d1532fd2cc0b87ec",
                "parameters": [
                    {
                        "name": "contractNumber",
                        "in": "path",
                        "description": "Número de contrato",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "bdcliente",
                        "in": "path",
                        "description": "Nombre de la conexión/base de datos",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Historial de pagos del contrato"
                    },
                    "404": {
                        "description": "Contrato no encontrado"
                    }
                }
            }
        },
        "/contracts/{contract}/invoices/{bdcliente}": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Facturas del contrato",
                "operationId": "605b3e64e500f775c4a24afbef0082d5",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "bdcliente",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de facturas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/{contract}/payments": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Pagos del contrato",
                "operationId": "13f6f2b0fe0b3fd5468761e5c6dba9a8",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de pagos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/{contract}/suspend": {
            "post": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Suspender contrato",
                "operationId": "8a5ead97529cda6bfb62b76972a1763f",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contrato suspendido"
                    },
                    "409": {
                        "description": "Ya está suspendido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/contracts/{contract}/reactivate": {
            "post": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Reactivar contrato",
                "operationId": "a704b4f2e6b4df7130b30305dd7f86f3",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Contrato reactivado"
                    },
                    "409": {
                        "description": "Estado inválido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/paid-invoices/{bdclient}/{swpago}/pagos-realizados-movillisto": {
            "get": {
                "tags": [
                    "Contratos"
                ],
                "summary": "Listar clientes  contratos con facturas pagadas y swoficina=0",
                "operationId": "0b2f6c08a58609753d6d533974c9678c",
                "parameters": [
                    {
                        "name": "bdclientcont",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de contratos con facturas pagadas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Listar facturas",
                "operationId": "2918f8941342b3fb67e05747c84292d9",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "contract_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "pending",
                                "paid",
                                "overdue",
                                "cancelled"
                            ]
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado paginado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Crear factura",
                "operationId": "62ead27e7a908ee508c3f24b2319f43a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "contract_id",
                                    "amount",
                                    "due_date"
                                ],
                                "properties": {
                                    "contract_id": {
                                        "type": "integer"
                                    },
                                    "amount": {
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "description": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "due_date": {
                                        "type": "string",
                                        "format": "date"
                                    },
                                    "reference_number": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Factura creada"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/check": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Verificar existencia de factura y devolver ID",
                "operationId": "322ec7a4c1615a1026011bd4ed60f813",
                "parameters": [
                    {
                        "name": "invoice_number",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "ID de la factura o 0 si no existe"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/{invoice}": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Obtener factura",
                "operationId": "a517b1c0858b8c36d4813499c3d8053e",
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura obtenida"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Actualizar factura",
                "operationId": "a40e07f5b2e5800f3ae9730319040d51",
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {}
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Factura actualizada"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Eliminar factura",
                "operationId": "1a2cf0dde9ee2180fbdaf078b4329597",
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura eliminada"
                    },
                    "409": {
                        "description": "Ya pagada"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/{invoice}/mark-paid": {
            "post": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Marcar factura como pagada",
                "operationId": "7aa1595e8a0743aab5211742c3597ae2",
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura pagada"
                    },
                    "409": {
                        "description": "Ya pagada"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/{invoice}/mark-overdue": {
            "post": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Marcar factura como vencida",
                "operationId": "42bd2a6b9c2252e4dc2c731876777b95",
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Factura vencida"
                    },
                    "409": {
                        "description": "Estado inválido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/pending": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Facturas pendientes",
                "operationId": "d33e06a7a1a5be35a8913e2221bd39ac",
                "responses": {
                    "200": {
                        "description": "Listado de facturas pendientes"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/overdue": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Facturas vencidas",
                "operationId": "e7a2805076add829cf24d30f6b0b7b4b",
                "responses": {
                    "200": {
                        "description": "Listado de facturas vencidas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/paid": {
            "get": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Facturas pagadas",
                "operationId": "cb3be6aa6e5f0bda976a4f63441757ff",
                "responses": {
                    "200": {
                        "description": "Listado de facturas pagadas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/invoices/lotefacturas": {
            "post": {
                "tags": [
                    "Facturas"
                ],
                "summary": "Crear lote de facturas",
                "operationId": "597f3ca3d308061a129af7b9d9fc8ad8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "array",
                                "items": {
                                    "required": [
                                        "contract_id",
                                        "amount",
                                        "due_date"
                                    ],
                                    "properties": {
                                        "invoice_number": {
                                            "type": "string"
                                        },
                                        "contract_id": {
                                            "type": "integer"
                                        },
                                        "amount": {
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "pending_amount": {
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "balance_please": {
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "description": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "due_date": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "reference_number": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Facturas creadas"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments": {
            "get": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Listar pagos",
                "operationId": "65567ad73dd4b0cc01c4856a6bb7e600",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "client_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "contract_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "pending",
                                "processing",
                                "completed",
                                "failed",
                                "cancelled"
                            ]
                        }
                    },
                    {
                        "name": "payment_method",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "debit",
                                "transfer",
                                "cash",
                                "mobile_payment"
                            ]
                        }
                    },
                    {
                        "name": "date_from",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "date_to",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date-time"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado paginado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/{bdcliente}": {
            "post": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Crear pago",
                "operationId": "e516463dd6431af6bd63b2dbf7178853",
                "parameters": [
                    {
                        "name": "bdcliente",
                        "in": "path",
                        "description": "Nombre de la conexión de base de datos (mysql, mysql_second, mysql_third)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "mysql",
                                "mysql_second",
                                "mysql_third"
                            ]
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "client_id",
                                    "contract_id",
                                    "amount",
                                    "payment_method"
                                ],
                                "properties": {
                                    "client_id": {
                                        "type": "integer"
                                    },
                                    "contract_id": {
                                        "type": "integer"
                                    },
                                    "invoice_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "amount": {
                                        "type": "number",
                                        "format": "float"
                                    },
                                    "payment_method": {
                                        "type": "string",
                                        "enum": [
                                            "debit",
                                            "transfer",
                                            "cash",
                                            "mobile_payment"
                                        ]
                                    },
                                    "bank_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "reference_number": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "phone_number": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "document_type": {
                                        "type": "string",
                                        "enum": [
                                            "V",
                                            "E",
                                            "J",
                                            "P",
                                            "G"
                                        ],
                                        "nullable": true
                                    },
                                    "document_number": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "otp_code": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "notes": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Pago creado exitosamente"
                    },
                    "401": {
                        "description": "No autenticado - Token requerido"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/{payment}": {
            "get": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Obtener pago",
                "operationId": "fd86d79f3a702c33951602a3a041954c",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pago obtenido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Actualizar pago",
                "operationId": "5e6ce68c765bfba967264070023c3122",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {}
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Pago actualizado"
                    },
                    "422": {
                        "description": "Datos inválidos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Eliminar pago",
                "operationId": "10dde42bcf9365c33158aa3c769af513",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pago eliminado"
                    },
                    "409": {
                        "description": "Pago completado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/{payment}/process": {
            "post": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Procesar pago",
                "operationId": "9b1cd8a68d219d304f78335a2be52909",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pago procesado"
                    },
                    "409": {
                        "description": "Estado inválido"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/{payment}/cancel": {
            "post": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Cancelar pago",
                "operationId": "df65734621638b350727b4c4b3afcc6d",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pago cancelado"
                    },
                    "409": {
                        "description": "Pago completado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/{payment}/mark-failed": {
            "post": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Marcar pago como fallido",
                "operationId": "b0207c277a4ad5ac8a83afcc0764c17f",
                "parameters": [
                    {
                        "name": "payment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pago fallido"
                    },
                    "409": {
                        "description": "Pago completado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/by-status": {
            "get": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Pagos por estado",
                "operationId": "fd75ff56706146f1f4c75b3974e908a4",
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "pending",
                                "processing",
                                "completed",
                                "failed",
                                "cancelled"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Listado de pagos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/payments/statistics": {
            "get": {
                "tags": [
                    "Pagos"
                ],
                "summary": "Estadísticas de pagos",
                "operationId": "fda8c4e32416a1f6da24bbdbbde50470",
                "responses": {
                    "200": {
                        "description": "Estadísticas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/auth/menus": {
            "get": {
                "tags": [
                    "Menús"
                ],
                "summary": "Menús del usuario",
                "operationId": "e2b51d049d37e33bb3cfe131beab07a7",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/bcv-rates/current/{bdcliente}": {
            "get": {
                "tags": [
                    "Tasas BCV"
                ],
                "summary": "Tasa BCV actual",
                "operationId": "da5c6ef078f695231bf09d6e38305693",
                "parameters": [
                    {
                        "name": "bdcliente",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "404": {
                        "description": "Sin tasa"
                    }
                }
            }
        },
        "/api/bcv-rates/set-today": {
            "post": {
                "tags": [
                    "Tasas BCV"
                ],
                "summary": "Registrar tasa del día",
                "operationId": "7154ce370d1d89ed32d81fe49f96c4bc",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "rate": {
                                        "type": "number"
                                    },
                                    "rate_euro": {
                                        "type": "number"
                                    },
                                    "rate_usdt": {
                                        "type": "number"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/bcv-rates/history": {
            "get": {
                "tags": [
                    "Tasas BCV"
                ],
                "summary": "Historial de tasas",
                "operationId": "b362e542b6a6f26edd913295625bc71e",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/bcv-rates/by-date": {
            "get": {
                "tags": [
                    "Tasas BCV"
                ],
                "summary": "Tasa por fecha",
                "operationId": "a05c89cfc1473a1ed3608d5be6066d2e",
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/search": {
            "get": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Buscar cliente carga-pago",
                "operationId": "98677a8c80e51a673b9e22455bfe7bfc",
                "parameters": [
                    {
                        "name": "document_type",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "document_number",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "404": {
                        "description": "No encontrado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/inactivos": {
            "get": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Listar clientes inactivos",
                "operationId": "1c5599efe97ff51ce74d8c3b32517534",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/activos": {
            "get": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Listar clientes activos",
                "operationId": "ef7b0b248e330a80cf18f74a4da7ea83",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/verificar-inactividad": {
            "post": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Verificar inactividad por mora",
                "operationId": "f76348ac95e4c171128ead4756aa6e52",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/reserve-number": {
            "post": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Reservar número de contrato",
                "operationId": "545c46317a6cf4f23ebe0409fcd946d9",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "tiposervicio": {
                                        "type": "string",
                                        "enum": [
                                            "Sepultura",
                                            "Cremación"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/release-number": {
            "post": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Liberar número de contrato",
                "operationId": "e55ffdfad4d1e4f887db26de6e6f8434",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago": {
            "post": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Crear cliente con contrato/beneficiarios",
                "operationId": "c089137c4dccdc3afce83eb30a37df55",
                "responses": {
                    "201": {
                        "description": "Creado"
                    },
                    "422": {
                        "description": "Validación"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/{client}": {
            "put": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Actualizar cliente carga-pago",
                "operationId": "b428ee31b7b4892e72e7f261d678b73a",
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/clients/carga-pago/contracts/{contract}/pagos": {
            "get": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Catálogo y pagos del contrato",
                "operationId": "82a23046be33ac451de84147b0f20f58",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Clientes Carga Pago"
                ],
                "summary": "Registrar pago del contrato",
                "operationId": "a31453d0d4f589254fed2dd2803c1bf3",
                "parameters": [
                    {
                        "name": "contract",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/catalogs": {
            "get": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Catálogos admin",
                "operationId": "ed45e1d0e89445f3ce2390913b6e1bec",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/users": {
            "get": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Listar usuarios",
                "operationId": "674ba3b7ab890e71d94a2cde9c0c5692",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Crear usuario",
                "operationId": "20d9f33acee1c78c2cf42f01a3a4c043",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/users/{user}": {
            "put": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Actualizar usuario",
                "operationId": "fca148f17e8e1b7b8ccb4035fb729654",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Eliminar usuario",
                "operationId": "81013096ca114f8ccb1e3084d0913d96",
                "parameters": [
                    {
                        "name": "user",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/roles": {
            "get": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Listar roles",
                "operationId": "7bbbb942798b7e56ce596c0daf3bb1a5",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Crear rol",
                "operationId": "0c30595f5925b64dba082983ab4bd2fc",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/roles/{role}": {
            "put": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Actualizar rol",
                "operationId": "aa9c0301045e5a9519cd3bd488bb862d",
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Eliminar rol",
                "operationId": "4f0f175c752bafb05efaa54d3b9437fe",
                "parameters": [
                    {
                        "name": "role",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/menus": {
            "get": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Listar menús admin",
                "operationId": "97b4a6733a51563efd3865fbfd959caa",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/menus/{menu}": {
            "put": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Actualizar menú",
                "operationId": "49adf9ed2ba92f77bbabd5a80070bcba",
                "parameters": [
                    {
                        "name": "menu",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/permissions": {
            "get": {
                "tags": [
                    "Admin Usuarios"
                ],
                "summary": "Listar permisos",
                "operationId": "074cb00ab2ec6b9df43a50d040b7cb3f",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/bancos": {
            "get": {
                "tags": [
                    "Admin Bancos"
                ],
                "summary": "Listar bancos admin",
                "operationId": "0a04caeaf1aee3cf7751dae130329d79",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Bancos"
                ],
                "summary": "Crear banco",
                "operationId": "8198fd9d017e2358268f978735b0b79e",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/bancos/{banco}": {
            "put": {
                "tags": [
                    "Admin Bancos"
                ],
                "summary": "Actualizar banco",
                "operationId": "faf9fc09e928cca32e7f8ae81c278d45",
                "parameters": [
                    {
                        "name": "banco",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Bancos"
                ],
                "summary": "Eliminar banco",
                "operationId": "f9007ec9b965aabedb858f0c9a58a389",
                "parameters": [
                    {
                        "name": "banco",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/auditoria": {
            "get": {
                "tags": [
                    "Admin Auditoría"
                ],
                "summary": "Listar auditoría",
                "operationId": "7a845b9ecb0791494e5ea61ef8917edb",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/auditoria/{auditoria}": {
            "get": {
                "tags": [
                    "Admin Auditoría"
                ],
                "summary": "Detalle auditoría",
                "operationId": "068c99caa283857f501a1beef7a42d47",
                "parameters": [
                    {
                        "name": "auditoria",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/formas-pago": {
            "get": {
                "tags": [
                    "Admin Formas de Pago"
                ],
                "summary": "Listar formas de pago",
                "operationId": "6b54a46a0692580c2a0ea338fc13d177",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Formas de Pago"
                ],
                "summary": "Crear forma de pago",
                "operationId": "6d60925ef309ed8912ad9db992cf0573",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/formas-pago/{forma}": {
            "put": {
                "tags": [
                    "Admin Formas de Pago"
                ],
                "summary": "Actualizar forma de pago",
                "operationId": "b761ebf092bd9794c87e3ca4bd542c55",
                "parameters": [
                    {
                        "name": "forma",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Formas de Pago"
                ],
                "summary": "Eliminar forma de pago",
                "operationId": "bb7da94327f4d0b7cbda8e67b31c6683",
                "parameters": [
                    {
                        "name": "forma",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/paquetes": {
            "get": {
                "tags": [
                    "Admin Paquetes"
                ],
                "summary": "Listar paquetes",
                "operationId": "9a982458fcd0277ab0f0a66f296bd59b",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Paquetes"
                ],
                "summary": "Crear paquete",
                "operationId": "64670e786da272f3cb98c0a002003b27",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/paquetes/{paquete}": {
            "put": {
                "tags": [
                    "Admin Paquetes"
                ],
                "summary": "Actualizar paquete",
                "operationId": "3f0afadc4d00a31263fffb6641e44222",
                "parameters": [
                    {
                        "name": "paquete",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Paquetes"
                ],
                "summary": "Eliminar paquete",
                "operationId": "73d05c6073c2dfb3071e3bdfbacae740",
                "parameters": [
                    {
                        "name": "paquete",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/cobradores": {
            "get": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Listar cobradores",
                "operationId": "6094000e160f36885f03126aa9ed32b9",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Crear cobrador",
                "operationId": "6c0e1f703e56a38ee3dc316bf1b1064a",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/cobradores/clientes-disponibles": {
            "get": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Clientes disponibles para cobrador",
                "operationId": "ec9f5b517f0fcb528d7532475c875888",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/cobradores/{cobrador}": {
            "get": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Detalle cobrador",
                "operationId": "dc7e32f1baeada7f993d7d54263d3e3b",
                "parameters": [
                    {
                        "name": "cobrador",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Actualizar cobrador",
                "operationId": "85efd30c0f3df485fd148f379a8c8031",
                "parameters": [
                    {
                        "name": "cobrador",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Eliminar cobrador",
                "operationId": "71ec4259167d95d468875bc5edaec17d",
                "parameters": [
                    {
                        "name": "cobrador",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/cobradores/{cobrador}/clientes": {
            "post": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Asignar cliente a cobrador",
                "operationId": "379c75cb6bd89155fea507af929203c1",
                "parameters": [
                    {
                        "name": "cobrador",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/cobradores/{cobrador}/clientes/{cliente}": {
            "delete": {
                "tags": [
                    "Admin Cobradores"
                ],
                "summary": "Desasignar cliente de cobrador",
                "operationId": "5297cf5c5313eff9e9bcd0cc0c5c1291",
                "parameters": [
                    {
                        "name": "cobrador",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "cliente",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/reportes-cajas/catalogs": {
            "get": {
                "tags": [
                    "Reportes Cajas"
                ],
                "summary": "Catálogos reportes cajas",
                "operationId": "b768a78aa7558682b680c8c05598a4b5",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/reportes-cajas": {
            "get": {
                "tags": [
                    "Reportes Cajas"
                ],
                "summary": "Consultar reportes de cajas",
                "operationId": "17917e266da5cdb669100a7737d8f8f2",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ventas-puerta": {
            "get": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Listar ventas por puerta",
                "operationId": "cac48713f82b16d8472afd56e407b772",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Crear venta por puerta",
                "operationId": "b34bf14ac29de30e52c757a6aa0f0cc0",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ventas-puerta/{ventaPuerta}": {
            "get": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Detalle venta por puerta",
                "operationId": "fddf3029fa069fc56b7ec4bd6515c08a",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Actualizar venta por puerta",
                "operationId": "0307cf6d70b191b96d87d36b6fb617ca",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Eliminar venta por puerta",
                "operationId": "4dd6c76994503e7b8458e7e7460abfbd",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ventas-puerta/{ventaPuerta}/pagos": {
            "get": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Pagos de venta por puerta",
                "operationId": "bbe7356c8893c4d72425604f803ceae0",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Registrar pago venta por puerta",
                "operationId": "fbf72ace23edf8313ac04e626b758e15",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ventas-puerta/{ventaPuerta}/personal-servicios": {
            "get": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Personal de servicio",
                "operationId": "d8655b8923e1bf77aa400ec994420423",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Agregar personal de servicio",
                "operationId": "b086734020df13c58b8ee1332542a549",
                "parameters": [
                    {
                        "name": "ventaPuerta",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ventas-puerta/personal-servicios/{personalServicio}": {
            "put": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Actualizar personal de servicio",
                "operationId": "5389f59f0278a6689fedb5e334764881",
                "parameters": [
                    {
                        "name": "personalServicio",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Ventas Puerta"
                ],
                "summary": "Eliminar personal de servicio",
                "operationId": "305fb663bd14ca4ea6a8363f1f270e07",
                "parameters": [
                    {
                        "name": "personalServicio",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/causas-deceso": {
            "get": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Listar causas de deceso",
                "operationId": "a54f37074f6be4164b20fd364a469eab",
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Crear causa de deceso",
                "operationId": "b4b0239d6bf2247e4e1d31e23755cd23",
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "descripcion"
                                ],
                                "properties": {
                                    "descripcion": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Creado"
                    },
                    "422": {
                        "description": "Validación"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/causas-deceso/next-code": {
            "get": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Siguiente código causa deceso",
                "operationId": "93f56fae23aff1fc74314554cc2d0096",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/causas-deceso/stats": {
            "get": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Totales por causa (clients, beneficiarios, ventas_puerta)",
                "operationId": "bd161e9292e3afb58e6b820def8bf116",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/causas-deceso/{causaDeceso}": {
            "put": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Actualizar causa de deceso",
                "operationId": "2d372ad6777a5048f38080414eba39bc",
                "parameters": [
                    {
                        "name": "causaDeceso",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "descripcion"
                                ],
                                "properties": {
                                    "descripcion": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Causas de Deceso"
                ],
                "summary": "Eliminar causa de deceso",
                "operationId": "50116549ddef55bd9a86a17928f97271",
                "parameters": [
                    {
                        "name": "causaDeceso",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-productos": {
            "get": {
                "tags": [
                    "Inventario Productos"
                ],
                "summary": "Listar tipos de productos",
                "operationId": "eeb3176c18d118f471ba1f0e8aa5fd75",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Productos"
                ],
                "summary": "Crear tipo de producto",
                "operationId": "92b538d378a60e81c66bd36f438c2a9f",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-productos/next-code": {
            "get": {
                "tags": [
                    "Inventario Productos"
                ],
                "summary": "Siguiente código producto",
                "operationId": "853a0f1affe7225545dc0876c75323c0",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-productos/{tipoConsumible}": {
            "put": {
                "tags": [
                    "Inventario Productos"
                ],
                "summary": "Actualizar tipo de producto",
                "operationId": "6685bc06ce2f089bae35d950551b92f7",
                "parameters": [
                    {
                        "name": "tipoConsumible",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Productos"
                ],
                "summary": "Eliminar tipo de producto",
                "operationId": "f1b2affff518b072e0a0a0ad503a64e7",
                "parameters": [
                    {
                        "name": "tipoConsumible",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/proveedores": {
            "get": {
                "tags": [
                    "Inventario Proveedores"
                ],
                "summary": "Listar proveedores",
                "operationId": "787fda81b167d9d3f8d619bcab017f13",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Proveedores"
                ],
                "summary": "Crear proveedor",
                "operationId": "2ece47dbbdf524f8433ad742a4aa6dce",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/proveedores/next-code": {
            "get": {
                "tags": [
                    "Inventario Proveedores"
                ],
                "summary": "Siguiente código proveedor",
                "operationId": "e66cad409bd4dfb4107df2dacb989e32",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/proveedores/{proveedor}": {
            "put": {
                "tags": [
                    "Inventario Proveedores"
                ],
                "summary": "Actualizar proveedor",
                "operationId": "210157cafa2505ad7232462aa471df96",
                "parameters": [
                    {
                        "name": "proveedor",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Proveedores"
                ],
                "summary": "Eliminar proveedor",
                "operationId": "c7ddaf41173ed6dcc58cb9457311595b",
                "parameters": [
                    {
                        "name": "proveedor",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-unidades": {
            "get": {
                "tags": [
                    "Inventario Unidades"
                ],
                "summary": "Listar tipos de unidad",
                "operationId": "8e460b3518449c9f09343dfb62fbcbee",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Unidades"
                ],
                "summary": "Crear tipo de unidad",
                "operationId": "b0d0015415f71b769bac6aa17f91cba1",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-unidades/next-code": {
            "get": {
                "tags": [
                    "Inventario Unidades"
                ],
                "summary": "Siguiente código unidad",
                "operationId": "dbcd48ddbfd3837af31a4cae3675a153",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/tipo-unidades/{tipoUnidad}": {
            "put": {
                "tags": [
                    "Inventario Unidades"
                ],
                "summary": "Actualizar tipo de unidad",
                "operationId": "c5b2571abac08d17d273c916d28a5a02",
                "parameters": [
                    {
                        "name": "tipoUnidad",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Unidades"
                ],
                "summary": "Eliminar tipo de unidad",
                "operationId": "c6b353f2c7c6a911fa9fe1b79ce230cf",
                "parameters": [
                    {
                        "name": "tipoUnidad",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ubicaciones": {
            "get": {
                "tags": [
                    "Inventario Ubicaciones"
                ],
                "summary": "Listar ubicaciones",
                "operationId": "5e4b38544eb6e5ec7ab4bdf61e2a2de0",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Ubicaciones"
                ],
                "summary": "Crear ubicación",
                "operationId": "19c4bea53db9df8cc18870c36547b828",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/ubicaciones/{ubicacion}": {
            "put": {
                "tags": [
                    "Inventario Ubicaciones"
                ],
                "summary": "Actualizar ubicación",
                "operationId": "d41f7a9c0619f66635ba3313037b41c4",
                "parameters": [
                    {
                        "name": "ubicacion",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Ubicaciones"
                ],
                "summary": "Eliminar ubicación",
                "operationId": "d63f8064d7049486a313c0a286f6eb3f",
                "parameters": [
                    {
                        "name": "ubicacion",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/almacenes": {
            "get": {
                "tags": [
                    "Inventario Almacenes"
                ],
                "summary": "Listar almacenes",
                "operationId": "933603ac3681285a1a316fd7fe7ef07f",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Almacenes"
                ],
                "summary": "Crear almacén",
                "operationId": "a4429d3c4da1fa2ad108dc3e7a9e2e17",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/almacenes/next-code": {
            "get": {
                "tags": [
                    "Inventario Almacenes"
                ],
                "summary": "Siguiente código almacén",
                "operationId": "0b40813f6b1f8c56f0e1d04374800564",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/almacenes/{almacen}": {
            "put": {
                "tags": [
                    "Inventario Almacenes"
                ],
                "summary": "Actualizar almacén",
                "operationId": "d774af11ab7110814463b3d09121b6d8",
                "parameters": [
                    {
                        "name": "almacen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Almacenes"
                ],
                "summary": "Eliminar almacén",
                "operationId": "0be4471eb69f5eb066fca7e71dc30601",
                "parameters": [
                    {
                        "name": "almacen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Listar movimientos / kardex",
                "operationId": "7406ab28e90a7b1447572314a4562fd1",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Registrar movimiento de material",
                "operationId": "87d7f6f908685bcac7557115688c6ecb",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/materiales-vencidos": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Materiales vencidos",
                "operationId": "1ae25f6535ea78e42cb9b69324f22885",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/materiales-desincorporados": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Materiales desincorporados",
                "operationId": "70fdce60fe6023ca40e011a52c3c4db2",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/materiales-entrada-desincorporar": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Entradas para desincorporar",
                "operationId": "adaedad3c03efe7caccd7b54b6bd22c7",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/devoluciones-proveedor": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Devoluciones a proveedor",
                "operationId": "59e6be072ec29173e2689f078a5fc60f",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/materiales-vencidos/desincorporar-todos": {
            "post": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Desincorporar todos los vencidos",
                "operationId": "de88d62525bff2d27d327521a74deac7",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/materiales-vencidos/{ubicacionId}/desincorporar": {
            "post": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Desincorporar material vencido",
                "operationId": "aca34be3daf43cb093a4294eb073534f",
                "parameters": [
                    {
                        "name": "ubicacionId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/ubicaciones/{ubicacionId}/desincorporar": {
            "post": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Desincorporar material por ubicación",
                "operationId": "48e842560d9833d64086b4426f0ea628",
                "parameters": [
                    {
                        "name": "ubicacionId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/next-nota-entrega": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Siguiente nota de entrega",
                "operationId": "5be55e43b019ba5f2cd9c37587827258",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/material/{codConsumible}": {
            "get": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Info de material",
                "operationId": "89a8fd8af2da3e19aea14b94fc400990",
                "parameters": [
                    {
                        "name": "codConsumible",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/movimientos-material/material/{codConsumible}/inventario": {
            "put": {
                "tags": [
                    "Inventario Movimientos"
                ],
                "summary": "Actualizar inventario de material",
                "operationId": "547dbd58ccd333dfd68830aac9c192c7",
                "parameters": [
                    {
                        "name": "codConsumible",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/personas-deposito": {
            "get": {
                "tags": [
                    "Inventario Personas Depósito"
                ],
                "summary": "Listar personas depósito",
                "operationId": "bdc74c62753b8d695f1418ded5c84085",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Personas Depósito"
                ],
                "summary": "Crear persona depósito",
                "operationId": "a0e3fb90cbfb1374ffb36c93e5387e53",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/personas-deposito/cargos": {
            "get": {
                "tags": [
                    "Inventario Personas Depósito"
                ],
                "summary": "Cargos de personas depósito",
                "operationId": "eef834c7bdaf788c8813eedcb2df3857",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/personas-deposito/{personaDeposito}": {
            "put": {
                "tags": [
                    "Inventario Personas Depósito"
                ],
                "summary": "Actualizar persona depósito",
                "operationId": "31b97577c52350347919eb0c383f0d14",
                "parameters": [
                    {
                        "name": "personaDeposito",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Personas Depósito"
                ],
                "summary": "Eliminar persona depósito",
                "operationId": "8c83004b3d81b6d0d5ec3dce2cde124f",
                "parameters": [
                    {
                        "name": "personaDeposito",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/clientes-inventario": {
            "get": {
                "tags": [
                    "Inventario Clientes"
                ],
                "summary": "Listar clientes inventario",
                "operationId": "734b5928c366f092d2fd37e246f12cab",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Clientes"
                ],
                "summary": "Crear cliente inventario",
                "operationId": "0c12ca2185e241f1856f004f267f7feb",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/clientes-inventario/next-code": {
            "get": {
                "tags": [
                    "Inventario Clientes"
                ],
                "summary": "Siguiente código cliente inventario",
                "operationId": "1f2a2a9c619d983b05a3998ee2bf4c46",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/clientes-inventario/{clienteInventario}": {
            "put": {
                "tags": [
                    "Inventario Clientes"
                ],
                "summary": "Actualizar cliente inventario",
                "operationId": "c262363d0583c82ccb73810a564d85b2",
                "parameters": [
                    {
                        "name": "clienteInventario",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Inventario Clientes"
                ],
                "summary": "Eliminar cliente inventario",
                "operationId": "bea8f8bf68e946eba4beca87d057b8e4",
                "parameters": [
                    {
                        "name": "clienteInventario",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos": {
            "get": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Listar solicitudes de productos",
                "operationId": "afb231906d508f217f6402b3523d0656",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Crear solicitud",
                "operationId": "e5660c1ef5399a6282ce64cc777cbb6d",
                "responses": {
                    "201": {
                        "description": "Creado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/next-code": {
            "get": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Siguiente código solicitud",
                "operationId": "87b7f03229ede48f913c65df89a16573",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/catalogos": {
            "get": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Catálogos solicitud",
                "operationId": "35fd5abc9c2a54fafcd179f0efd61f60",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/material/{codConsumible}/stock": {
            "get": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Stock de material",
                "operationId": "07485c9160ad90c4d323e97170684e89",
                "parameters": [
                    {
                        "name": "codConsumible",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/{codSolicitud}": {
            "get": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Detalle solicitud",
                "operationId": "474d966c3fcff9afbe0966fbbc132e3c",
                "parameters": [
                    {
                        "name": "codSolicitud",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Actualizar solicitud",
                "operationId": "574eed3083d332e2af9205a6b9467d64",
                "parameters": [
                    {
                        "name": "codSolicitud",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/{codSolicitud}/anular": {
            "post": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Anular solicitud",
                "operationId": "bcea99cbf28f612457b075a2d346d543",
                "parameters": [
                    {
                        "name": "codSolicitud",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/admin/solicitud-productos/{codSolicitud}/entregar": {
            "post": {
                "tags": [
                    "Inventario Solicitudes"
                ],
                "summary": "Entregar / despachar solicitud",
                "operationId": "96f0a03eb0cbbf0c50c9c0ea4fcf8149",
                "parameters": [
                    {
                        "name": "codSolicitud",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        }
    },
    "tags": [
        {
            "name": "Menús",
            "description": "Menús del usuario autenticado"
        },
        {
            "name": "Tasas BCV",
            "description": "Tasas BCV / Euro / USDT"
        },
        {
            "name": "Clientes Carga Pago",
            "description": "Carga de clientes, beneficiarios y pagos"
        },
        {
            "name": "Admin Usuarios",
            "description": "Usuarios, roles, menús y permisos"
        },
        {
            "name": "Admin Bancos",
            "description": "Administración de bancos"
        },
        {
            "name": "Admin Auditoría",
            "description": "Consulta de auditoría"
        },
        {
            "name": "Admin Formas de Pago",
            "description": "Formas de pago"
        },
        {
            "name": "Admin Paquetes",
            "description": "Paquetes de servicio"
        },
        {
            "name": "Admin Cobradores",
            "description": "Cobradores y asignación de clientes"
        },
        {
            "name": "Reportes Cajas",
            "description": "Reportes de cajas"
        },
        {
            "name": "Ventas Puerta",
            "description": "Ventas por puerta, pagos y personal"
        },
        {
            "name": "Causas de Deceso",
            "description": "Catálogo y estadísticas de causas de deceso"
        },
        {
            "name": "Inventario Productos",
            "description": "Tipos de productos / consumibles"
        },
        {
            "name": "Inventario Proveedores",
            "description": "Proveedores"
        },
        {
            "name": "Inventario Unidades",
            "description": "Tipos de unidad de medida"
        },
        {
            "name": "Inventario Ubicaciones",
            "description": "Ubicaciones / estantes"
        },
        {
            "name": "Inventario Almacenes",
            "description": "Almacenes"
        },
        {
            "name": "Inventario Movimientos",
            "description": "Kardex / movimientos de material"
        },
        {
            "name": "Inventario Personas Depósito",
            "description": "Personas de depósito"
        },
        {
            "name": "Inventario Clientes",
            "description": "Clientes de inventario"
        },
        {
            "name": "Inventario Solicitudes",
            "description": "Solicitud de productos"
        },
        {
            "name": "Autenticación",
            "description": "Autenticación"
        },
        {
            "name": "Bancos",
            "description": "Bancos"
        },
        {
            "name": "Clientes",
            "description": "Clientes"
        },
        {
            "name": "Contratos",
            "description": "Contratos"
        },
        {
            "name": "Facturas",
            "description": "Facturas"
        },
        {
            "name": "Pagos",
            "description": "Pagos"
        }
    ]
}