Esta sección describe los pasos necesarios para descargar, instalar y vincular **WillyPOS** en tu equipo local (Windows, Linux o macOS). Por favor, sigue estas instrucciones minuciosamente para asegurar una conexión segura con tu infraestructura de datos.

## Requisitos Previos

Antes de comenzar el proceso, asegúrate de cumplir con el siguiente requisito:

* **Plan Activo:** Es estrictamente necesario contar con un plan contratado y vigente con **WillyLabs**. Si aún no dispones de un plan o necesitas verificar su estado, ponte en contacto con nuestro equipo comercial.

## Paso 1: Descarga del Software

La plataforma de WillyPOS se distribuye de manera centralizada a través de nuestra red de entrega de contenido.

1. Abre tu navegador web e ingresa a la siguiente dirección de descarga:
<a href="https://cdn.willylabs.cl/willypos/downloads" target="_blank">`https://cdn.willylabs.cl/willypos/downloads`</a>
    * *Para Windows:* https://cdn.willylabs.cl/pos/downloads/windows/latest
    * *Para Linux:* https://cdn.willylabs.cl/pos/downloads/linux/latest
    * *Para macOS:* https://cdn.willylabs.cl/pos/downloads/macos/latest
2. El sistema te solicitará autenticación. Ingresa el **nombre de usuario y contraseña de tu cuenta root (raíz)** provistos al momento de la contratación de tu plan.
3. Selecciona y descarga la versión correspondiente al sistema operativo de tu terminal de cobro (Windows, Linux o macOS).

**Flujo de la descarga de WillyPOS**

```mermaid
flowchart LR
    %% Definición de Estilos (Colores y bordes)
    classDef cdn fill:#0984e3,stroke:#74b9ff,stroke-width:2px,color:#fff
    classDef dashboard fill:#6c5ce7,stroke:#a29bfe,stroke-width:2px,color:#fff
    classDef security fill:#d63031,stroke:#ff7675,stroke-width:2px,color:#fff
    classDef local fill:#00b894,stroke:#55efc4,stroke-width:2px,color:#fff
    classDef warning fill:#fdcb6e,stroke:#e17055,stroke-width:2px,color:#2d3436
    classDef note fill:#ffeaa7,stroke:#fdcb6e,stroke-width:1px,color:#2d3436,stroke-dasharray: 5 5

        Nav1([Navegador Web]) -->|Ingresa URL| URL_CDN[CDN de WillyLabs https://cdn.willylabs.cl]:::cdn
        URL_CDN --> SelectOS[Seleccionar Sistema Operativo]
        SelectOS --> Win[Windows] & Lin[Linux] & Mac[macOS]
        Win & Lin & Mac --> DownloadPOS[Descargar Instalador de WillyPOS]
        DownloadPOS --> Instalar[Instalación]
```

## Paso 2: Generación de Credenciales de Acceso

Por motivos de seguridad y soberanía de datos, las claves de comunicación no vienen preconfiguradas en el instalador. Debes generar tu propio par de claves criptográficas desde la consola de administración.

> **📝 NOTA:**  
WillyPOS es un software diseñado exclusivamente para efectuar ventas en el local comercial y opera 100% sincronizado con la nube de WillyLabs. En WillyPOS no se configuran productos, catálogos, precios ni accesos de usuarios; toda la gestión se realiza directamente en **WillyDashboard** a través de sus servicios dedicados: **GCP** (Gestor de Catálogos de Productos) para la administración de inventario y categorías; **IAM** (Identity and Access Management) para el control de accesos de cajeros o administradores; y **STS** (Security Token Service) para la autenticación y conexión segura del terminal con la nube.

1. Ingresa al panel de administración central en:
<a href="https://dashboard.willylabs.cl" target="_blank">`https://dashboard.willylabs.cl`</a>
2. Inicia sesión con tus credenciales autorizadas.
3. Dirígete a la sección **IAM** (Identity and Access Management), entra a gestión de terminales/accesos y selecciona **Crear nuevo punto de acceso**.
4. Dele un nombre y una descripción, seleccione el local comercial en el cuál estará operativo WillyPOS y haga clic en **Registrar**.
4. El sistema procesará la solicitud y compilará un archivo con extensión `.yaml`  
> **NOTA:**  
Para su conveniencia puede seleccionar otro tipo de formato para el archivo de configuración, puede elegir entre `yaml`, `json` y `xml`.

