{
    "openapi": "3.0.0",
    "info": {
        "title": "API EcofemPeru Asistencia",
        "description": "Backend API para la app movil de asistencia del consultorio ginecologico EcofemPeru. Expone usuario, asignacion_recurrente y registro_asistencia mediante endpoints REST autenticados con JWT.",
        "contact": {
            "email": "support@ecofemperu.com"
        },
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "http://localhost:8000"
        }
    ],
    "paths": {
        "/api/usuarios/{usuario}/asignaciones": {
            "get": {
                "tags": [
                    "Asignaciones"
                ],
                "summary": "Listar asignaciones (activas e historicas) de un trabajador",
                "operationId": "b71b7d2e7a27de52ae12e0cecd071b6e",
                "parameters": [
                    {
                        "name": "usuario",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista de asignaciones (vacia si el usuario no tiene personal asociado)"
                    },
                    "404": {
                        "description": "Usuario no encontrado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/hoy": {
            "get": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Registro de asistencia de hoy del usuario autenticado",
                "operationId": "c198adebbb859512ec1d56cf592fe12d",
                "responses": {
                    "200": {
                        "description": "Registro de hoy o null si aun no marco entrada"
                    },
                    "401": {
                        "description": "No autenticado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/estado-hoy": {
            "get": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Estado del dia del usuario autenticado (programado + registro)",
                "operationId": "0aad3fe3492713d00be7cd9b665488d6",
                "responses": {
                    "200": {
                        "description": "{ programado_hoy, registro }"
                    },
                    "401": {
                        "description": "No autenticado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/entrada": {
            "post": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Marcar entrada del usuario autenticado",
                "operationId": "9f34ed1cb89120b5624d324ff07362ad",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "latitud",
                                    "longitud"
                                ],
                                "properties": {
                                    "latitud": {
                                        "type": "number",
                                        "example": -12.0464
                                    },
                                    "longitud": {
                                        "type": "number",
                                        "example": -77.0428
                                    },
                                    "foto": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Entrada registrada"
                    },
                    "409": {
                        "description": "Ya marco entrada hoy"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/salida": {
            "post": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Marcar salida del usuario autenticado",
                "operationId": "221331b02000b0ca749635a5384ab514",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "latitud",
                                    "longitud"
                                ],
                                "properties": {
                                    "latitud": {
                                        "type": "number",
                                        "example": -12.0464
                                    },
                                    "longitud": {
                                        "type": "number",
                                        "example": -77.0428
                                    },
                                    "foto": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Salida registrada"
                    },
                    "404": {
                        "description": "Aun no marco entrada hoy"
                    },
                    "409": {
                        "description": "Ya marco salida hoy"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/almuerzo/inicio": {
            "post": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Marcar inicio de almuerzo del usuario autenticado",
                "operationId": "01b573b196f69ac6629d52f241b75593",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "latitud",
                                    "longitud"
                                ],
                                "properties": {
                                    "latitud": {
                                        "type": "number"
                                    },
                                    "longitud": {
                                        "type": "number"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Inicio de almuerzo registrado"
                    },
                    "404": {
                        "description": "Aun no marco entrada hoy"
                    },
                    "409": {
                        "description": "Almuerzo ya iniciado o ya marco salida"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/almuerzo/fin": {
            "post": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Marcar fin de almuerzo del usuario autenticado",
                "operationId": "44b5dbc098e224ce54e32237cfcf940a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "latitud",
                                    "longitud"
                                ],
                                "properties": {
                                    "latitud": {
                                        "type": "number"
                                    },
                                    "longitud": {
                                        "type": "number"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Fin de almuerzo registrado"
                    },
                    "404": {
                        "description": "Aun no marco entrada hoy"
                    },
                    "409": {
                        "description": "Almuerzo no iniciado o ya finalizado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/historial": {
            "get": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Historial de asistencia del usuario autenticado",
                "operationId": "a9a208e2bc2d24a489917b7149a74367",
                "parameters": [
                    {
                        "name": "desde",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "hasta",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page_size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Historial paginado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia": {
            "get": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Listar registros de asistencia (panel administrativo)",
                "operationId": "9a3657c83f95bd1f23216e0af66099fc",
                "parameters": [
                    {
                        "name": "id_personal",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "desde",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "hasta",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "estado",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista de registros"
                    },
                    "403": {
                        "description": "Sin permiso (requiere authority ROLE_ADMIN)"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/{registro}": {
            "put": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Corregir un registro de asistencia (panel administrativo)",
                "operationId": "0c8f6db44f729943b8136a94b2b40557",
                "parameters": [
                    {
                        "name": "registro",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "motivo_modificacion"
                                ],
                                "properties": {
                                    "hora_entrada": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "hora_salida": {
                                        "type": "string",
                                        "format": "date-time"
                                    },
                                    "estado": {
                                        "type": "string"
                                    },
                                    "observaciones": {
                                        "type": "string"
                                    },
                                    "motivo_modificacion": {
                                        "type": "string",
                                        "example": "Trabajador olvido marcar, ajustado por RRHH"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Registro corregido"
                    },
                    "403": {
                        "description": "Sin permiso (requiere authority ROLE_ADMIN)"
                    },
                    "404": {
                        "description": "No encontrado"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/asistencia/foto/{path}": {
            "get": {
                "tags": [
                    "Asistencia"
                ],
                "summary": "Servir una foto de asistencia (imagen binaria)",
                "description": "Lee la foto del disco y la devuelve; no depende de symlinks. Publica para mostrarla como <img> desde el ERP.",
                "operationId": "abc72d54f0c6b44aab744f2991c09781",
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Imagen"
                    },
                    "404": {
                        "description": "No encontrada"
                    }
                }
            }
        },
        "/api/auth/login": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Login de trabajador",
                "operationId": "8dcb70df1020986038d098cc08d05dae",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "username",
                                    "password"
                                ],
                                "properties": {
                                    "username": {
                                        "type": "string",
                                        "example": "jperez"
                                    },
                                    "password": {
                                        "type": "string",
                                        "example": "1234"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Login exitoso"
                    },
                    "401": {
                        "description": "Credenciales invalidas"
                    },
                    "403": {
                        "description": "Usuario deshabilitado"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                }
            }
        },
        "/api/auth/me": {
            "get": {
                "tags": [
                    "Auth"
                ],
                "summary": "Obtener el usuario autenticado segun el token",
                "operationId": "b9abb1a7a74670a19c215c2c133f14d8",
                "responses": {
                    "200": {
                        "description": "Usuario autenticado"
                    },
                    "401": {
                        "description": "No autenticado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/auth/logout": {
            "post": {
                "tags": [
                    "Auth"
                ],
                "summary": "Cerrar sesion (el cliente descarta el token)",
                "operationId": "69281b12abb272c76871f19cb17ca563",
                "responses": {
                    "200": {
                        "description": "Sesion cerrada"
                    },
                    "401": {
                        "description": "No autenticado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/auth/password": {
            "patch": {
                "tags": [
                    "Auth"
                ],
                "summary": "Cambiar la contrasena del usuario autenticado",
                "operationId": "52715fc4efdae3f2cfeb34000f5d2866",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "password_actual",
                                    "password_nueva"
                                ],
                                "properties": {
                                    "password_actual": {
                                        "type": "string"
                                    },
                                    "password_nueva": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Contrasena actualizada"
                    },
                    "401": {
                        "description": "Contrasena actual incorrecta"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/dispositivo": {
            "post": {
                "tags": [
                    "Dispositivo"
                ],
                "summary": "Registrar/actualizar el token FCM del dispositivo",
                "operationId": "cc06a497bcf54b01480ce41fa25b6f12",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "fcm_token"
                                ],
                                "properties": {
                                    "fcm_token": {
                                        "type": "string"
                                    },
                                    "plataforma": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Token registrado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Dispositivo"
                ],
                "summary": "Eliminar el token FCM del dispositivo",
                "operationId": "01dffba5ad9c2017a6b6d064c26f8ae8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "fcm_token"
                                ],
                                "properties": {
                                    "fcm_token": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Token eliminado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/mis-documentos": {
            "get": {
                "tags": [
                    "Documentos"
                ],
                "summary": "Memorandums y amonestaciones del colaborador autenticado",
                "operationId": "43f680290ee4fdb4a9e15e817b6155c6",
                "responses": {
                    "200": {
                        "description": "Lista de documentos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/mis-documentos/{clase}/{id}/descargo": {
            "post": {
                "tags": [
                    "Documentos"
                ],
                "summary": "Registrar el descargo del colaborador",
                "operationId": "3be6f345565cd618d508fa09efbe4fec",
                "parameters": [
                    {
                        "name": "clase",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "descargo"
                                ],
                                "properties": {
                                    "descargo": {
                                        "type": "string"
                                    },
                                    "anexo": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Descargo registrado"
                    },
                    "404": {
                        "description": "Documento no encontrado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/mis-documentos/anexo/{path}": {
            "get": {
                "tags": [
                    "Documentos"
                ],
                "summary": "Servir el PDF que el colaborador adjunto a su descargo o solicitud",
                "description": "Lee el PDF del disco publico y lo devuelve. Publico para enlazarlo desde el ERP.",
                "operationId": "31c040f826005ed1cd868d47a4524cf1",
                "parameters": [
                    {
                        "name": "path",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "PDF"
                    },
                    "404": {
                        "description": "No encontrado"
                    }
                }
            }
        },
        "/api/mis-documentos/{clase}/{id}/pdf": {
            "get": {
                "tags": [
                    "Documentos"
                ],
                "summary": "PDF del documento (generado al vuelo)",
                "operationId": "e3db8634c51de80cff94fb827663d6b8",
                "parameters": [
                    {
                        "name": "clase",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "PDF del documento"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/notificaciones": {
            "get": {
                "tags": [
                    "Notificaciones"
                ],
                "summary": "Notificaciones del usuario autenticado",
                "operationId": "ce89d0403b6e877dfb1851723ad6c3d6",
                "responses": {
                    "200": {
                        "description": "Lista de notificaciones"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/notificaciones/{id}/leer": {
            "post": {
                "tags": [
                    "Notificaciones"
                ],
                "summary": "Marcar una notificacion como leida",
                "operationId": "8a1acf54d81a3a51744d8b1a1467296e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notificacion marcada"
                    },
                    "404": {
                        "description": "No encontrada"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/notificaciones/leer-todas": {
            "post": {
                "tags": [
                    "Notificaciones"
                ],
                "summary": "Marcar todas las notificaciones como leidas",
                "operationId": "698ac52620cac21a7da859312772cff8",
                "responses": {
                    "200": {
                        "description": "Notificaciones marcadas"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/mi-programacion": {
            "get": {
                "tags": [
                    "Programacion"
                ],
                "summary": "Programacion del mes del trabajador autenticado",
                "operationId": "17b0c1c94f549a262bb3c4403c712c23",
                "parameters": [
                    {
                        "name": "anio",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 2026
                        }
                    },
                    {
                        "name": "mes",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "example": 8
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Calendario del mes, dia por dia"
                    },
                    "409": {
                        "description": "El usuario no tiene personal asociado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/solicitudes/tipos": {
            "get": {
                "tags": [
                    "Solicitudes"
                ],
                "summary": "Tipos de solicitud disponibles",
                "operationId": "af63f19248d05cd4a1f054067a4df3b0",
                "responses": {
                    "200": {
                        "description": "Lista de tipos"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/solicitudes": {
            "get": {
                "tags": [
                    "Solicitudes"
                ],
                "summary": "Solicitudes del colaborador autenticado",
                "operationId": "86ca78efe3491a9edac19c7b99751249",
                "responses": {
                    "200": {
                        "description": "Lista de solicitudes"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Solicitudes"
                ],
                "summary": "Crear una solicitud",
                "operationId": "39195eac694b6777797f4a1b96e9a8d1",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "tipo",
                                    "detalle"
                                ],
                                "properties": {
                                    "tipo": {
                                        "type": "string"
                                    },
                                    "detalle": {
                                        "type": "string"
                                    },
                                    "anexo": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Solicitud creada"
                    },
                    "422": {
                        "description": "Error de validacion"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/usuarios": {
            "get": {
                "tags": [
                    "Usuarios"
                ],
                "summary": "Listar trabajadores",
                "operationId": "e9d4d8b419dbef04b5748fbf9ccf3881",
                "parameters": [
                    {
                        "name": "activo",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "q",
                        "in": "query",
                        "description": "Busca en nombre_completo, dni, codigo o username",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista de trabajadores"
                    },
                    "401": {
                        "description": "No autenticado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/usuarios/{usuario}": {
            "get": {
                "tags": [
                    "Usuarios"
                ],
                "summary": "Detalle de un trabajador",
                "operationId": "0f23afcf09c72acc26c2106f9157305a",
                "parameters": [
                    {
                        "name": "usuario",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Detalle del trabajador"
                    },
                    "404": {
                        "description": "No encontrado"
                    }
                },
                "security": [
                    {
                        "bearerAuth": []
                    }
                ]
            }
        },
        "/api/usuario/{usuario}/firma": {
            "get": {
                "tags": [
                    "Usuarios"
                ],
                "summary": "Descargar la firma (imagen) de un trabajador",
                "operationId": "36a697b90c95ced142ec53731f93c65b",
                "parameters": [
                    {
                        "name": "usuario",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Imagen binaria de la firma"
                    },
                    "404": {
                        "description": "Sin firma registrada"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "description": "Autenticacion mediante JWT propio (firebase/php-jwt). Incluye el token obtenido en /api/auth/login en el header: Authorization: Bearer {token}",
                "bearerFormat": "JWT",
                "scheme": "bearer"
            }
        }
    },
    "tags": [
        {
            "name": "Asignaciones",
            "description": "Horarios recurrentes asignados a cada trabajador (solo lectura; se administran desde la web ERP)"
        },
        {
            "name": "Asistencia",
            "description": "Marcacion de entrada/salida y consulta de registros de asistencia"
        },
        {
            "name": "Auth",
            "description": "Autenticacion de trabajadores del consultorio (tabla usuario)"
        },
        {
            "name": "Dispositivo",
            "description": "Registro del token FCM para notificaciones push"
        },
        {
            "name": "Documentos",
            "description": "Memorandums y amonestaciones del colaborador"
        },
        {
            "name": "Notificaciones",
            "description": "Bandeja de notificaciones del colaborador"
        },
        {
            "name": "Programacion",
            "description": "Programacion mensual del trabajador autenticado (solo lectura; se administra desde la web ERP)"
        },
        {
            "name": "Solicitudes",
            "description": "Solicitudes del colaborador a RRHH"
        },
        {
            "name": "Usuarios",
            "description": "Consulta de trabajadores del consultorio (tabla usuario). La creacion/edicion se administra desde la web ERP."
        }
    ]
}