---
title: "Appointments"
description: "Buchbare Ressourcen. Jede App ist ein Modul auf einem gemeinsamen Datenmodell."
canonical: "https://obop-platform.sliplane.app/de/apps/appointments/"
lang: "de"
---

# Appointments

## Wofür sie gedacht ist

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

## Was das Paket leistet und was nicht

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

## Modelle

### `appointments_resource`

Something or someone that can be booked

Lesegruppe: `appointments.user`. Schreibgruppe: `appointments.manager`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `name` | text | `none` | nein | `appointments.user` | im Klartext | Name of the resource, for example Meeting room 2 |
| `kind` | select (person, room, equipment) | `none` | nein | `appointments.user` | im Klartext | What kind of resource it is: person, room, equipment |
| `capacity` | number | `none` | nein | `appointments.user` | im Klartext | How many people it can serve at once |
| `active` | bool | `none` | nein | `appointments.user` | im Klartext | Whether the resource can be booked |

### `appointments_appointment`

A booking of a resource at a time

Lesegruppe: `appointments.user`. Schreibgruppe: `appointments.user`.

| Feld | Art | Datenklasse | Personenbezogene Daten | Gruppe | Agenten sehen | Beschreibung |
|---|---|---|---|---|---|---|
| `resource_id` | ref → appointments_resource | `none` | nein | `appointments.user` | im Klartext | The resource booked |
| `title` | text | `none` | nein | `appointments.user` | im Klartext | What the appointment is for |
| `day` | date | `none` | nein | `appointments.user` | im Klartext | Date of the appointment (YYYY-MM-DD) |
| `start_minute` | number | `none` | nein | `appointments.user` | im Klartext | Start time as minutes since midnight, for example 540 for 09:00 |
| `end_minute` | number | `none` | nein | `appointments.user` | im Klartext | End time as minutes since midnight, for example 600 for 10:00 |
| `attendee_name` | text | `internal` | ja | `appointments.user` | maskiert | Name of the person attending |
| `attendee_email` | text | `internal` | ja | `appointments.user` | maskiert | Email address of the attendee |
| `attendee_phone` | text | `internal` | ja | `appointments.user` | maskiert | Phone number of the attendee |
| `notes` | longtext | `none` | nein | `appointments.user` | im Klartext | Anything the host should know beforehand |
| `state` | select (scheduled, confirmed, done, cancelled, no_show) | `none` | nein | `appointments.user` | im Klartext | Booking status: scheduled, confirmed, done, cancelled, no_show |

## Workflows

### `appointments_appointment`

| Aktion | Bewegt | Wer sie ausführen darf | Freigabe |
|---|---|---|---|
| `appointments_appointment.confirm` | state: scheduled → confirmed | `appointments.user` | nein |
| `appointments_appointment.complete` | state: confirmed → done | `appointments.user` | nein |
| `appointments_appointment.cancel` | state: scheduled → cancelled | `appointments.user` | nein |
| `appointments_appointment.mark_no_show` | state: confirmed → no_show | `appointments.user` | nein |

## Berechtigungsgruppen

Von dieser App verwendete Gruppen:

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

## Freigabeschritte

Kein Schritt dieser App braucht eine Freigabe, abgesehen vom Löschen von Datensätzen.

## Was Agenten tun können und was nicht

Ein Agent kann Datensätze dieser App lesen, durchsuchen, anlegen und aktualisieren sowie Aktionen ausführen, die keine Freigabe brauchen, und zwar innerhalb der Berechtigungsgruppen seines Tokens.

Diese Schritte kann er nur vorschlagen, und eine Person muss sie freigeben: `appointments_resource.delete`, `appointments_appointment.delete`.

Personenbezogene Daten werden als Platzhalter maskiert: `appointments_appointment.attendee_name`, `appointments_appointment.attendee_email`, `appointments_appointment.attendee_phone`.

## Abhängigkeiten

Keine.

## Installation

Installieren Sie sie in der App Customize (Marktplatz) oder über die Kommandozeile:

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

Erfordert eine Datenbank und Administratorrechte.

## Selbst bauen

[Der Modulleitfaden zeigt, wie Apps wie diese geschrieben werden](/de/docs/reference/module-manifest/)
