# ARCA ONE - Documentación Técnica de API Gastronomía

El módulo **ARCA ONE Gastronomía** expone una API REST modular y multi-tenant diseñada para alimentar tanto aplicaciones de cliente final (Menú Digital QR, Delivery Web, KDS de Cocina, POS de Mozo) como la administración centralizada desde el panel ARCA.

---

## 1. Arquitectura y Convenciones

- **Base URL:** `https://arca360.sytes.net/api/gastro.php` (o dominio de producción)
- **Formato de Comunicación:** JSON (`Content-Type: application/json; charset=utf-8`)
- **Autenticación:**
  - **Endpoints Públicos/Demo:** No requieren sesión. Segmentados por parámetro `tenant` (código del restaurante, por defecto `demo_restaurant`).
  - **Endpoints de Administración:** Requieren sesión activa de administrador ARCA (`$_SESSION['admin_logged_in'] === true`).

---

## 2. Endpoints Públicos & Demo

### 2.1 Obtener Identidad y Branding de Gastronomía
Retorna la identidad visual configurada para el producto Gastronomía, garantizando la prioridad del logo claro (para fondos claros) seguido del logo oscuro (para fondos oscuros).

- **Método:** `GET` o `POST`
- **Parámetros:**
  - `action`: `get_branding`
- **Ejemplo de Respuesta:**
```json
{
  "success": true,
  "branding": {
    "product_name": "ARCA ONE Gastronomía",
    "product_tagline": "El Sistema Operativo Definitivo para Restaurantes y Bares",
    "logo_light": "/assets/uploads/321_1787851850.svg",
    "logo_dark": "/assets/uploads/231_1787851846.svg",
    "isotype_light": "/assets/uploads/56_1787851862.svg",
    "isotype_dark": "/assets/uploads/456_1787851857.svg",
    "contact_whatsapp": "+54 9 11 4000-3600",
    "contact_email": "gastronomia@arca360.com",
    "primary_color": "#E11D48",
    "accent_color": "#F59E0B"
  }
}
```

---

### 2.2 Obtener Menú Digital y Carta
Permite cargar las categorías, productos, precios, alérgenos y fotos de un restaurante específico.

- **Método:** `GET`
- **Parámetros:**
  - `action`: `get_public_menu`
  - `tenant`: (Opcional) Código identificador del restaurante. Por defecto: `demo_restaurant`.
- **Ejemplo de Respuesta:**
```json
{
  "success": true,
  "tenant": {
    "id": 1,
    "name": "ARCA Bistro & Trattoria",
    "currency": "ARS",
    "logo_light": "/assets/uploads/321_1787851850.svg",
    "logo_dark": "/assets/uploads/231_1787851846.svg"
  },
  "menu": [
    {
      "id": 1,
      "name": "Pizzas Artesanales",
      "slug": "pizzas",
      "description": "Masa madre de 48hs...",
      "products": [
        {
          "id": 1,
          "name": "Pizza Margherita Di Bufala",
          "price": "8500.00",
          "image_url": "https://...",
          "allergens": ["Lácteos", "Gluten"]
        }
      ]
    }
  ]
}
```

---

### 2.3 Datos Interactivos de la Demo (POS & Salón)
Entrega el estado de mesas en vivo, pedidos en cocina y estadísticas para alimentar la experiencia interactiva en `/gastronomia`.

- **Método:** `GET`
- **Parámetros:**
  - `action`: `get_public_demo_data`
- **Ejemplo de Respuesta:**
```json
{
  "success": true,
  "stats": {
    "active_tables": 3,
    "free_tables": 4,
    "total_tables": 7,
    "active_orders_count": 1,
    "today_sales": 384500.00,
    "average_ticket": 24800.00,
    "avg_prep_time_min": 14
  },
  "tables": [...],
  "orders": [...]
}
```

---

### 2.4 Enviar Solicitud de Demostración (Lead Capture)
Registra un nuevo cliente interesado en contratar ARCA ONE Gastronomía.

- **Método:** `POST`
- **Headers:** `Content-Type: application/json`
- **Payload:**
```json
{
  "action": "submit_demo_request",
  "full_name": "Martín Rodríguez",
  "email": "martin@restaurante.com",
  "phone": "+54 9 11 5555-1234",
  "restaurant_name": "Fuegos & Brasas",
  "business_type": "Restaurante",
  "branches_count": "2",
  "city": "Buenos Aires",
  "notes": "Necesitamos migrar de un sistema antiguo que no tiene KDS."
}
```
- **Respuesta:**
```json
{
  "success": true,
  "request_id": 12,
  "message": "¡Excelente! Hemos recibido tu solicitud..."
}
```

---

## 3. Endpoints de Administración ARCA

Todos los siguientes endpoints requieren cookie de sesión con `$_SESSION['admin_logged_in'] = true`.

### 3.1 Listado de Clientes Gastronómicos (Tenants)
- **Acción:** `get_tenants`
- **Retorno:** Lista de restaurantes registrados, plan, estado y cantidad de módulos activos.

### 3.2 Crear Nuevo Restaurante
- **Acción:** `create_tenant`
- **Payload:**
```json
{
  "name": "Parrilla Don Julio",
  "code": "don_julio",
  "email": "admin@donjulio.com",
  "phone": "+54 11 4775-1441",
  "plan": "enterprise",
  "currency": "ARS"
}
```

### 3.3 Módulos de un Cliente
- **Acción:** `get_tenant_modules`
- **Parámetro:** `tenant_id`
- **Retorno:** Los 16 módulos con flag booleano `is_enabled` indicando si está activo para ese cliente.

### 3.4 Activar / Desactivar Módulo
- **Acción:** `toggle_tenant_module`
- **Payload:**
```json
{
  "tenant_id": 1,
  "module_code": "kds",
  "is_enabled": 1
}
```

### 3.5 Gestión de Solicitudes de Demo
- **Acción:** `get_demo_requests` (opcional `status` filter)
- **Acción:** `update_demo_request_status` (actualiza estado a `contacted`, `converted`, etc.)

### 3.6 Configuración de Marca y Logos
- **Acción:** `get_gastro_settings` / `save_gastro_settings`
- Permite actualizar los logos (light/dark), WhatsApp de ventas y correo de soporte desde el panel ARCA.

---

## 4. Códigos de Respuesta HTTP
- `200 OK`: Operación exitosa.
- `400 Bad Request`: Faltan campos requeridos o datos mal formateados.
- `403 Forbidden`: Intento de acceder a funciones administrativas sin sesión válida.
- `500 Internal Server Error`: Fallo no controlado, registrado en `api/error.txt`.
