Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/sdurutr436/stay-sidekick/llms.txt

Use this file to discover all available pages before exploring further.

The Late Check-in Notifications module pulls today’s expected arrivals from your PMS or from a manually uploaded XLSX file, filters the list against your company’s configured cutoff time, and surfaces only the guests who need to be proactively contacted. Instead of scanning a full arrivals list every morning and mentally filtering for late arrivals, your reception team sees only the actionable guests — together with a ready-to-send message built from your pre-approved templates in the Communications Vault.

How it works

1

Check the status dashboard

Call the status endpoint to see the current PMS connection state, today’s full check-in list (or an indication that no PMS is connected), and the cutoff hour your company has configured.
curl http://localhost/api/notificaciones/checkin-tardio/status \
  -H "Authorization: Bearer $TOKEN"
You can optionally pass a fecha query parameter (YYYY-MM-DD) to inspect a date other than today:
curl "http://localhost/api/notificaciones/checkin-tardio/status?fecha=2025-07-15" \
  -H "Authorization: Bearer $TOKEN"
Response (200):
{
  "ok": true,
  "pms_conectado": true,
  "hora_corte": "20:00",
  "checkins_hoy": [
    {
      "apartamento": "Apartamento Sol 3B",
      "hora_llegada": "22:30",
      "tardio": true
    },
    {
      "apartamento": "Apartamento Mar A1",
      "hora_llegada": "18:00",
      "tardio": false
    }
  ]
}
When pms_conectado is false, the checkins_hoy array will be empty — use the XLSX upload flow described in the next step instead.
2

Upload an XLSX file (fallback)

If no PMS integration is configured, upload a spreadsheet exported from your PMS. The API parses it, applies the cutoff time filter, and returns only the late check-ins. Nothing is stored.
curl -X POST http://localhost/api/notificaciones/checkin-tardio/checkins \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@llegadas_hoy.xlsx"
Response (200):
{
  "ok": true,
  "checkins": [
    {
      "apartamento": "Apartamento Sol 3B",
      "hora_llegada": "22:30",
      "tardio": true
    }
  ],
  "warnings": [
    "Fila 5: hora de llegada no reconocida, se omitió."
  ]
}
Only rows where the arrival time is later than the company’s hora_corte are included in the response. Rows with missing or unparseable times are reported as warnings.This endpoint is rate-limited to 20 requests per hour.
Guest data from the XLSX file is processed entirely in memory and is never written to the database. This is consistent with Stay Sidekick’s GDPR-first approach — the platform is a satellite tool, not a data warehouse.
3

Compose and send the notification

Pick a template from your company’s vault (category CHECKIN_TARDIO) and use it as the base for the notification message. Templates can include dynamic placeholders such as {NOMBRE}, {APARTAMENTO}, {HORA_LLEGADA}, and {PROTOCOLO_CHECKIN}.See Managing notification templates below for how to create and manage templates for this module.

Managing notification templates

Templates for late check-in notifications live in the Communications Vault under the CHECKIN_TARDIO category. You can manage them directly through the notifications module endpoints — any template created here also appears in the full Vault. List templates:
curl http://localhost/api/notificaciones/checkin-tardio/plantillas \
  -H "Authorization: Bearer $TOKEN"
{
  "ok": true,
  "plantillas": [
    {
      "id": "d4e5f6...",
      "nombre": "Llegada tardía — instrucciones caja fuerte",
      "contenido": "Hola {NOMBRE}, te confirmamos que tu apartamento {APARTAMENTO} está listo. Como llegas pasadas las {HORA_LLEGADA}, aquí tienes las instrucciones de acceso: {PROTOCOLO_CHECKIN}"
    }
  ]
}
Create a new template:
curl -X POST http://localhost/api/notificaciones/checkin-tardio/plantillas \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Llegada tardía — instrucciones caja fuerte",
    "contenido": "Hola {NOMBRE}, tu apartamento {APARTAMENTO} está listo. Instrucciones de acceso: {PROTOCOLO_CHECKIN}"
  }'
Both nombre and contenido are required. The template is automatically assigned the CHECKIN_TARDIO category and the es language. Update an existing template:
curl -X PUT http://localhost/api/notificaciones/checkin-tardio/plantillas/<id> \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Llegada tardía — instrucciones caja fuerte (v2)",
    "contenido": "Hola {NOMBRE}, bienvenido/a. Tu apartamento {APARTAMENTO} te espera. {PROTOCOLO_CHECKIN}"
  }'
Delete a template:
curl -X DELETE http://localhost/api/notificaciones/checkin-tardio/plantillas/<id> \
  -H "Authorization: Bearer $TOKEN"
Use the Communications Vault AI assistant to improve or translate your templates. Templates created here are visible and editable from the full Vault interface under the CHECKIN_TARDIO category filter.

Cutoff time configuration

The cutoff hour defines when an arrival is considered “late.” It is stored per company and applies to both the PMS-based status check and the XLSX upload parser. Read the current cutoff configuration:
curl http://localhost/api/perfil/notificaciones-tardio-config \
  -H "Authorization: Bearer $TOKEN"
{
  "ok": true,
  "config": {
    "hora_corte": "20:00"
  }
}
Update the cutoff time (admin only):
curl -X PUT http://localhost/api/perfil/notificaciones-tardio-config \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "hora_corte": "21:00"
  }'
The time is stored in HH:MM 24-hour format. Any arrival with a scheduled check-in time strictly after this hour is flagged as a late check-in.
Only company administrators can modify the cutoff time. Regular users can read the configuration and see the late check-ins list, but cannot change the threshold.

Build docs developers (and LLMs) love