Webactions¶
L’Endpoint /@webactions
à la racine du client/département permet de gérer les WebActions dans GEVER.
Contents
Ces Webactions peuvent par exemple être p.ex. être enregistrées pour ou par des applications tierces (pour autant que les droits nécéssaires soient donnés), Afin de permettre une intégration sans faille dans GEVER. Avec les Webactions, des liens et icônes peuvent être directement intégrés à certains endroits dans GEVER, par l’intermédiaire desquels les utilisateurs peuvent ensuite déclencher des actions dans l’application tierce.
Droits pour la gestion de Webactions¶
Afin de pouvoir gérer les Webactions via l’API REST, il faut disposer de la permission opengever.webactions: Manage own WebActions
. Par défaut, celle-ci est assignée au rôle WebActionManager
dans GEVER.
Les utilisateurs ayant ces droits peuvent créer de nouvelles Webactions et gérer celles qu’ils ont eux-mêmes créés (lister, modifier, effacer).
Créer (POST)¶
-
POST
/@webactions
¶ Créé une nouvelle Webaction ayant les données fournies dans le Body (JSON).
Request:
POST /@webactions HTTP/1.1 Accept: application/json Content-Type: application/json { "title": "Open in ExternalApp", "target_url": "http://example.org/endpoint", "display": "actions-menu", "mode": "self", "order": 0, "scope": "global" }
Response:
HTTP/1.1 201 Created Content-Type: application/json Location: http://demo.onegovgever.ch/@webactions/0 { "@id": "http://demo.onegovgever.ch/@webactions/0", "action_id": 0, "title": "Open in ExternalApp", "target_url": "http://example.org/endpoint", "display": "actions-menu", "mode": "self", "order": 0, "scope": "global", "created": "2019-12-31T17:45:00", "modified": "2019-12-31T17:45:00", "owner": "webaction.manager" }
Status Code | Description |
---|---|
201 Created | WebAction créée avec succès. Représentation dans Response-Body,
URL de l’action créée dans le Header Location . |
400 Bad Request | Erreur lors de la validation du schéma, ou autre erreur côté client. Details dans Response-Body. |
401 Unauthorized | Échec de l’authentification ou de l’autorisation |
Cet exemple décrit les données minimales pour créer une Webaction. Pour plus de détails concernant les champs supportés, voir Propriétés des Webactions.
La Response content la représentation de la Webaction dans le body, y-compris celles du serveur des métadonnées attribuées lors de la création (voir Métadonnées attribuées par le serveur).
Le Header Location
contient l’url canonique (préférée) de l’action qui vient d’être créée et qui peut être utilisée pour d’autres Requests.
Sélectionner (GET)¶
-
GET
/@webactions/
(action_id)¶ Sélectionne la Webaction avec l’
action_id
correspondante.Request:
GET /@webactions/0 HTTP/1.1 Accept: application/json
Response:
HTTP/1.1 200 OK Content-Type: application/json { "@id": "http://demo.onegovgever.ch/@webactions/0", "action_id": 0, "title": "Open in ExternalApp", "target_url": "http://example.org/endpoint", "display": "actions-menu", "mode": "self", "order": 0, "scope": "global", "created": "2019-12-31T17:45:00", "modified": "2019-12-31T17:45:00", "owner": "webaction.manager" }
Status Code | Description |
---|---|
200 OK | Répondu à la request avec succès |
401 Unauthorized | Echec de l’authentification ou autorisation |
404 Not Found | La Webaction avec l’id action_id n’a pas pu être trouvée. |
Lister (GET)¶
-
GET
/@webactions
¶ Liste les Webactions créées par cet utilisateur.
Request:
GET /@webactions HTTP/1.1 Accept: application/json
Response:
HTTP/1.1 200 OK Content-Type: application/json { "@id": "http://demo.onegovgever.ch/@webactions", "items": [ { "@id": "http://demo.onegovgever.ch/@webactions/0", "action_id": 0, "title": "Open in ExternalApp 0", "target_url": "http://example.org/endpoint0", "display": "actions-menu", "mode": "self", "order": 0, "scope": "global", "created": "2019-12-31T17:45:00", "modified": "2019-12-31T17:45:00", "owner": "some.user", }, { "@id": "http://demo.onegovgever.ch/@webactions/1", "action_id": 1, "title": "Open in ExternalApp 1", "target_url": "http://example.org/endpoint1", "display": "title-buttons", "mode": "self", "order": 0, "scope": "global", "created": "2019-12-31T17:46:00", "modified": "2019-12-31T17:46:00", "owner": "webaction.manager", } ] }
Status Code | Description |
---|---|
200 OK | Répondu à la request avec succès |
401 Unauthorized | Échec de l’authentification ou autorisation |
Modifier (PATCH)¶
-
PATCH
/@webactions/
(action_id)¶ Met a jour la Webaction identifiée par
action_id
avec les données fournies dans le Body (JSON).Request:
PATCH /@webactions/0 HTTP/1.1 Accept: application/json Content-Type: application/json { "title": "New title" }
Response:
HTTP/1.1 204 No Content Content-Type: application/json
Status Code | Description |
---|---|
204 No Content | Webaction mise à jour avec succès |
400 Bad Request | Erreur lors de la validation du Schema ou autre erreur côté côté client. Details dans Response-Body. |
401 Unauthorized | Echec de l’authentification ou autorisation |
404 Not Found | La Webaction avec l’id action_id n’a pas pu être trouvée. |
Effacer (DELETE)¶
-
DELETE
/@webactions/
(action_id)¶ Efface la Webaction identifiée par
action_id
.Request:
DELETE /@webactions/0 HTTP/1.1 Accept: application/json
Response:
HTTP/1.1 204 No Content Content-Type: application/json
Status Code | Description |
---|---|
204 No Content | Webaction effacée avec succès |
401 Unauthorized | Échec de l’authentification ou autorisation |
404 Not Found | La Webaction avec l’id action_id n’a pas pu être trouvée. |
Propriétés des Webactions¶
Ci-dessous, un listing de tous les champs supportés par les Webactions, y-compris avec leur type et description.
Champ | Typ | Description |
---|---|---|
title |
String, obligatoire | Titre de la Webaction |
unique_name |
String, optional | Nom unique de la Webaction contrôlé par son créateur (voir Nom unique ). |
target_url |
String, obligatoire | URL cible de l’Endpoint dans l’application tierce. |
enabled |
Boolean, optionnel | Peut être utilisé pour temporairement activer une Webaction, p. ex. lorsque aucune valeur n’est définie, l’action est tout de même traitée comme active |
icon_name |
String, obligatoire (selon cas) | Classe CSS Font-Awesome (p.ex. fa-folder ) |
icon_data |
String, obligatoire (selon cas) | Data URI avec Icône, Encodée en Base64. |
display |
Choice, obligatoire | Emplacement d’affichage de la Webaction |
mode |
Choice, obligatoire | Fenêtre-Cible: Détermine comment le lien sera ouvert. |
order |
Integer, 0-100, obligatoire | Assistance au tri pour définir l’ordre des Webactions enregistrées 0 indique la 1ère position, 100 bedeutet la dernière. |
scope |
Choice, obligatoire | définit pour quels objets la Webaction est disponible. Aussi voir scope. |
types |
Liste de Strings, optional | Liste de types de contenus d’objets pour lesquels une Webaction est
fondamentalement proposée. Exemple opengever.document.document ,
selon Listing des types de contenus dans la doc.
Lorsqu’aucun type n’est proposé, tous les types correspondent. |
groups |
Liste de Strings, optionnel | Liste des noms d’utilisateur (IDs, selon LDAP). Lorsque configuré, le user doit être membre dans au moins un de ces groupes pour que la Webaction soit proposée. |
permissions |
Liste de Strings, optional | liste de droits. Lorsuqe configuré, l’utilisateur nécessite au moins un droit pour que la Webaction soit proposée. Voir aussi Actions dépendantes des droits. |
comment |
String, optional | Texte libre pour commentaires. |
Fenêtre-Cible¶
Par l’intermédiaire du champ mode
, il est possible de définir la manière dont un lien est ouvert.
Valeurs autorisées:
Valeur | Description |
---|---|
self |
La cible est directement ouverte dans l’onglet de GEVER. Utile pour un sceénario de redirection où l’utilisateur retourne à sa position initiale à la fin. |
blank |
La cible est ouverte dans un nouvel onglet. |
modal |
Pas encore implémentée. La cible est ouverte dans une fenêtre modale |
Scope¶
Le champ scope
permet de définir pour quels objets une Webaction est proposée.
Valeur | Description |
---|---|
global |
La Webaction est fondamentallement prposée pour tous les objets. |
context |
Pas encore implémenté. |
recursive |
Pas encore implémenté. |
Métadonnées attribuées par le serveur¶
Champ | Type | Description |
---|---|---|
action_id |
Integer | Identifiant unique de la Webaction enregistrée par client |
created |
Timestamp | Zeitpunkt der Erstellung der Webaction |
modified |
Timestamp | Zeitpunkt der letzten Modifikation der Webaction |
owner |
String | Benutzer-ID des Erstellers der Webaction |
Emplacement d’affichage¶
Les Webactions peuvent être affichés en différents endroits.
Selon l’emplacement d’affichage, il est soit obligatoire, soit possible, soit impossible d’indiquer une icône. Cela est validé par l’API et un message d’erreur indique respectivement lorsque cette condition n’est pas remplie.
Une icône peut être donnée soit via son nom (icon_name
) ou une Data URI (Encodée en Base64, icon_data
). Au cas où une icône est donnée, seul un de ces deux champs peut être défini.
Les emplacements d’affichage suivants sont autorisés en tant que valeurs pour le champ display
:
Lieu | Icône | Description |
---|---|---|
action-buttons |
Optionnel | La Webaction est affichée dans la liste d’actions pour les tâches, documents et autres contenus. Cela fonctionne pour les types de contenus qui font appel à cette liste d’actions (dont les tâches, les transferts, les requêtes et les documents). |
actions-menu |
Aucune | La Webaction est affichée dans le menu “Actions”. |
add-menu |
Obligatoire | La Webaction est affichée dans le menu “Ajouter”. |
title-buttons |
Obligatoire | La Webaction est affichée en tant qu’icône à côté du titre. Le titre de la Webaction est utilisé comme Tooltip. |
user-menu |
Aucune | La Webaction est affichée dans le menu utilisateur. |
Actions dépendantes des droits¶
Les actions peuvent être limitées de telle manière qu’elles ne s’affichent que lorsqu’un utilisateur dispose d’au moins un des droits indiqués dans le contexte donné.
Les valeurs suivantes peuvent être utilisées pour le champ permissions
:
Droit | Description |
---|---|
edit |
L’utilisateur a le droit de modifier le contenu. |
add:TYPE |
L’utilisateur a le droit d’ajouter un nouveau contenu du type
spécifié. P.ex. add:opengever.dossier.businesscasedossier pour
l’ajout d’un dossier d’affaire. La liste actuelle
Liste de types est disponible dans
la documentation REST-API |
trash |
L’utilisateur peut déplacer des contenus vers la corbeille. |
untrash |
L’utilisateur peut restaurer des contenus depuis la corbeille. |
manage-security |
L’utilisateur peut assigner des rôles à d’autres utilisateurs. |
Nom unique¶
Le champ optionnel unique_name
permet d’assurer qu’une Webaction ne soit pas accidentellement créée plusieurs fois.
Ce champ peut être défini comem un string arbitraire par le client qui créé une Webaction, définissant clairement celle-ci du point de vue du client. Lorsque disponible, le serveur ne valide la Webaction plus que par l’existence de ce nom, et refuse autrement la création ou la mise à jour de la Webaction.
Au cas où un unique_name
est donnée mais existe déjà, le serveur retourne l’erreur``400 Bad Request``:
Response:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"type": "BadRequest",
"message": "[('unique_name', ActionAlreadyExists(\"An action with the unique_name u'existing-unique-name' already exists\",))]"
}