diff --git a/Gu%C3%ADa-para-generar-y-consumir-el-WSDL-del-servicio.md b/Gu%C3%ADa-para-generar-y-consumir-el-WSDL-del-servicio.md
new file mode 100644
index 0000000..9de6560
--- /dev/null
+++ b/Gu%C3%ADa-para-generar-y-consumir-el-WSDL-del-servicio.md
@@ -0,0 +1,305 @@
+# Guía para generar y consumir el WSDL del servicio
+
+Este documento describe cómo acceder al WSDL del servicio de simulación de documentos digitalizados y cómo consumirlo desde diferentes plataformas.
+
+## ¿Qué es WSDL?
+
+WSDL (Web Services Description Language) es un formato XML que describe la funcionalidad ofrecida por un servicio web SOAP. Permite a los clientes entender automáticamente cómo interactuar con el servicio.
+
+## Acceso al WSDL
+
+Una vez que el servicio está en ejecución, el WSDL está disponible en las siguientes URLs:
+
+- Para el endpoint con DataContractSerializer:
+ ```
+ http://localhost:5050/WsServicioDeInformacion.svc?wsdl
+ ```
+
+- Para el endpoint con XmlSerializer:
+ ```
+ http://localhost:5050/WsServicioDeInformacion.asmx?wsdl
+ ```
+
+En un entorno de producción, la URL sería similar a la siguiente:
+```
+https://dnic.mz.uy/WsServicioDeInformacion.asmx?wsdl
+```
+
+## Consumo del servicio SOAP
+
+Existen múltiples formas de consumir un servicio SOAP, dependiendo de la plataforma y el lenguaje de programación.
+
+### Usando SoapUI (herramienta de pruebas)
+
+1. Descarga e instala [SoapUI](https://www.soapui.org/)
+2. Crea un nuevo proyecto SOAP
+3. En la URL del WSDL, introduce la URL del servicio (ej. `http://localhost:5050/WsServicioDeInformacion.asmx?wsdl`)
+4. SoapUI generará automáticamente las solicitudes de ejemplo para cada operación
+
+### Usando Postman
+
+1. Abre Postman y crea una nueva solicitud
+2. Establece el método a POST
+3. Introduce la URL del servicio (ej. `http://localhost:5050/WsServicioDeInformacion.asmx`)
+4. En Headers, agrega `Content-Type: text/xml`
+5. En el cuerpo, coloca tu solicitud SOAP
+
+### Ejemplos de solicitud y respuesta
+
+#### Ejemplo de solicitud SOAP
+
+```xml
+
+
+
+
+ 49746161
+ DO
+ ABC123456
+ 123456
+ ServiPuntos
+ Clave123
+
+
+
+
+```
+
+#### Ejemplo de respuesta SOAP (éxito)
+
+```xml
+
+
+
+
+
+ DO
+ 49746161
+ Jimena
+ Marta
+ Moreira
+ Morales
+ 2
+ 1963-10-28
+ 2
+ Jimena Marta Moreira Morales
+ 88726
+ 77134
+
+
+
+ No Implementado...
+ 254
+ 1
+
+
+ No Implementado...
+ 282
+ 2
+
+
+
+
+
+
+```
+
+#### Ejemplo de respuesta SOAP (error)
+
+```xml
+
+
+
+
+
+
+ 1001
+ Persona inexistente en la base de datos
+ Trace
+
+
+
+
+
+
+```
+
+## Consumo del servicio desde diferentes lenguajes
+
+### C#
+
+```csharp
+// Agregar referencia al servicio:
+// dotnet add package System.ServiceModel.Http
+// dotnet add package System.ServiceModel.Primitives
+
+using System;
+using System.ServiceModel;
+using System.Threading.Tasks;
+
+// Generar cliente del servicio usando:
+// dotnet tool install --global dotnet-svcutil
+// dotnet-svcutil http://localhost:5050/WsServicioDeInformacion.asmx?wsdl
+
+class Program
+{
+ static async Task Main()
+ {
+ // Crear el cliente
+ var binding = new BasicHttpBinding();
+ var endpoint = new EndpointAddress("http://localhost:5050/WsServicioDeInformacion.asmx");
+ var client = new WsServicioDeInformacionClient(binding, endpoint);
+
+ // Crear parámetros
+ var param = new ParamObtDocDigitalizado
+ {
+ NroDocumento = "49746161",
+ TipoDocumento = "DO",
+ NroSerie = "ABC123456",
+ Organismo = "ServiPuntos",
+ ClaveAcceso1 = "Clave123"
+ };
+
+ // Llamar al servicio
+ var result = await client.ObtDocDigitalizadoAsync(param);
+
+ // Procesar resultado
+ if (result.Errores != null && result.Errores.Length > 0)
+ {
+ Console.WriteLine($"Error: {result.Errores[0].Descripcion}");
+ }
+ else
+ {
+ Console.WriteLine($"Nombre: {result.Persona.Nombre1} {result.Persona.PrimerApellido}");
+ }
+ }
+}
+```
+
+### Java
+
+```java
+// Usar JAX-WS o wsimport para generar clases cliente
+// wsimport -keep -p uy.gub.dnic http://localhost:5050/WsServicioDeInformacion.asmx?wsdl
+
+import uy.gub.dnic.*;
+
+public class Main {
+ public static void main(String[] args) {
+ try {
+ // Crear el servicio y el puerto
+ WsServicioDeInformacion service = new WsServicioDeInformacion();
+ IWsServicioDeInformacion port = service.getBasicHttpBindingIWsServicioDeInformacion();
+
+ // Crear parámetros
+ ParamObtDocDigitalizado param = new ParamObtDocDigitalizado();
+ param.setNroDocumento("49746161");
+ param.setTipoDocumento("DO");
+ param.setNroSerie("ABC123456");
+ param.setOrganismo("ServiPuntos");
+ param.setClaveAcceso1("Clave123");
+
+ // Llamar al servicio
+ ResultObtDocDigitalizado result = port.obtDocDigitalizado(param);
+
+ // Procesar resultado
+ if (result.getErrores() != null && !result.getErrores().getMensaje().isEmpty()) {
+ System.out.println("Error: " + result.getErrores().getMensaje().get(0).getDescripcion());
+ } else {
+ System.out.println("Nombre: " + result.getPersona().getNombre1() + " " +
+ result.getPersona().getPrimerApellido());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Python (con zeep)
+
+```python
+from zeep import Client
+
+# Crear cliente SOAP
+client = Client('http://localhost:5050/WsServicioDeInformacion.asmx?wsdl')
+
+# Preparar parámetros
+param = {
+ 'NroDocumento': '49746161',
+ 'TipoDocumento': 'DO',
+ 'NroSerie': 'ABC123456',
+ 'Organismo': 'ServiPuntos',
+ 'ClaveAcceso1': 'Clave123'
+}
+
+# Llamar al servicio
+result = client.service.ObtDocDigitalizado(param)
+
+# Procesar resultado
+if hasattr(result, 'Errores') and result.Errores:
+ print(f"Error: {result.Errores[0].Descripcion}")
+else:
+ print(f"Nombre: {result.Persona.Nombre1} {result.Persona.PrimerApellido}")
+```
+
+### JavaScript/TypeScript (con node-soap)
+
+```javascript
+const soap = require('soap');
+const url = 'http://localhost:5050/WsServicioDeInformacion.asmx?wsdl';
+
+// Crear cliente SOAP
+soap.createClient(url, function(err, client) {
+ if (err) {
+ console.error(err);
+ return;
+ }
+
+ // Preparar parámetros
+ const param = {
+ NroDocumento: '49746161',
+ TipoDocumento: 'DO',
+ NroSerie: 'ABC123456',
+ Organismo: 'ServiPuntos',
+ ClaveAcceso1: 'Clave123'
+ };
+
+ // Llamar al servicio
+ client.ObtDocDigitalizado({ param }, function(err, result) {
+ if (err) {
+ console.error(err);
+ return;
+ }
+
+ const response = result.ObtDocDigitalizadoResult;
+
+ // Procesar resultado
+ if (response.Errores) {
+ console.log(`Error: ${response.Errores.Mensaje.Descripcion}`);
+ } else {
+ console.log(`Nombre: ${response.Persona.Nombre1} ${response.Persona.PrimerApellido}`);
+ }
+ });
+});
+```
+
+## Manipular el CI para obtener diferentes resultados
+
+Como se explicó en el README principal, los primeros dígitos de la cédula determinan el comportamiento del servicio:
+
+| Primeros dos dígitos | Resultado |
+|----------------------|-----------|
+| 11 | Error - Persona inexistente |
+| 12 | Error - Límite de consultas excedido |
+| 13 | Error - Número de cédula anulado |
+| 14 | Advertencia - Datos de persona a regularizar |
+| 15 | Advertencia - Documento hurtado o extraviado |
+
+Además, los últimos dos dígitos determinan la edad de la persona. Por ejemplo:
+
+- CI terminada en "18": Persona de 18 años
+- CI terminada en "25": Persona de 25 años
+- CI terminada en "65": Persona de 65 años
+
+Para probar diferentes escenarios, simplemente modifique el número de cédula en la solicitud SOAP.Welcome to the Wiki.
\ No newline at end of file