# Contratos API — Integraciones ADX y endpoints internos

## 1. POST `/consumo-sips` — `sips.consumo`

### Request version2 (target)

| Campo | Tipo | Requerido | Notas |
|-------|------|-----------|-------|
| `cod_com` | int | Sí* | *Opcional en develop durante transición; resolver fallback |
| `cups` | string | Sí | max 255 |
| `tipo` | string | Sí | Depende del proveedor |

**Tipos por proveedor:**

| Proveedor | `tipo` UI | Mapeo API |
|-----------|-----------|-----------|
| audax | `luz`, `gas` | identidad |
| adx | `Electricity`, `Gas` | identidad |

### Response AUDAX (200)

```json
{
  "tipoCups": 1,
  "selectFinal": [],
  "lecturas": {
    "cups": "ES...",
    "tipo": "luz",
    "tipo_solicitado": "luz",
    "LastTotalYearkWh": 12345.67,
    "registros_procesados": 12,
    "registros_omitidos": 0
  }
}
```

### Response ADX (200)

```json
{
  "provider": "adx",
  "cod_com": 456,
  "tipoCups": 1,
  "tipo": "Electricity",
  "cups": "ES...",
  "distributor_table": "...",
  "suministros": [{}],
  "selectFinal": [],
  "lecturas": {
    "cups": "...",
    "tipo": "luz",
    "tipo_api": "Electricity",
    "LastTotalYearkWh": 0
  },
  "sin_datos": false
}
```

### Errores

| HTTP | Condición |
|------|-----------|
| 422 | Sin integración SIPS / tipo inválido |
| 500 | Config ADX incompleta |
| 501 | Proveedor no implementado |

---

## 2. POST `/integracion/tarifas` — `tarifas.integracion`

### Request

```json
{
  "servicio": "adx",
  "gama": "CL",
  "tipo_contrato": "1",
  "tipo_tarifas": "luz",
  "filtro": "2.0TD",
  "subtarifa": "T0"
}
```

**Mapeos backend ADX:**

| Request | API externo |
|---------|-------------|
| `gama` CL/CO | Classic / Corporate |
| `tipo_contrato` 1/2 | FixedRate / IndexedRate |
| `tipo_tarifas` luz/gas | Electricity / Gas |

### Response ADX éxito

```json
{
  "success": true,
  "provider": "adx",
  "message": "Solicitud procesada correctamente",
  "status": 200,
  "data": [
    {
      "provider": "adx",
      "nombre": "AUP-00002974",
      "productCode": "E_INDCL",
      "version": "V2623",
      "ventanaInicio": "2026-01-01",
      "ventanaFin": "2026-12-31",
      "PrecioP1": 0.1234,
      "PrecioE1": 0.0567,
      "TarifaCUPS": "AUP-00002974",
      "FechaInicioPoliza": "2026-01-01",
      "FechaFinalPoliza": "2026-12-31",
      "nombretarifa": "AUP-00002974"
    }
  ]
}
```

---

## 3. API externa MuleSoft — MostrarTarifas

| Aspecto | Valor |
|---------|-------|
| URL | `config('services.adx.mostrarTarifas')` |
| Método | POST |
| Timeout | 60s |
| Content-Type | application/json |

**Body:**

```json
{
  "suministro": "Electricity",
  "gama": "Classic",
  "tipo_contrato": "FixedRate",
  "tarifa": "2.0TD",
  "subtarifa": "T0"
}
```

**Headers (modo default `headers`):**

| Header | Origen |
|--------|--------|
| `x-correlation-id` | env o UUID |
| `source` | `SALESFORCE` |
| `country` | `ES` |
| `client_id` | env |
| `client_secret` | env |

---

## 4. API externa MuleSoft — SIPS consumo

| Aspecto | Valor |
|---------|-------|
| URL | `config('services.adx.sips_consumo_url')` |
| Método | POST |

**Body:**

```json
{
  "CUPS": "ES0021...",
  "tipo": "Electricity"
}
```

Mismos headers auth que tarifas.

---

## 5. POST OK Comercial — `v1.contracts.okCommercialContract`

**Body ampliado:**

```json
{
  "propuesta_id": 123,
  "comercial": "Juan Pérez",
  "canal": "WEB"
}
```

**Payload externo job:**

```json
{
  "authToken": "...",
  "comercial": "...",
  "canal": "...",
  "id_luz": "...",
  "id_gas": "..."
}
```

---

## 6. POST documentación — `v1.contracts.documentContract`

```json
{
  "documents": [],
  "comercial": "...",
  "canal": "..."
}
```

Validación: ambos campos required, max 50.

---

## 7. POST tramitación — `integracion.contratar`

**TipProCom 1/2:**

```json
{
  "propuesta_id": 123,
  "tipoPropuesta": 1,
  "servicio": "audax",
  "comercial": "0",
  "canal": "TELEFONO",
  "CodConCli": 456
}
```

**Body externo (fragmento representante Tip 1/2):**

```json
{
  "representante_contacto": "Nombre Apellido",
  "nif_representante_contacto": "12345678A"
}
```

---

## 8. GET PDF condiciones particulares

`anexo-producto.generate-contratos-particulares/{id}?comercial=...&canal=...&CodConCli=...`

Query params:
- `comercial` — prioridad sobre número acreditado en PDF
- `canal` — canal comercial
- `CodConCli` — representante legal (Tip 1/2)

---

## 9. GET `/sips` — props Inertia

```typescript
interface SipsIndexProps {
  comercializadoras: ComercializadoraSips[];
  sipsProvidersByCodCom: Record<string, SipsProviderMeta>;
}
```

Cada comercializadora incluye `sips_provider` con `tipo_servicio_options` y `api_tipo_map`.