>! ⚠️ **IMPORTANTE:**  
Por razones estrictas de seguridad y encriptación, este archivo `.yaml` estará disponible para su descarga **una única vez**. Asegúrate de descargarlo inmediatamente y guardarlo en un lugar seguro. Si lo pierdes antes de la instalación, deberás revocar el acceso y generar un nuevo par de claves.
  

> ⚠️ **IMPORTANTE:**  
Debe tener cuidado con las modificaciones que realice al archivo de configuración. Si cambia cualquier datos de sus credenciales la sincronización fallará y WillyPOS dejará de funcionar. Por otro lado, existen etiquetas que vienen en el archivo para conveniencia de ejecución de WillyLabs. Si los cambia, no surtirán efectos reales, por ejemplo, si cambia el parámetro sync_interval, y lo establece en un valor menor al que tiene, WillyPOS intentará comunicarse con la nube para sinonizacion cada ese tiempo, sin embargo, la nube de WillyLabs rechazará dichas solicitudes por realizar antes del tiempo definido. Además, es posible que nuestros sistemas automáticos de seguridad WillyLabs IAM SecurityInspector podría bloquear su IP por un tiempo definido largo, si esto sucede, su WillyPOS no podrá comunicarse con nuestra nube durante todo ese tiempo, sin poder registrar ventas u otras operaciones.

