# Ejemplos cURL

Comandos listos para copiar y pegar. Asume servidor en `http://localhost:8000`.

---

## 1. Crear un cliente de prueba

```bash
curl -X POST http://localhost:8000/api/v1/admin/clients \
  -H "Content-Type: application/json" \
  -H "X-Admin-Secret: dev-admin-secret-cambiar-en-produccion" \
  -d '{
    "name": "Mi Empresa SA",
    "email": "admin@miempresa.com",
    "rate_limit_per_min": 100,
    "scopes": ["convert"]
  }'
```

**Respuesta:**
```json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "name": "Mi Empresa SA",
  "email": "admin@miempresa.com",
  "rate_limit_per_min": 100,
  "scopes": "[\"convert\"]",
  "active": true,
  "created_at": "2024-01-15T10:00:00",
  "api_key": "sk_live_abc123..."
}
```

> Guarda el `api_key` — no se vuelve a mostrar.

---

## 2. Obtener un JWT

```bash
curl -X POST http://localhost:8000/api/v1/auth/token \
  -H "Content-Type: application/json" \
  -d '{"api_key": "sk_live_TU_API_KEY_AQUI"}'
```

**Respuesta:**
```json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer",
  "expires_in": 900,
  "client_id": "uuid-del-cliente"
}
```

---

## 3. Convertir un mensaje MT940

```bash
curl -X POST http://localhost:8000/api/v1/convert \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TU_JWT_AQUI" \
  -d '{
    "message": ":20:STMT20240115001\n:25:ES9121000418450200051332\n:28C:00001/001\n:60F:C240101EUR50000,00\n:61:2401150115CR1500,00NTRFREF001//BANKREF001\n:86:Transferencia recibida de ACME Corp\n:62F:C240115EUR51500,00",
    "format": "MT940",
    "options": {
      "validate_output": false
    }
  }'
```

**Respuesta** (XML camt.053):
```xml
<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02">
  <BkToCstmrStmt>
    <GrpHdr>
      <MsgId>MSG...</MsgId>
      <CreDtTm>2024-01-15T10:05:00</CreDtTm>
    </GrpHdr>
    ...
  </BkToCstmrStmt>
</Document>
```

### Con archivo MT940

```bash
# Guardar el mensaje en un archivo y convertirlo
MT940_MSG=$(cat tests/fixtures/sample.mt940 | python3 -c "import sys, json; print(json.dumps(sys.stdin.read()))")

curl -X POST http://localhost:8000/api/v1/convert \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TU_JWT_AQUI" \
  -d "{\"message\": $MT940_MSG, \"format\": \"MT940\", \"options\": {\"validate_output\": false}}"
```

---

## 4. Listar clientes

```bash
curl http://localhost:8000/api/v1/admin/clients \
  -H "X-Admin-Secret: dev-admin-secret-cambiar-en-produccion"
```

---

## 5. Ver logs de un cliente

```bash
# Reemplazar CLIENT_ID con el UUID del cliente
curl "http://localhost:8000/api/v1/admin/clients/CLIENT_ID/logs?page=1&limit=20" \
  -H "X-Admin-Secret: dev-admin-secret-cambiar-en-produccion"
```

---

## 6. Verificar salud del servicio

```bash
curl http://localhost:8000/api/v1/health
```

---

## 7. Eliminar un cliente (soft delete)

```bash
curl -X DELETE http://localhost:8000/api/v1/admin/clients/CLIENT_ID \
  -H "X-Admin-Secret: dev-admin-secret-cambiar-en-produccion"
```

---

## Script de Prueba Completo

```bash
#!/bin/bash
# Flujo completo: crear cliente → obtener token → convertir

BASE="http://localhost:8000/api/v1"
ADMIN_SECRET="dev-admin-secret-cambiar-en-produccion"

# 1. Crear cliente
echo "=== Creando cliente ==="
RESPONSE=$(curl -s -X POST $BASE/admin/clients \
  -H "Content-Type: application/json" \
  -H "X-Admin-Secret: $ADMIN_SECRET" \
  -d '{"name":"Test","email":"test@example.com"}')

API_KEY=$(echo $RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['api_key'])")
echo "API Key: $API_KEY"

# 2. Obtener JWT
echo "=== Obteniendo JWT ==="
TOKEN_RESPONSE=$(curl -s -X POST $BASE/auth/token \
  -H "Content-Type: application/json" \
  -d "{\"api_key\": \"$API_KEY\"}")

JWT=$(echo $TOKEN_RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")
echo "JWT obtenido (primeros 20 chars): ${JWT:0:20}..."

# 3. Convertir
echo "=== Convirtiendo MT940 ==="
curl -s -X POST $BASE/convert \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $JWT" \
  -d '{
    "message": ":20:STMT001\n:25:ES9121000418450200051332\n:28C:00001/001\n:60F:C240101EUR10000,00\n:61:2401150115CR500,00NTRFTEST001//BANK001\n:86:Test transfer\n:62F:C240115EUR10500,00",
    "format": "MT940",
    "options": {"validate_output": false}
  }' | head -20
```
