Αναφορά API / Ραντεβού
Κρατήσεις, συγκρούσεις και διαθεσιμότητα
Ο πόρος appointments καλύπτει κρατήσεις, καταχωρίσεις αποκλεισμού έδρας, και ένα παράγωγο endpoint διαθεσιμότητας που υπολογίζει ελεύθερα διαστήματα για μια έδρα σε συγκεκριμένη ημέρα. Αυτή η σελίδα απαριθμεί τη μορφή του αντικειμένου, τον κανόνα ανίχνευσης σύγκρουσης, και τα πεδία και σφάλματα κάθε endpoint.
Ποιος μπορεί να κάνει τι
Κάθε endpoint απαιτεί αυθεντικοποίηση και λειτουργεί εντός του ιατρείου του καλούντος. Σε αντίθεση με τις έδρες και τις ρυθμίσεις ιατρείου, τα ραντεβού δεν είναι μόνο για τον ιδιοκτήτη. Κάθε μέλος του ιατρείου, ιδιοκτήτης ή μέλος προσωπικού (assistant στο API), μπορεί να δημιουργεί, ενημερώνει και διαγράφει. Τα τμήματα διαδρομής appointmentId πρέπει να είναι κανονικά UUID· ένα κακοσχηματισμένο επιστρέφει not_found (404) χωρίς να φτάσει στο επίπεδο υπηρεσίας.
Το αντικείμενο ραντεβού και ο τύπος του
Ένα ραντεβού φέρει chairId, practitionerId, patientId, type, status, title, startAt, endAt, color, serviceRef, notes (τα τέσσερα τελευταία δέχονται null), seriesId (δέχεται null· ορίζεται όταν κλείστηκε ως μία συνεδρία μιας σειράς), createdBy, και metadata, συν id, practiceId, createdAt, updatedAt. Το type είναι ένα από appointment, reminder, ή unavailable. Μια καταχώριση unavailable αποκλείει μια έδρα όπως ένα πραγματικό ραντεβού για σκοπούς σύγκρουσης· μια καταχώριση reminder ποτέ δεν καταλαμβάνει έδρα και εξαιρείται τόσο από τον έλεγχο επικάλυψης όσο και από τον υπολογισμό διαθεσιμότητας, ακόμη κι αν έχει ορισμένο chairId.
Το status είναι ένα από requested, confirmed, declined, cancelled ή expired. Μόνο τα requested και confirmed καταλαμβάνουν έδρα, και αυτός είναι ο κανόνας που ακολουθεί κάθε απάντηση επικάλυψης και διαθεσιμότητας: ένα αίτημα σε εκκρεμότητα κρατά την ώρα του, ώστε να μην πουν σε δύο ασθενείς ότι η ίδια ώρα είναι δική τους, ενώ η απόρριψη, η ακύρωση ή η λήξη ενός αιτήματος επιστρέφουν την ώρα. Μια κράτηση από το προσωπικό είναι confirmed· μια κράτηση από τη δημόσια σελίδα έρχεται ως requested.
Στις γραμμές της λίστας ο ασθενής έρχεται ενσωματωμένος ως patient: { id, firstName, lastName, contactUnchecked } | null και όχι ως σκέτο patientId, ώστε μια προβολή ημερολογίου να μην χρειάζεται δεύτερη κλήση ανά γραμμή.
Ανίχνευση επικάλυψης (διπλής κράτησης)
Η δημιουργία ή ενημέρωση ενός ραντεβού απορρίπτεται με conflict (409) όταν επικαλύπτεται με κάτι που καταλαμβάνει την ώρα: ένα ραντεβού σε κατάσταση requested ή confirmed, ή μια καταχώριση unavailable, στην ίδια έδρα ή για τον ίδιο επαγγελματία, ή χρόνο αποκλεισμένο για όλο το ιατρείο (καταχώριση unavailable χωρίς έδρα και χωρίς πρόσωπο, όπως μια αργία). Ένα ραντεβού σε κατάσταση declined, cancelled ή expired δεν συγκρούεται ποτέ με τίποτα. Ένα practitionerId από άλλο ιατρείο απορρίπτεται με validation_failed (400), όχι ως σύγκρουση.
Το 409 φέρει τον λόγο σε αναγνώσιμη από μηχανή μορφή στο details[].code: chair_booked όταν η έδρα που ορίστηκε είναι κατειλημμένη, practitioner_booked όταν το πρόσωπο που ορίστηκε είναι απασχολημένο οπουδήποτε, και practice_blocked όταν όλο το ιατρείο είναι κλειστό εκείνη την ώρα. Ελέγχετε αυτά και όχι το μήνυμα.
Η επικάλυψη χρησιμοποιεί αυστηρή ανισότητα (existing.startAt < newEnd AND existing.endAt > newStart), οπότε δύο καταχωρίσεις που αγγίζονται ακριβώς σε ένα όριο δεν θεωρούνται επικαλυπτόμενες. Διαφορετικές έδρες ποτέ δεν συγκρούονται μεταξύ τους, και στο PATCH το ίδιο το ραντεβού που ενημερώνεται εξαιρείται από τον δικό του έλεγχο σύγκρουσης.
Υπενθυμίσεις ως παρενέργεια
Η δημιουργία, ενημέρωση ή διαγραφή μιας καταχώρισης τύπου appointment προγραμματίζει, επαναπρογραμματίζει ή ακυρώνει αυτόματα μια εργασία υπενθύμισης στο παρασκήνιο, και δεν χρειάζεται ξεχωριστή κλήση API. Υπενθύμιση προγραμματίζεται μόνο όταν η καταχώριση είναι confirmed, έχει ασθενή, και ο χρόνος προειδοποίησης του ιατρείου είναι πάνω από μηδέν: μια κράτηση που περιμένει απάντηση δεν υπενθυμίζει σε κανέναν, γιατί η επίσκεψη μπορεί και να μη γίνει. Οι μηχανισμοί παράδοσης (κανάλια, συμπεριφορά υποβαθμισμένης λειτουργίας) βρίσκονται στην τεκμηρίωση ειδοποιήσεων και όχι εδώ.
Δείτε την αναφορά σφαλμάτων για το τι σημαίνει κάθε κωδικός και κατάσταση, και τον κόμβο αναφοράς API για τους υπόλοιπους πόρους.
Endpoints
GET/api/v1/appointments
Επιστρέφει τα ραντεβού που ξεκινούν εντός ενός χρονικού παραθύρου, ταξινομημένα κατά ώρα έναρξης.
Το παράθυρο είναι ημιανοιχτό: ένα ραντεβού περιλαμβάνεται όταν το startAt ανήκει στο [from, to). Ένα ραντεβού που ξεκίνησε πριν το from και ακόμη διαρκεί δεν επιστρέφεται.
Το `to` πρέπει να είναι μετά το `from`, και το παράθυρο μπορεί να καλύπτει έως 370 ημέρες· πέρα από αυτό είναι 400 `validation_failed`. Στείλτε και τα δύο με `Z` ή με ρητή απόκλιση ώρας, γιατί μια σκέτη τοπική ώρα είναι διφορούμενη. Επιστρέφονται ραντεβού κάθε κατάστασης, οπότε φιλτράρετε στον client αν θέλετε μόνο τα επιβεβαιωμένα.
Παράμετροι ερωτήματος
| Πεδίο | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
| fromΥποχρεωτικό | ISO datetime | — | Αρχή του παραθύρου, συμπεριλαμβανομένη. |
| toΥποχρεωτικό | ISO datetime | — | Τέλος του παραθύρου, μη συμπεριλαμβανομένο. |
| chairId | uuid | — | Περιορίζει το αποτέλεσμα σε μία έδρα. Μια έδρα που δεν έχει το ιατρείο είναι 400 `validation_failed`. |
Απόκριση · 200
{
"data": {
"appointments": [
{
"id": "a7c30e51-....",
"type": "appointment",
"startAt": "2026-07-08T10:00:00.000Z",
"endAt": "2026-07-08T11:00:00.000Z"
}
]
},
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει ή είναι άκυρο το from ή το to, ή το chairId είναι κακοσχηματισμένο. |
| missing_authorization | 401 | Δεν στάλθηκε κεφαλίδα Authorization. |
POST/api/v1/appointments/series
Κλείνει ένα ραντεβού και τις επαναλήψεις του σε μία συναλλαγή: μια σειρά συνεδριών.
Δέχεται το σώμα της δημιουργίας χωρίς `type` και `status` (μια σειρά είναι ραντεβού, και το κλείνει το ιατρείο, οπότε είναι επιβεβαιωμένο), συν `repeat`: `everyWeeks` 1 έως 52, προαιρετικά `weekdays` 0 (Κυριακή) έως 6, και ακριβώς ένα από `count` (2 έως 52, μαζί με το πρώτο) ή `until` (YYYY-MM-DD, συμπεριλαμβανομένης).
Ο κανόνας υπολογίζεται στο ρολόι του ιατρείου, οπότε μια σειρά στις 09:00 μένει στις 09:00 μετά την αλλαγή της ώρας, και οι αποθηκευμένες στιγμές της διαφέρουν κατά μία ώρα εκατέρωθεν της θερινής ώρας.
Μια ημερομηνία που είναι πιασμένη παραλείπεται, δεν απορρίπτει τη σειρά: η απάντηση είναι `201` με `appointments` για όσα κλείστηκαν και `skipped` για όσες ημερομηνίες δεν κλείστηκαν, οπότε μια σειρά μπορεί να γυρίσει μικρότερη από όση ζήτησε ο κανόνας. Κάθε συνεδρία μοιράζεται την έδρα, τον επαγγελματία, την υπηρεσία, τη διάρκεια και τον ασθενή της πρώτης, και φέρει το ίδιο `seriesId`.
Μια συνεδρία μετακινείται, ακυρώνεται ή διαγράφεται μόνη της μετά, από τις συνηθισμένες διαδρομές ραντεβού. Το κλείσιμο μιας σειράς δεν στέλνει ακόμη email στον ασθενή.
Σώμα αιτήματος
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| repeatΥποχρεωτικό | object | `everyWeeks` (1-52), προαιρετικά `weekdays` (0-6), και ακριβώς ένα από `count` (2-52) ή `until` (YYYY-MM-DD). |
Απόκριση · 201
{
"data": {
"seriesId": "9b4d2f10-....",
"appointments": [{ "id": "a7c30e51-....", "startAt": "2026-07-08T09:00:00.000Z" }],
"skipped": [{ "startAt": "2026-07-15T09:00:00.000Z", "reason": "chair_booked" }]
},
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | ο κανόνας δίνει κανένα ή και τα δύο από count και until, η σειρά φτάνει πάνω από 1.096 ημέρες μπροστά, ή δύο δικές της συνεδρίες επικαλύπτονται μεταξύ τους. |
| conflict | 409 | δεν κλείστηκε ούτε μία ημερομηνία της σειράς. Αν μια υπάρχουσα σειρά καλύπτει ήδη κάθε ημερομηνία, για τον ίδιο ασθενή στις ίδιες ώρες, το μήνυμα λέει ότι η σειρά είναι ήδη κλεισμένη. |
POST/api/v1/appointments
Δημιουργεί ραντεβού, υπενθύμιση ή εγγραφή δέσμευσης έδρας.
Κάθε μέλος του ιατρείου μπορεί να το κάνει· δεν υπάρχει περιορισμός μόνο για τον ιδιοκτήτη, σε αντίθεση με τις έδρες και τις ρυθμίσεις.
Ένα chairId ή patientId άλλου ιατρείου απορρίπτεται ως validation_failed και δεν εμφανίζεται ως σφάλμα βάσης.
Σώμα αιτήματος
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| typeΥποχρεωτικό | string | Ένα από appointment, reminder, unavailable. |
| startAtΥποχρεωτικό | ISO datetime | Πότε ξεκινά. |
| endAtΥποχρεωτικό | ISO datetime | Πρέπει να είναι αυστηρά μετά το startAt. |
| chairId | uuid | null | Πρέπει να ανήκει στο ιατρείο σας. Με μία μόνο έδρα συμπληρώνεται αυτόματα· με περισσότερες, μια κράτηση χωρίς έδρα είναι 400 `validation_failed` που ονομάζει τις έδρες προς επιλογή. Μια καταχώριση `reminder` ή `unavailable` δεν χρειάζεται έδρα. |
| practitionerId | uuid | null | Μέλος του ιατρείου σας. Ελέγχεται για επικάλυψη όπως και η έδρα, οπότε η κράτηση κάποιου που είναι ήδη απασχολημένος είναι 409 με `practitioner_booked`. |
| status | string | `requested` ή `confirmed`· προεπιλογή `confirmed`. Οι άλλες καταστάσεις αλλάζουν μέσω του endpoint κατάστασης παρακάτω, όχι από εδώ. |
| patientId | uuid | null | Πρέπει να ανήκει στο ιατρείο σας. Σε επιβεβαιωμένο ραντεβού ενεργοποιεί τον προγραμματισμό υπενθύμισης. |
| title | string | null | Χωρίς κενά στα άκρα· δεν επιτρέπεται κενό αν δοθεί. |
| color | string | null | Χρώμα εμφάνισης στο ημερολόγιο. |
| serviceRef | string | null | Αναφορά στην υπηρεσία που εκτελείται. |
| notes | string | null | Ελεύθερο κείμενο. |
Παράδειγμα αιτήματος
{
"type": "appointment",
"startAt": "2026-07-08T10:00:00.000Z",
"endAt": "2026-07-08T11:00:00.000Z",
"chairId": "5c2f9b74-....",
"title": "Checkup"
}Απόκριση · 201
{
"data": {
"id": "a7c30e51-....",
"type": "appointment",
"startAt": "2026-07-08T10:00:00.000Z",
"endAt": "2026-07-08T11:00:00.000Z"
},
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Το endAt δεν είναι μετά το startAt, άγνωστο chairId ή patientId, practitionerId από άλλο ιατρείο, ή στάλθηκε άγνωστο πεδίο. |
| conflict | 409 | Η εγγραφή επικαλύπτεται με υπάρχον ραντεβού ή δέσμευση στην ίδια έδρα. |
GET/api/v1/appointments/:appointmentId
Επιστρέφει ένα ραντεβού.
Παράμετροι διαδρομής
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| appointmentIdΥποχρεωτικό | uuid | Κανονικό UUID. |
Απόκριση · 200
{
"data": { "id": "a7c30e51-....", "type": "appointment" },
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| not_found | 404 | Δεν υπάρχει τέτοιο ραντεβού στο ιατρείο. |
PATCH/api/v1/appointments/:appointmentId
Ενημερώνει ραντεβού. Όλα τα πεδία της δημιουργίας εκτός του status, όλα προαιρετικά.
Ο έλεγχος endAt > startAt επαναλαμβάνεται όποτε αλλάζει κάποιο από τα δύο, σε σύγκριση με την υπάρχουσα τιμή του άλλου. Ο έλεγχος επικάλυψης εκτελείται ξανά για το τελικό εύρος, εξαιρώντας το ίδιο το ραντεβού.
Το `status` **δεν** γίνεται δεκτό εδώ. Η απάντηση σε αίτημα κράτησης γίνεται από το endpoint κατάστασης παρακάτω, ώστε κάθε μετάβαση να ελέγχεται σε σχέση με αυτή από την οποία ξεκινά.
Ο μηδενισμός του `chairId` σε μια κράτηση απορρίπτεται: μια κράτηση εξ ορισμού καταλαμβάνει έδρα. Ένα 409 μπορεί επίσης να σημαίνει ότι το αίτημα έληξε όσο το επεξεργαζόσασταν, ή ότι η γραμμή άλλαξε στο μεταξύ.
Παράμετροι διαδρομής
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| appointmentIdΥποχρεωτικό | uuid | Κανονικό UUID. |
Παράδειγμα αιτήματος
{
"startAt": "2026-07-08T10:30:00.000Z",
"endAt": "2026-07-08T11:30:00.000Z"
}Απόκριση · 200
{
"data": {
"id": "a7c30e51-....",
"startAt": "2026-07-08T10:30:00.000Z",
"endAt": "2026-07-08T11:30:00.000Z"
},
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Άκυρο πεδίο, άγνωστο chairId ή patientId, ή άγνωστο πεδίο. |
| conflict | 409 | Η νέα ώρα επικαλύπτεται με άλλη εγγραφή στην ίδια έδρα. |
| not_found | 404 | Δεν υπάρχει τέτοιο ραντεβού στο ιατρείο. |
POST/api/v1/appointments/:appointmentId/status
Απαντά ή ανακαλεί ένα αίτημα κράτησης, και ακυρώνει ένα επιβεβαιωμένο ραντεβού.
Μόνο από εδώ αλλάζει μια κατάσταση, και οι μεταβάσεις είναι σταθερές: ένα αίτημα σε κατάσταση `requested` μπορεί να επιβεβαιωθεί, να απορριφθεί ή να ακυρωθεί (ανάκληση), ένα `confirmed` μπορεί να ακυρωθεί, και τα `declined`, `cancelled` και `expired` είναι τελικά. Κάθε μετάβαση ελέγχεται σε σχέση με την κατάσταση από την οποία ξεκινά, και γι' αυτό το `PATCH` δεν δέχεται πεδίο `status`.
Η επιβεβαίωση εκτελεί ξανά τον έλεγχο επικάλυψης, οπότε ένα αίτημα μπορεί να απορριφθεί τη στιγμή της επιβεβαίωσης αν η έδρα ή ο επαγγελματίας γέμισαν όσο περίμενε. Χωρίς `chairId`, η επιβεβαίωση παίρνει τη συνηθισμένη έδρα του επαγγελματία όταν είναι ελεύθερη εκείνη την ώρα, αλλιώς την έδρα που κρατά το αίτημα. Αν είναι πιασμένες και οι δύο, η απάντηση είναι 400 `chair_booked` με τις έδρες που είναι ελεύθερες, και 409 `chair_booked` όταν δεν είναι ελεύθερη καμία.
Αν στείλετε την κατάσταση που έχει ήδη το ραντεβού, η απάντηση είναι 200 με τη γραμμή αμετάβλητη, οπότε μια επανάληψη της απάντησης είναι ασφαλής. Γίνεται 409 μόνο αν η επανάληψη στείλει και διαφορετική έδρα ή επαγγελματία.
Παράμετροι διαδρομής
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| appointmentIdΥποχρεωτικό | uuid | Κανονικό UUID. |
Σώμα αιτήματος
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| statusΥποχρεωτικό | string | `confirmed`, `declined` ή `cancelled`. |
| chairId | uuid | null | Μόνο κατά την επιβεβαίωση: η έδρα όπου μπαίνει. |
| practitionerId | uuid | null | Μόνο κατά την επιβεβαίωση: το πρόσωπο με το οποίο κλείνεται. |
Απόκριση · 200
{
"data": { "appointment": { "id": "0f1c7a2e-....", "status": "confirmed" } },
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Η κατάσταση δεν είναι μία από τις τρεις, ή στάλθηκε έδρα ή επαγγελματίας σε απόρριψη ή ακύρωση. |
| not_found | 404 | Δεν υπάρχει τέτοιο ραντεβού στο ιατρείο. |
| conflict | 409 | Η μετάβαση δεν επιτρέπεται από την τρέχουσα κατάσταση, η έδρα ή ο επαγγελματίας είναι κατειλημμένοι, δεν είναι ελεύθερη καμία έδρα, το ιατρείο είναι κλειστό εκείνη την ώρα, το αίτημα έχει λήξει, ή μια επανάληψη έστειλε διαφορετική έδρα ή επαγγελματία. |
DELETE/api/v1/appointments/:appointmentId
Διαγράφει ραντεβού και ακυρώνει την υπενθύμιση που είχε προγραμματιστεί.
Παράμετροι διαδρομής
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
| appointmentIdΥποχρεωτικό | uuid | Κανονικό UUID. |
Απόκριση · 200
{
"data": { "deleted": true },
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| not_found | 404 | Δεν υπάρχει τέτοιο ραντεβού στο ιατρείο. |
GET/api/v1/appointments/availability
Υπολογίζει τα ελεύθερα διαστήματα μίας έδρας για μία ημερολογιακή ημέρα.
Τα διαστήματα οριοθετούνται από το ωράριο και το βήμα του ιατρείου, με επιστροφή σε προεπιλογές για κάθε μη ορισμένη ρύθμιση. Μια ημέρα που το ιατρείο είναι κλειστό δεν επιστρέφει καθόλου διαστήματα, αντί για σφάλμα.
Κατειλημμένο σημαίνει ραντεβού σε κατάσταση `requested` ή `confirmed`, καταχώριση `unavailable` σε εκείνη την έδρα, ή χρόνος αποκλεισμένος για όλο το ιατρείο. Ένα ραντεβού `declined`, `cancelled` ή `expired` δεν δεσμεύει διάστημα, και οι καταχωρίσεις `reminder` αγνοούνται εντελώς γιατί δεν δεσμεύουν έδρα. Ένα διάστημα που έχει ήδη ξεκινήσει παραλείπεται, οπότε ένα ερώτημα για σήμερα επιστρέφει μόνο ό,τι μπορεί ακόμη να κρατηθεί.
Παράμετροι ερωτήματος
| Πεδίο | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
| dateΥποχρεωτικό | string | — | YYYY-MM-DD, στη ζώνη ώρας του ιατρείου. |
| chairIdΥποχρεωτικό | uuid | — | Πρέπει να ανήκει στο ιατρείο σας. |
| durationMinutesΥποχρεωτικό | integer | — | Ζητούμενη διάρκεια διαστήματος, 1 έως 1440 λεπτά. |
Απόκριση · 200
{
"data": {
"slots": [
{ "startAt": "2026-07-08T06:00:00.000Z", "endAt": "2026-07-08T07:00:00.000Z" }
]
},
"requestId": "req_5f2c1e40-...."
}Σφάλματα
| Κωδικός | Κατάσταση | Πότε |
|---|---|---|
| validation_failed | 400 | Λείπει ή είναι άκυρη η date, το chairId δεν είναι UUID ή ανήκει σε άλλο ιατρείο, ή το durationMinutes είναι εκτός ορίων. |
Συχνές ερωτήσεις
Οι καρτέλες ασθενών κρυπτογραφούνται, και εκεί που φυλάσσονται και καθώς έρχονται στην οθόνη σας. Τα αρχεία είναι ιδιωτικά, και ο σύνδεσμος προς ένα αρχείο σταματά να δουλεύει μετά από λίγο. Οι αλλαγές στις καρτέλες των ασθενών καταγράφονται, με το ποιος τις έκανε και πότε. Δεν υπάρχει κοινός κωδικός ιατρείου: ο καθένας έχει τον δικό του λογαριασμό. Στο πακέτο Complete, ο ιδιοκτήτης του ιατρείου μπορεί επίσης να απαιτεί σύνδεση σε δύο βήματα για όλη την ομάδα.
Κάθε αυθεντικοποιημένο μέλος του ιατρείου μπορεί να δημιουργεί, ενημερώνει και διαγράφει ραντεβού. Οι ρόλοι ιδιοκτήτη και προσωπικού έχουν και οι δύο πλήρη πρόσβαση, χωρίς φραγμό ρόλου. Αυτό διαφέρει από τις έδρες και τις ρυθμίσεις ιατρείου, που είναι μόνο για τον ιδιοκτήτη, οπότε αξίζει να ελέγχετε ανά πόρο αντί να υποθέτετε έναν κανόνα παντού.
Δύο καταχωρίσεις που επικαλύπτονται στην ίδια έδρα ή για τον ίδιο επαγγελματία, ή μέσα σε χρόνο μπλοκαρισμένο για όλο το ιατρείο, μετρώντας μόνο κρατήσεις requested και confirmed και καταχωρίσεις unavailable. Η επικάλυψη είναι αυστηρή ανισότητα, οπότε η επαφή σε όριο δεν μετράει, και οι υπενθυμίσεις εξαιρούνται. Μια σύγκρουση είναι 409 με chair_booked, practitioner_booked ή practice_blocked στο details[].code.
Όχι. Η δημιουργία, ενημέρωση ή διαγραφή ενός επιβεβαιωμένου ραντεβού συνδεδεμένου με ασθενή προγραμματίζει, επαναπρογραμματίζει ή ακυρώνει αυτόματα την υπενθύμισή του στο παρασκήνιο, με βάση τον ρυθμισμένο χρόνο προειδοποίησης του ιατρείου. Μια κράτηση που περιμένει απάντηση δεν προγραμματίζει τίποτα. Δεν υπάρχει ξεχωριστό endpoint γι' αυτό· συμβαίνει ως παρενέργεια των κανονικών endpoints εγγραφής ραντεβού.