Para información detallada sobre la creación de credenciales de seguridad STS, revisa [Cómo crear llaves de seguridad STS](https://docs.willylabs.cl) en la Guía del Usuario de IAM.

```mermaid

flowchart TD
    %% Definición de Estilos (Colores y bordes)
    classDef cdn fill:#0984e3,stroke:#74b9ff,stroke-width:2px,color:#fff
    classDef dashboard fill:#6c5ce7,stroke:#a29bfe,stroke-width:2px,color:#fff
    classDef security fill:#d63031,stroke:#ff7675,stroke-width:2px,color:#fff
    classDef local fill:#00b894,stroke:#55efc4,stroke-width:2px,color:#fff
    classDef warning fill:#fdcb6e,stroke:#e17055,stroke-width:2px,color:#2d3436
    classDef note fill:#ffeaa7,stroke:#fdcb6e,stroke-width:1px,color:#2d3436,stroke-dasharray: 5 5
        Nav2([Navegador Web]) -->|Ingresa URL| URL_Dash[WillyDashboard https://www.willydashboard.cl]:::dashboard
        URL_Dash --> LoginDash[Iniciar Sesión con Credenciales Autorizadas]
        
        NotaNube>📝 NOTA: Gestión centralizada. <br>WillyPOS no configura catálogos locales. <br>Todo depende de GCP, IAM y STS.]:::note
        LoginDash -.-> NotaNube
        
        LoginDash --> | Credenciales inválidas | URL_Dash
        
        LoginDash --> |Autenticación correcta| NavIAM[Ir a sección IAM - Control de Accesos]
        NavIAM --> AccessTerm[Gestión de Terminales/Accesos]
        AccessTerm --> CreateAP[Clic en 'Crear nuevo punto de acceso']
        
        CreateAP --> InputData[Asignar: Nombre, Descripción y Local Comercial]
        InputData --> Register[Registrar Solicitud]
        
        Register --> CompileYAML[WillyLabs STS procesa y compila claves criptográficas]:::security
        CompileYAML --> DownloadYAML[Descarga Automática del archivo .yaml]
        
        WarnYAML>⚠️ IMPORTANTE: Descarga única por seguridad. <br>Si se pierde, revocar y generar nuevas claves.]:::warning
        DownloadYAML -.-> WarnYAML
```

## Paso 3: Configuración e Inicialización

Para que el software local pueda comunicarse de forma legítima con los servicios centrales, es necesario enlazar el archivo de credenciales generado.

1. Una vez finalizada la instalación de WillyPOS en tu equipo, localiza la **carpeta de configuración** de la aplicación (la ruta exacta dependerá de las directrices de tu sistema operativo).
2. Copia el archivo `.yaml` descargado en el Paso 2 directamente dentro de dicha carpeta de configuración.

```mermaid

flowchart LR
    %% Definición de Estilos (Colores y bordes)
    classDef cdn fill:#0984e3,stroke:#74b9ff,stroke-width:2px,color:#fff
    classDef dashboard fill:#6c5ce7,stroke:#a29bfe,stroke-width:2px,color:#fff
    classDef security fill:#d63031,stroke:#ff7675,stroke-width:2px,color:#fff
    classDef local fill:#00b894,stroke:#55efc4,stroke-width:2px,color:#fff
    classDef warning fill:#fdcb6e,stroke:#e17055,stroke-width:2px,color:#2d3436
    classDef note fill:#ffeaa7,stroke:#fdcb6e,stroke-width:1px,color:#2d3436,stroke-dasharray: 5 5
DownloadPOS --> InstallPOS[Finalizar Instalación en Equipo Local]
        InstallPOS --> FindConfig[Localizar Carpeta de Configuración de WillyPOS]
        
        Paso2 --> MoveYAML[Copiar archivo .yaml a la Carpeta de Configuración]
        FindConfig --> MoveYAML
        
        MoveYAML --> RunPOS[Inicializar WillyPOS]
        
        RunPOS --> HandshakeSTS{Autenticación STS / Enlace Seguro}:::security
        
        HandshakeSTS -- .yaml no encontrado / Inválido --> ErrorAuth[Bloqueo: Terminal No Autorizado]
        HandshakeSTS -- Validación Exitosa --> SyncGCP[Conexión a GCP: Sincronización de Catálogos e Inventario]:::dashboard
        
        SyncGCP --> POSReady([WillyPOS Operativo y Enlazado a la Nube]):::local
```

### ¿Por qué es necesario este archivo?

Este archivo contiene los parámetros necesarios para que la aplicación WillyPOS pueda **firmar correctamente cada llamada a la API**. Gracias a este mecanismo de firma digital, el terminal local establece un canal de comunicación blindado para conectarse de manera nativa con tu nube privada en **WillyHUB Data360**, permitiendo la descarga inmediata de productos, categorías, precios y la sincronización transparente de tus ventas.

**Archivo .yaml de configuración:**. 
El archivo de configuración tendrá un aspecto similar a este:

```yaml
credentials:
  - account_id: wl-25-willy # ID de cuenta de su cuenta WillyLabs
  - access_key: abdefg...     # El ID único se de la llave para su WillyPOS
  - secret_key: Azb1zz...    # Secreto de la llave de su WillyPOS. Esta clave no debe compartirla con nadie nunca.
config:
   - sync_interval: 10m
```
```json
{
    "credentials": {
        "account_id": "wl-25-willy",
        "access_key": "abdefg...",
        "secret_key": "Azb1zz..."
    },
    "config": {
         "sync_interval": "10m"
     }
}
```
```xml
<xml>
    <credentials>
        <account_id>wl-25-willy</account_id>
        <access_key>wabdefg...</access_key>
        <secret_key>Azb1zz...</secret_key>
    </credentials>
    <config>
        <sync_interval>10m</sync_interval>
     </config>
</xml>
```

### Recomendación de seguridad para el archivo de configuración
Le recomendamos no usar el archivo de configuración descrgado, en su lugar copie las credenciales como variables de entorno en su dispositivo si sabe cómo o tiene los conocimientos adecuados para hacerlo. En el caso de no contar con dichos conocimientos, es preferible que no lo haga.

```bash
# Windows PowerShell
$env:account_id= "wl-25-willy"

# macOS y Linux
export account_id="wl-25-willy"
```
```python
# El SDK de WillyLabs le ofrece una manera sencilla y efectiva de guradar variables de entorno
import willylabs.helpers as helpers

try:
     helpers.addVenv(key="account_id", value="wl-25-willy")
     print("Guardado")
except WillyLabsCloudExceptions as e:
     print( f"Algo salió mal: {e}" )
```