---
title: "Appointments"
description: "Recursos reservables. Cada aplicación es un módulo sobre un único modelo de datos."
canonical: "https://obop.dev/es/apps/appointments/"
lang: "es"
---

# Appointments

## Para qué sirve

Describe bookable people, rooms and equipment and record appointments with a date, start and end. Overlaps are not prevented automatically.

## Qué hace y qué no hace el paquete

Bookable resources (people, rooms, equipment) and appointments with a date, start and end time and a status flow. Overlaps are not prevented automatically.

## Modelos

### `appointments_resource`

Something or someone that can be booked

Grupo de lectura: `appointments.user`. Grupo de escritura: `appointments.manager`.

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `name` | text | `none` | no | `appointments.user` | en claro | Name of the resource, for example Meeting room 2 |
| `kind` | select (person, room, equipment) | `none` | no | `appointments.user` | en claro | What kind of resource it is: person, room, equipment |
| `capacity` | number | `none` | no | `appointments.user` | en claro | How many people it can serve at once |
| `active` | bool | `none` | no | `appointments.user` | en claro | Whether the resource can be booked |

### `appointments_appointment`

A booking of a resource at a time

Grupo de lectura: `appointments.user`. Grupo de escritura: `appointments.user`.

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `resource_id` | ref → appointments_resource | `none` | no | `appointments.user` | en claro | The resource booked |
| `title` | text | `none` | no | `appointments.user` | en claro | What the appointment is for |
| `day` | date | `none` | no | `appointments.user` | en claro | Date of the appointment (YYYY-MM-DD) |
| `start_minute` | number | `none` | no | `appointments.user` | en claro | Start time as minutes since midnight, for example 540 for 09:00 |
| `end_minute` | number | `none` | no | `appointments.user` | en claro | End time as minutes since midnight, for example 600 for 10:00 |
| `attendee_name` | text | `internal` | sí | `appointments.user` | enmascarado | Name of the person attending |
| `attendee_email` | text | `internal` | sí | `appointments.user` | enmascarado | Email address of the attendee |
| `attendee_phone` | text | `internal` | sí | `appointments.user` | enmascarado | Phone number of the attendee |
| `notes` | longtext | `none` | no | `appointments.user` | en claro | Anything the host should know beforehand |
| `state` | select (scheduled, confirmed, done, cancelled, no_show) | `none` | no | `appointments.user` | en claro | Booking status: scheduled, confirmed, done, cancelled, no_show |

## Flujos de trabajo

### `appointments_appointment`

| Acción | Mueve | Quién puede ejecutarla | Aprobación |
|---|---|---|---|
| `appointments_appointment.confirm` | state: scheduled → confirmed | `appointments.user` | no |
| `appointments_appointment.complete` | state: confirmed → done | `appointments.user` | no |
| `appointments_appointment.cancel` | state: scheduled → cancelled | `appointments.user` | no |
| `appointments_appointment.mark_no_show` | state: confirmed → no_show | `appointments.user` | no |

## Grupos de permisos

Grupos que usa esta aplicación:

- `appointments.manager`
- `appointments.user`

## Pasos con aprobación

Ningún paso de esta aplicación requiere aprobación, salvo eliminar registros.

## Qué pueden y qué no pueden hacer los agentes

Un agente puede leer, buscar, crear y actualizar registros de esta aplicación, y ejecutar las acciones que no requieren aprobación, dentro de los grupos de permisos de su token.

Solo puede proponer estos pasos, y una persona debe aprobarlos: `appointments_resource.delete`, `appointments_appointment.delete`.

Los datos personales se enmascaran como tokens marcadores: `appointments_appointment.attendee_name`, `appointments_appointment.attendee_email`, `appointments_appointment.attendee_phone`.

## Dependencias

Ninguna.

## Instalación

Instálala desde la aplicación Customize (Marketplace) o desde la línea de comandos:

```bash
obop modules install-from appointments
```

Requiere una base de datos y derechos de administrador.

## Crea la tuya

[La guía de módulos explica cómo se escriben aplicaciones como esta](/es/docs/reference/module-manifest/)
