Termine
Ein Termin ist ein Kalendermeeting mit seinen Teilnehmern und existiert einmal je Nutzer. Diese Endpunkte listen und durchsuchen Termine und ersetzen ihre Tags.
Jeder Endpunkt unten zeigt in der Mitte seine Parameter und Antwortfelder und rechts ein Anfragebeispiel mit Beispielantwort.
https://api.sally.ioVersion v1.0 aktuell, noch nicht eingefrorenSo funktioniert die VersionierungDurchsucht Termine (Betreff, Teilnehmer, Zeitraum), paginiert
/v1.0/directories/{directoryId}/appointmentsTeilstring-Suche ohne Beachtung der Groß- und Kleinschreibung (siehe „Textsuche" oben): ?subject findet jeden Teil des Betreffs (Anfang, Mitte oder Ende), ?attendee jeden Teil eines Teilnehmernamens bzw. einer Teilnehmer-E-Mail. ?from/?to filtern nach StartTime und sind UTC ISO-8601 (YYYY-MM-DDTHH:MM:SSZ, siehe „Datum & Uhrzeit" oben). Paginierung über ?page + ?pageSize (max. 100). Absteigend nach StartTime sortiert.
Feldübersicht aus der Spezifikation
Felder der Antwort:
page/pageSize/total/hasMore: Paginierungs-Hülle (aktuelle Seite, Seitengröße, Gesamtzahl, ob weitere Seiten folgen).items(array): die Termine auf dieser Seite. Jeder Eintrag enthält:appointmentId(string): Id des Termins.subject(string): Betreff des Termins.description(string | null): Inhalt des Termins, so wie ihn der Kalender liefert; bei Outlook- bzw. Google-Terminen meist HTML, bei in Sally erstellten Terminen reiner Text. Wird unverändert zurückgegeben.startTime(string | null): Startzeit (ISO-8601).endTime(string | null): Endzeit (ISO-8601).durationInMinutes(number | null): Dauer in Minuten.isAllDay(boolean): true, wenn der Termin ganztägig ist.location(string | null): Ort des Termins.isPrivate(boolean): true, wenn der Termin als privat markiert ist.isCanceled(boolean): true, wenn der Termin abgesagt wurde.isRecurring(boolean): true, wenn der Termin Teil einer Terminserie ist.icalId(string | null): die iCalendar-UID aus dem Quellkalender, zum Abgleich mit deiner eigenen Kopie. Nicht eindeutig innerhalb eines Unternehmenskontos (eine Kopie pro synchronisiertem Kalender).attendees(array): die Teilnehmer. Jeder enthält:name(string | null): Name des Teilnehmers.email(string | null): E-Mail- bzw. Adresseintrag des Teilnehmers.isRequired(boolean): true bei einem erforderlichen Teilnehmer, false bei einem optionalen.invitationStatus(string enum): Einladungsstatus; einer vondeclined,accepted,tentative,notResponded,organizer,unknown.attendanceStatus(string enum): Anwesenheitsstatus; einer vonnotAttended,attended,unknown.
tags(array): effektive Tags (eigene plus geerbte vom Serienmaster). Jeder enthält:tagId(string): Id des Tags.name(string): Anzeigename des Tags.colorCode(string | null): ein Farbschlüssel aus der Sally-Tag-Palette (ein Farbname wieblue/red/green, kein roher Hex-Wert; vollständige Liste im Schema); null, wenn nicht gesetzt.
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.
Query-Parameter
pagenumberoptionalSeitennummer, beginnend bei 1. Standard: 1.
pageSizenumberoptionalEinträge pro Seite. Standard: 25, maximal 100.
subjectstringoptionalTeilstring-Suche ohne Beachtung der Groß- und Kleinschreibung im Betreff. Der Suchbegriff kann am Anfang, in der Mitte oder am Ende stehen (z. B. findet "meet" auch "Weekly Meeting").
attendeestringoptionalTeilstring-Suche ohne Beachtung der Groß- und Kleinschreibung im Namen oder in der E-Mail eines Teilnehmers. Der Suchbegriff kann am Anfang, in der Mitte oder am Ende stehen (z. B. findet "ann" auch "Joanna").
fromstringoptionalNur Termine mit StartTime >= diesem UTC-ISO-8601-Zeitstempel (
YYYY-MM-DDTHH:MM:SSZ).tostringoptionalNur Termine mit StartTime <= diesem UTC-ISO-8601-Zeitstempel (
YYYY-MM-DDTHH:MM:SSZ).fieldsstringoptionalKommagetrennte Liste der Felder, die zurückgegeben werden sollen. Lässt du den Parameter weg, bekommst du alle Felder, auch solche, die in Zukunft hinzukommen. Das ist deine Entscheidung: Nenne deine Felder explizit, wenn du davor geschützt sein willst.
Nur Felder der ersten Ebene können angegeben werden. Eine verschachtelte Liste wie
attendees,tagsodersectionItemswird ganz oder gar nicht zurückgegeben;attendees.namewird nicht unterstützt.Bei einer paginierten Antwort gilt die Auswahl für die Einträge in
items;page,pageSize,totalundhasMorewerden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.Hier auswählbar:
appointmentId,attendees,description,durationInMinutes,endTime,icalId,isAllDay,isCanceled,isPrivate,isRecurring,location,startTime,subject,tags.Beispiel:appointmentId,attendees
Antwort: je Eintrag in items
appointmentIdstringPflichtId des Termins.
subjectstringPflichtBetreff des Termins.
descriptionstringPflichtkann null seinInhalt des Termins, so wie ihn der Kalender liefert. Bei Terminen aus Outlook oder Google Calendar meist HTML, bei in Sally erstellten Terminen reiner Text. Wird unverändert zurückgegeben, stelle ihn also entsprechend dar. Null, wenn der Termin keinen Inhalt hat.
startTimestringPflichtkann null seinStartzeit (ISO-8601).
endTimestringPflichtkann null seinEndzeit (ISO-8601).
durationInMinutesnumberPflichtkann null seinDauer in Minuten.
isAllDaybooleanPflichtTrue, wenn der Termin ganztägig ist. Aus dem alten System migrierte Termine haben hier eventuell keinen Wert, was als false gilt.
locationstringPflichtkann null seinOrt des Termins.
isPrivatebooleanPflichtTrue, wenn der Termin als privat markiert ist.
isCanceledbooleanPflichtTrue, wenn der Termin abgesagt wurde.
isRecurringbooleanPflichtTrue, wenn der Termin Teil einer Terminserie ist.
icalIdstringPflichtkann null seinDie iCalendar-UID des Termins, wie sie der Kalender meldet, aus dem er stammt. Nutze sie, um einen Termin mit deiner eigenen Kopie desselben Kalendereintrags abzugleichen. NICHT eindeutig innerhalb eines Unternehmenskontos: Derselbe Eintrag erscheint einmal pro Kalender, aus dem er synchronisiert wurde, und alle diese Kopien teilen sich diesen Wert. Null bei Terminen, die nie aus einem Kalender stammten.
attendeesobject[]PflichtTeilnehmer.
5 Unterfelder
namestringPflichtkann null seinName des Teilnehmers.
emailstringPflichtkann null seinE-Mail- bzw. Adresseintrag des Teilnehmers.
invitationStatusstringPflichtEinladungsstatus des Teilnehmers.
Erlaubte Werte:declinedacceptedtentativenotRespondedorganizerunknownattendanceStatusstringPflichtAnwesenheitsstatus des Teilnehmers.
Erlaubte Werte:notAttendedattendedunknownisRequiredbooleanPflichtTrue, wenn der Teilnehmer ein erforderlicher Teilnehmer ist, false, wenn optional (wie im Kalender festgelegt).
tagsobject[]PflichtEffektive Tags (eigene plus geerbte vom Serienmaster).
3 Unterfelder
tagIdstringPflichtId des Tags.
namestringPflichtAnzeigename des Tags.
colorCodestringPflichtkann null seinFarbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von:
indigo,purple,fuchsia,pink,rose,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,slate,gray,zinc,stone,neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu;nulloder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.
Jede Seite trägt außerdem page, pageSize, total, hasMore.
Statuscodes
- 200Erfolg
- 400
Ungültige Anfrage (Validierungsfehler).
- 401
Fehlender oder ungültiger Bearer-Token.
- 404
Ressource nicht gefunden oder nicht zugänglich.
- 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.
Durchsucht Termine (Parameter im Body)
/v1.0/directories/{directoryId}/appointments/searchDurchsucht Termine, absteigend nach StartTime sortiert.
Feldübersicht aus der Spezifikation
Felder im Body:
search(string, optional): Teilstring ohne Beachtung der Groß- und Kleinschreibung in Betreff, Beschreibung sowie Name und E-Mail der Teilnehmer; ein Treffer in einem davon genügt.from(string, optional): nur Termine mit StartTime >= diesem UTC-ISO-8601-Zeitstempel (YYYY-MM-DDTHH:MM:SSZ).to(string, optional): nur Termine mit StartTime <= diesem UTC-ISO-8601-Zeitstempel (YYYY-MM-DDTHH:MM:SSZ).page(number, optional, Standard1): Seitennummer, beginnend bei 1.pageSize(number, optional, Standard25): Seitengröße, max.100.
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.
Query-Parameter
fieldsstringoptionalKommagetrennte Liste der Felder, die zurückgegeben werden sollen. Lässt du den Parameter weg, bekommst du alle Felder, auch solche, die in Zukunft hinzukommen. Das ist deine Entscheidung: Nenne deine Felder explizit, wenn du davor geschützt sein willst.
Nur Felder der ersten Ebene können angegeben werden. Eine verschachtelte Liste wie
attendees,tagsodersectionItemswird ganz oder gar nicht zurückgegeben;attendees.namewird nicht unterstützt.Bei einer paginierten Antwort gilt die Auswahl für die Einträge in
items;page,pageSize,totalundhasMorewerden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.Hier auswählbar:
appointmentId,attendees,description,durationInMinutes,endTime,icalId,isAllDay,isCanceled,isPrivate,isRecurring,location,startTime,subject,tags.Beispiel:appointmentId,attendees
Request-Body application/json
searchstringoptionalkann null seinTeilstring-Suche ohne Beachtung der Groß- und Kleinschreibung in Betreff, Beschreibung sowie Name und E-Mail der Teilnehmer. Der Suchbegriff kann jeweils am Anfang, in der Mitte oder am Ende stehen; ein Treffer in einem davon genügt.
fromstringoptionalkann null seinNur Termine mit StartTime >= diesem UTC-ISO-8601-Zeitstempel (
YYYY-MM-DDTHH:MM:SSZ).tostringoptionalkann null seinNur Termine mit StartTime <= diesem UTC-ISO-8601-Zeitstempel (
YYYY-MM-DDTHH:MM:SSZ).pagenumberoptionalSeite (beginnend bei 1, Standard 1).
pageSizenumberoptionalSeitengröße (Standard 25, max. 100).
Antwort: je Eintrag in items
appointmentIdstringPflichtId des Termins.
subjectstringPflichtBetreff des Termins.
descriptionstringPflichtkann null seinInhalt des Termins, so wie ihn der Kalender liefert. Bei Terminen aus Outlook oder Google Calendar meist HTML, bei in Sally erstellten Terminen reiner Text. Wird unverändert zurückgegeben, stelle ihn also entsprechend dar. Null, wenn der Termin keinen Inhalt hat.
startTimestringPflichtkann null seinStartzeit (ISO-8601).
endTimestringPflichtkann null seinEndzeit (ISO-8601).
durationInMinutesnumberPflichtkann null seinDauer in Minuten.
isAllDaybooleanPflichtTrue, wenn der Termin ganztägig ist. Aus dem alten System migrierte Termine haben hier eventuell keinen Wert, was als false gilt.
locationstringPflichtkann null seinOrt des Termins.
isPrivatebooleanPflichtTrue, wenn der Termin als privat markiert ist.
isCanceledbooleanPflichtTrue, wenn der Termin abgesagt wurde.
isRecurringbooleanPflichtTrue, wenn der Termin Teil einer Terminserie ist.
icalIdstringPflichtkann null seinDie iCalendar-UID des Termins, wie sie der Kalender meldet, aus dem er stammt. Nutze sie, um einen Termin mit deiner eigenen Kopie desselben Kalendereintrags abzugleichen. NICHT eindeutig innerhalb eines Unternehmenskontos: Derselbe Eintrag erscheint einmal pro Kalender, aus dem er synchronisiert wurde, und alle diese Kopien teilen sich diesen Wert. Null bei Terminen, die nie aus einem Kalender stammten.
attendeesobject[]PflichtTeilnehmer.
5 Unterfelder
namestringPflichtkann null seinName des Teilnehmers.
emailstringPflichtkann null seinE-Mail- bzw. Adresseintrag des Teilnehmers.
invitationStatusstringPflichtEinladungsstatus des Teilnehmers.
Erlaubte Werte:declinedacceptedtentativenotRespondedorganizerunknownattendanceStatusstringPflichtAnwesenheitsstatus des Teilnehmers.
Erlaubte Werte:notAttendedattendedunknownisRequiredbooleanPflichtTrue, wenn der Teilnehmer ein erforderlicher Teilnehmer ist, false, wenn optional (wie im Kalender festgelegt).
tagsobject[]PflichtEffektive Tags (eigene plus geerbte vom Serienmaster).
3 Unterfelder
tagIdstringPflichtId des Tags.
namestringPflichtAnzeigename des Tags.
colorCodestringPflichtkann null seinFarbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von:
indigo,purple,fuchsia,pink,rose,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,slate,gray,zinc,stone,neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu;nulloder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.
Jede Seite trägt außerdem page, pageSize, total, hasMore.
Statuscodes
- 200Erfolg
- 400
Ungültige Anfrage (Validierungsfehler).
- 401
Fehlender oder ungültiger Bearer-Token.
- 403
Verboten (unzureichende Berechtigungen).
- 404
Ressource nicht gefunden oder nicht zugänglich.
- 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.
Ersetzt die Tags eines Termins (zuweisen/entfernen)
/v1.0/directories/{directoryId}/appointments/{appointmentId}/tagsVollständiges Ersetzen der Tags eines Termins. Serien-Tags liegen auf dem Serienmaster und werden vererbt, sie werden nicht hier gesetzt. Maximal 20 Tags pro Termin.
Feldübersicht aus der Spezifikation
Felder im Body:
tagIds(string array): Ids bestehender Tags, die zugewiesen werden sollen; die angegebene Menge ersetzt die aktuelle. Zuweisen funktioniert nur mit Tag-Ids, lege den Tag also zuerst überPOST /v1.0/directories/{directoryId}/tagsan und weise ihn dann hier zu.
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.appointmentIdstringPflichtId des Termins.
Query-Parameter
fieldsstringoptionalKommagetrennte Liste der Felder, die zurückgegeben werden sollen. Lässt du den Parameter weg, bekommst du alle Felder, auch solche, die in Zukunft hinzukommen. Das ist deine Entscheidung: Nenne deine Felder explizit, wenn du davor geschützt sein willst.
Nur Felder der ersten Ebene können angegeben werden. Eine verschachtelte Liste wie
attendees,tagsodersectionItemswird ganz oder gar nicht zurückgegeben;attendees.namewird nicht unterstützt.Bei einer paginierten Antwort gilt die Auswahl für die Einträge in
items;page,pageSize,totalundhasMorewerden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.Hier auswählbar:
colorCode,name,tagId.Beispiel:colorCode,name
Request-Body application/json
tagIdsstring[]optionalIds bestehender Tags, die zugewiesen werden sollen; die angegebene Menge ersetzt die aktuelle.
Antwort
tagIdstringPflichtId des Tags.
namestringPflichtAnzeigename des Tags.
colorCodestringPflichtkann null seinFarbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von:
indigo,purple,fuchsia,pink,rose,red,orange,amber,yellow,lime,green,emerald,teal,cyan,sky,blue,slate,gray,zinc,stone,neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu;nulloder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.
Statuscodes
- 200Erfolg
- 400
Ungültige Anfrage (Validierungsfehler).
- 401
Fehlender oder ungültiger Bearer-Token.
- 403
Verboten (unzureichende Berechtigungen).
- 404
Ressource nicht gefunden oder nicht zugänglich.
- 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.