Files
Axia4/public_html/aulatek/api/README.comedor.md
Naiel a8936e55a2 Add organization management functionality and logo image
- Implemented organization creation, editing, and activity management in orgs.php.
- Added safe path segment function to sanitize input.
- Included file upload handling for activity photos.
- Created a new logo image for the application.
2026-03-07 12:30:08 +00:00

5.5 KiB

API del Comedor

Esta API permite acceder y gestionar los datos de menús del comedor de forma programática mediante JSON.

Autenticación

La API utiliza el mismo sistema de autenticación que el resto de la aplicación. Todas las solicitudes deben estar autenticadas a través de la sesión PHP.

Permisos

  • Lectura (GET): Requiere permiso entreaulas:docente
  • Escritura (POST): Requiere permisos sysadmin:access (además de entreaulas:docente)

Endpoints

1. Obtener tipos de menú

GET /aulatek/api/comedor.php?action=get_menu_types&aulario={aulario_id}

Devuelve todos los tipos de menú disponibles para un aulario.

Parámetros:

  • aulario (requerido): ID del aulario

Ejemplo de respuesta:

{
  "success": true,
  "menu_types": [
    {
      "id": "basal",
      "label": "Menú basal",
      "color": "#0d6efd"
    },
    {
      "id": "vegetariano",
      "label": "Menú vegetariano",
      "color": "#198754"
    },
    {
      "id": "alergias",
      "label": "Menú alergias",
      "color": "#dc3545"
    }
  ]
}

2. Obtener menú de un día

GET /entreauals/api/comedor.php?action=get_menu&aulario={aulario_id}&date={date}&menu={menu_type_id}

Obtiene el menú de un día específico y tipo de menú.

Parámetros:

  • aulario (requerido): ID del aulario
  • date (opcional): Fecha en formato YYYY-MM-DD (por defecto: hoy)
  • menu (opcional): ID del tipo de menú (por defecto: primer tipo disponible)

Ejemplo de respuesta:

{
  "success": true,
  "date": "2026-02-18",
  "menu_type": "basal",
  "menu_types": [/* lista de tipos de menú */],
  "menu": {
    "plates": {
      "primero": {
        "name": "Lentejas",
        "pictogram": ""
      },
      "segundo": {
        "name": "Pollo asado",
        "pictogram": "basal_segundo_pict.jpg"
      },
      "postre": {
        "name": "Manzana",
        "pictogram": ""
      }
    }
  }
}

3. Guardar menú

POST /aulatek/api/comedor.php?action=save_menu&aulario={aulario_id}

Guarda o actualiza un menú para un día específico.

Parámetros (JSON):

{
  "date": "2026-02-18",
  "menu_type": "basal",
  "plates": {
    "primero": {
      "name": "Lentejas"
    },
    "segundo": {
      "name": "Pollo asado"
    },
    "postre": {
      "name": "Manzana"
    }
  }
}

Ejemplo de uso con curl:

curl -X POST "http://localhost/aulatek/api/comedor.php?action=save_menu&aulario=aulario_id" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-02-18",
    "menu_type": "basal",
    "plates": {
      "primero": {"name": "Sopa"},
      "segundo": {"name": "Pescado"},
      "postre": {"name": "Yogur"}
    }
  }'

4. Añadir nuevo tipo de menú

POST /aulatek/api/comedor.php?action=add_menu_type&aulario={aulario_id}

Crea un nuevo tipo de menú.

Parámetros (JSON):

{
  "id": "celiaco",
  "label": "Menú celíaco",
  "color": "#ff9800"
}

Ejemplo de uso con curl:

curl -X POST "http://localhost/aulatek/api/comedor.php?action=add_menu_type&aulario=aulario_id" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "celiaco",
    "label": "Menú celíaco",
    "color": "#ff9800"
  }'

5. Renombrar tipo de menú

POST /aulatek/api/comedor.php?action=rename_menu_type&aulario={aulario_id}

Cambia el nombre o color de un tipo de menú existente.

Parámetros (JSON):

{
  "id": "basal",
  "label": "Menú estándar",
  "color": "#0d6efd"
}

6. Eliminar tipo de menú

POST /aulatek/api/comedor.php?action=delete_menu_type&aulario={aulario_id}

Elimina un tipo de menú.

Parámetros (JSON o form-data):

{
  "id": "celiaco"
}

Códigos de error

Código Descripción
FORBIDDEN (403) Sin permisos suficientes
INVALID_SESSION (400) Centro no encontrado en la sesión
MISSING_PARAM (400) Parámetro requerido no proporcionado
INVALID_FORMAT (400) Formato inválido (ej: fecha)
INVALID_MENU_TYPE (400) Tipo de menú inválido
DUPLICATE (400) El tipo de menú ya existe
NOT_FOUND (404) Recurso no encontrado
INVALID_ACTION (400) Acción no reconocida

Ejemplos en JavaScript

Obtener menú actual

async function obtenerMenu(aularioId) {
  const response = await fetch(
    `/aulatek/api/comedor.php?action=get_menu&aulario=${aularioId}`
  );
  const data = await response.json();
  return data.menu;
}

Guardar menú

async function guardarMenu(aularioId, fecha, tipoMenu, platos) {
  const response = await fetch(
    `/aulatek/api/comedor.php?action=save_menu&aulario=${aularioId}`,
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        date: fecha,
        menu_type: tipoMenu,
        plates: platos
      })
    }
  );
  return await response.json();
}

Obtener tipos de menú

async function obtenerTiposMenu(aularioId) {
  const response = await fetch(
    `/aulatek/api/comedor.php?action=get_menu_types&aulario=${aularioId}`
  );
  const data = await response.json();
  return data.menu_types;
}

Notas

  • La API devuelve JSON con charset UTF-8
  • Las fechas se usan en formato YYYY-MM-DD
  • Los colores se especifican en formato hexadecimal (ej: #0d6efd)
  • Las imágenes de pictogramas no se pueden subir directamente a través de la API JSON
  • Para compartir datos de comedor entre aularios, usar la configuración de shared_comedor_from en el archivo del aulario