Limitieren von Aufrufzahlen
Für alle Schnittstellen gelten Begrenzungen hinsichtlich der Aufrufzahlen innerhalb von bestimmten Zeitbereichen. Beim Überschreiten dieser Begrenzungen wird der HTTP-Status-Code 429 (too many requests) zurückgegeben.
Registrieren eines Widgets
Die Registrierung eines Widgets muss mit einer App-Session erfolgen. Wie du eine App-Session ausstellen kannst, ist im Abschnitt Inter-App-Kommunikation mit App-Sessions der Identityprovider-App beschrieben.
Wichtig
Die Authentifizierung muss mit einem Bearer-Token im Authorization-Header erfolgen. Eine Authentifizierung via Cookie ist nicht möglich.
|
Eine App kann Widgets nur im eigenen Namensraum der App registrieren.
Du kannst ein neues Widget für deine App wie folgt mit der Dashboard-App bekannt machen.
Verwende eine HTTP-PATCH-Anforderung an den Pfad /dash/api/widget-registrations/<app-namespace>/<id>
.
Aufbau: [a-z-]/[a-z][a-z0-9]
. Der <id>
Teil nach dem /
darf max zwölf Zeichen lang sein. Zum Beispiel acme-example/foobar
.
Request
PATCH /dash/api/widget-registrations/<appname>/<widgetID>
Accept: application/json
Content-Type: application/merge-patch+json
Authorization: Bearer <AuthSessionId of an app session>
{
"widget": {
"type": "shortcut",
"title": {
"en": "My tasks",
"de": "Meine Aufgaben"
},
"subtitle": {
"en": "My open tasks",
"de": "Meine offenen Aufgaben"
},
"icon": {
"url": "https://example.com/tasks.svg"
},
"target": {
"url": "/tasks/tasks?filter=foo"
},
"query": {
"badge": {
"url": "/tasks/tasks?type=badge"
}
}
}
}
Folgende HTTP-Statuscodes können von der Dashboard-App zurückgegeben werden:
Statuscode | Name | Bedeutung |
---|---|---|
200 | OK | Registrierung oder Update des Widgets wurde erfolgreich durchgeführt. |
400 | Widget-Registrations-Objekt ist nicht gültig | |
401 | Not Authorized | Authentifizierung via App-Session ist notwendig |
403 | Forbidden | Registierung eines Widget ist nur innerhalb des eigenen Widgetnamensraums möglich. Bitte stelle sicher, dass der erste Teil der Widgetregistrierungs-ID dem Appnamen entspricht. |
429 | Too Many Requests | Rate-Limit wurde erreicht. |
5XX | Ein unerwarteter Fehler ist aufgetreten. |
Eigenschaften des Widget-Registrations-Objekt
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
widget | Objekt | Ja | Siehe Widget-Arten für den Aufbau |
permissions | Objekt | Nein | Siehe Berechtigungen für den Aufbau |
Unterstützte Widgetarten
Shortcut
Nutze dieses Widget, um dem Anwender einen Absprung in deine App zu ermöglichen.
Eigenschaften des Shortcut-Widget-Objekts
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
type | String | Ja | Wert für Absprungwidget "shortcut" |
title | Objekt | Ja | siehe Sprachenobjekt |
subtitle | Objekt | Nein | siehe Sprachenobjekt |
icon.url | String | Ja | URL zu einem Icon (SVG oder PNG) |
target.url | String | Ja | URL zur Zieladresse (Wenn die Zieladresse im alten Navigationsverhalten von d.ecs shell angezeigt werden soll, gib den Query-Parameter oldBehavior=true mit an.) |
query.badge.url | String | Nein | Siehe Query-Badge |
Aufbau des Query-Badge-Objekts
Folgendes Objekt muss unter der im Shortcut-Widget angegebenen query.badge.url
ausgeliefert werden.
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
badge.count | Integer | Ja | Ist der Wert größer 0, wird ein Badge am Widget angezeigt. Werte größer 99 werden mit 99+ dargestellt. |
List
Nutze dieses Widget, um ein Listenwidget anzuzeigen.
Eigenschaften des List-Widget-Objekts
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
type | String | Ja | Wert für Listenwidget "list" |
title | Objekt | Ja | siehe Sprachenobjekt |
subtitle | Objekt | Nein | siehe Sprachenobjekt |
icon.url | String | Ja | URL zu einem Icon (SVG oder PNG) |
target.url | String | Ja | URL zur Zieladresse (Wenn die Zieladresse in der alten Shell angezeigt werden soll, gib den Query-Parameter oldBehavior=true mit an.) |
query.content.url | String | Ja | Siehe Listeninhalt |
query.content.navigation | String | Nein | Navigation nimmt die Werte dapiNavigate , innerSupply oder outerSupply an. Bei einem unbekannten oder nicht festgelegtem Wert wird outerSupply als Fallback verwendet. |
footer.url | String | Nein | URL, die im Outer-Supply der Shell geöffnet wird. |
footer.label | Objekt | Nein | siehe Sprachenobjekt |
IFrame
Nutze dieses Widget, um externe Inhalte per IFrame anzuzeigen.
Eigenschaften des Iframe-Widget-Objekts
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
type | String | Ja | Wert für Iframewidget "iframe" |
title | Objekt | Ja | siehe Sprachenobjekt |
subtitle | Objekt | Nein | siehe Sprachenobjekt |
icon.url | String | Ja | URL zu einem Icon (SVG oder PNG) |
target.url | String | Ja | URL zur Zieladresse (Wenn die Zieladresse in der alten Shell angezeigt werden soll, gib den Query-Parameter oldBehavior=true mit an.) |
size.min_w | Integer | Nein | Minimale Breite des Widgets. Erlaubte Werte 2 ≤ x ≤ 18 |
size.min_h | Integer | Nein | Minimale Höhe des Widgets. Erlaubte Werte 2 ≤ x ≤ 16 |
source.url | String | Ja | URL zur HTML-Ressource, die im IFrame eingebunden werden soll. Die URL muss eine absolute Pfadreferenz sein, d.h. mit einem führenden Slash / anfangen (bspw. /foobar/ressource.html und nicht foobar/ressource.html). |
settings.url | String | Nein | URL zur einer Einstellungsseite für das Widget. Die URL muss eine absolute Pfadreferenz sein, d.h. mit einem führenden Slash / anfangen (bspw. /foobar/ressource.html und nicht foobar/ressource.html!) |
Eigenschaften des Sprachenobjekts
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
Sprach-Tag | String | Gib mindestens eine Sprache an. |
Listeninhalt
Deine App muss unter der bei query.content.url angegeben URL folgendes JSON-Objekt zurückliefern.
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
entries | Array | Ja | Enthält alle Listeneinträge. Für jeden Eintrag wird ein Eintragobjekt angegeben. |
line_variant | String | Nein | Legt die Anzahl der Zeilen pro Element fest. Wenn kein Wert festgelegt ist, wird eine Zeile angezeigt. Gib für zwei Zeilen den Wert twoline an. |
leading_element_type | String | Nein | Legt den Typ des vorranstehenden Elementes fest. Du kannst auswählen zwischen icon oder image . Wenn kein Wert angegeben wird, wird kein Element angezeigt. |
trailing_element_type | String | Nein | Legt den Typ des nachstehenden Elementes fest. Du kannst auswählen zwischen icon oder caption . Wenn kein Wert angegeben wird, wird kein Element angezeigt. |
Eintragobjekt
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
title.text | String | Ja | Enthält die Überschrift des Eintrags. |
title.color | String | Nein | Legt die Farbe der Überschrift fest. Gib den Farbwert bitte hexadezimal an, bspw. #112233 . |
subtitle.text | String | Nein | Enthält den Untertitel des Eintrags. |
subtitle.color | String | Nein | Legt die Farbe des Untertitels fest. Gib den Farbwert bitte hexadezimal an, bspw. #112233 . |
fontMode | String | Nein | Legt den Stil des Textes fest. Du kannst auswählen zwischen bold oder crossed-out . |
lead_element.material_icon | String | Nein | Legt das vorranstehende Icon fest. Der Wert muss ein gültiges Material Icon sein. Für die Verwendung eines Material-Icons, lege leading_element_type auf icon fest. |
lead_element.icon_color | String | Nein | Legt die Farbe des vorranstehenden Icons fest. Gib den Farbwert bitte hexadezimal an, bspw. #112233 . |
lead_element.image_url | String | Nein | URL zu einem Bild (SVG oder PNG). Für die Verwendung eines Bildes, leg leading_element_type auf image fest. |
lead_element.image_size | String | Nein | Legt die Größe des Bildes fest.Du kannst auswählen zwischen icon , avatar , medium oder large . |
trail_element.material_icon | String | Nein | Legt das nachstehende Icon fest. Der Wert muss ein gültiges Material Icon sein. Für die Verwendung eines Bildes, leg trailing_element_type auf icon fest. |
trail_element.icon_color | String | Nein | Legt die Farbe des nachstehenden Icons fest. Gib den Farbwert bitte hexadezimal an, bspw. #112233 . |
trail_element.caption | String | Nein | Enthält den Text, der am Ende des Eintrags angezeigt werden soll. Für die Verwendung eines Bildes, leg trailing_element_type auf caption fest. |
trail_element.caption_color | String | Nein | Legt die Farbe der Caption fest. Gib den Farbwert bitte hexadezimal an, bspw. #112233 . |
target.url | String | Nein | URL, zu der beim Klick auf den Eintrag weitergeleitet wird. |
Berechtigungen
Optional kannst du Berechtigungen für das Widget mitgeben. Ohne Angabe von Berechtigungen sind Widgets für alle authentifizierten Anwender sichtbar, ausgeschloßen sind externe Anwender.
Ob ein Anwender das Widget sehen darf, wird durch eine ODER-Verknüpfung geprüft, d.h. zur Laufzeit wird geprüft, ob der Anwender in "Gruppe A" ODER "Gruppe B" ODER "Gruppe C" ist.
Aufbau
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
groups | Array | Liste von Gruppenobjekten |
Gruppenobjekt
Eigenschaft | Typ | Pflicht | Beschreibung |
---|---|---|---|
value | String | Ja | UUID (case insensitiv) |
Beispiel
{
// ... Widget data
"permissions": {
"groups": [
{"value": "3E093BE5-CCCE-435D-99F8-544656B98681"}
]
}
}