# API — Devolución a Proveedores Backend en **NestJS 12** (ESM) de la aplicación Devolución a Proveedores para SAP Business One. No tiene base de datos propia: habla con el **Service Layer** de SAP B1 en nombre del usuario que inició sesión, y guarda cada ejecución en el UDO `LIB_ODEV`. La documentación general del proyecto (decisiones, flujo, estado) está en [`../../CLAUDE.md`](../../CLAUDE.md). Este archivo cubre solo cómo ejecutar y mantener la API. ## Requisitos - Node 22 LTS o superior. - Acceso de red al Service Layer de SAP B1 (por defecto `https://servidor:50000/b1s/v1`). - Red con Fortinet (inspección SSL): exportar `NODE_OPTIONS=--use-system-ca` (o `NODE_EXTRA_CA_CERTS`) antes de usar `npm`. ## Puesta en marcha Desde la raíz del monorepo (`devolucion-proveedores-web/`): ```bash npm install cp apps/api/.env.example apps/api/.env # y completar los valores npm run dev:api # compila @dp/shared y levanta la API en :3000 ``` ### Variables de `.env` | Variable | Descripción | |---|---| | `PORT` | Puerto de la API (3000). | | `WEB_ORIGIN` | Origen del frontend para CORS. En desarrollo `ng serve` usa proxy y no hace falta. | | `SL_URL` | URL del Service Layer, **con `/b1s/v1` al final**. | | `SL_COMPANY_DB` | Base de la sociedad (CompanyDB del Login). | | `SL_REJECT_UNAUTHORIZED` | `false` si el Service Layer usa un certificado autofirmado. | | `DB_TYPE` | `HANA` (producción) o `MSSQL` (pruebas). Elige la variante de cada consulta SQL. | | `COOKIE_SECURE` | `true` solo cuando la API se publica por HTTPS. | | `HTTPS_PFX_PATH` / `HTTPS_PFX_PASSPHRASE` | Solo producción: certificado `.pfx` y su clave. La API escucha por HTTPS. | | `HTTPS_KEY_PATH` / `HTTPS_CERT_PATH` | Alternativa al `.pfx`: clave privada y certificado en PEM (no mezclar con el `.pfx`). | | `HTTP_REDIRECT_PORT` | Con HTTPS: puerto HTTP que redirige (301) al HTTPS, normalmente 80. | | `WEB_DIST_DIR` | Carpeta con la web compilada. Por defecto `apps/web/dist/web/browser` si existe. | El **usuario y la contraseña de SAP no se configuran aquí**: se escriben en la pantalla de login y se usan para el `Login` del Service Layer. La API reinicia sin conservar sesiones. ## Scripts Se ejecutan con `npm run