# Proyecto Go para consumo de SOAP APIs

## Estructura del proyecto

```
soap-api-client/
├── cmd/
│   └── api/
│       └── main.go
├── configs/
│   └── config.yaml
├── internal/
│   ├── api/
│   │   ├── handler.go
│   │   └── router.go
│   ├── config/
│   │   └── config.go
│   ├── database/
│   │   ├── postgres.go
│   │   └── models.go
│   ├── soap/
│   │   ├── client.go
│   │   ├── api1/
│   │   │   ├── client.go
│   │   │   ├── models.go
│   │   │   └── transformers.go
│   │   └── api2/
│   │       ├── client.go
│   │       ├── models.go
│   │       └── transformers.go
│   └── logger/
│       └── logger.go
├── pkg/
│   ├── errors/
│   │   └── errors.go
│   ├── soap/
│   │   └── soap.go
│   └── utils/
│       └── utils.go
├── go.mod
└── go.sum
```

## Inicialización del proyecto

```bash
mkdir -p soap-api-client/cmd/api
mkdir -p soap-api-client/configs
mkdir -p soap-api-client/internal/api
mkdir -p soap-api-client/internal/configs
mkdir -p soap-api-client/internal/database
mkdir -p soap-api-client/internal/soap/api1
mkdir -p soap-api-client/internal/soap/api2
mkdir -p soap-api-client/internal/logger
mkdir -p soap-api-client/pkg/errors
mkdir -p soap-api-client/pkg/soap
mkdir -p soap-api-client/pkg/utils
cd soap-api-client
go mod init github.com/yourusername/soap-api-client
```


## Comandos para la ejecución

```bash
# Iniciar la aplicación
go run cmd/api/main.go

# Construir la aplicación
go build -o soap-api-client cmd/api/main.go

# Ejecutar la aplicación construida
./soap-api-client
```

## Comandos para la ejecución

```bash
# Iniciar la aplicación
go run cmd/api/main.go

# Construir la aplicación
go build -o soap-api-client cmd/api/main.go

# Ejecutar la aplicación construida
./soap-api-client
```

## Ejemplos de uso

### Ejemplo de solicitud GetData a API1

```bash
curl -X POST http://localhost:9999/api/v1/api1/get-data \
  -H "Content-Type: application/json" \
  -d '{
    "id": "12345",
    "type": "CUSTOMER",
    "date": "2023-12-01"
  }'
```

### Ejemplo de solicitud de transacción a API2

```bash
curl -X POST http://localhost:9999/api/v1/api2/process-transaction \
  -H "Content-Type: application/json" \
  -d '{
    "transactionId": "TX789012",
    "accountId": "ACC123",
    "amount": 100.50,
    "currency": "USD",
    "description": "Pago de servicio"
  }'
```

### Ejemplo de obtención de parámetros

```bash
curl -X GET http://localhost:9999/api/v1/parameters
```

### Ejemplo de actualización de parámetro

```bash
curl -X PUT http://localhost:9999/api/v1/parameters/soap.api1.endpoint \
  -H "Content-Type: application/json" \
  -d '{
    "value": "https://new-api1.example.com/soap",
    "description": "Nuevo endpoint para API 1",
    "active": true
  }'
```