Class: controllerApi

controllerApi()

new controllerApi()

Controleur de la route /api/ (qui répond en json) pour les ressources
Toutes les routes contenant /public/ ignorent la session (cookies viré par varnish,
cela permet de mettre le résultat en cache et devrait être privilégié pour les ressources publiques)

Tout ce qui renvoie une ressource (ou un oid pour du post) accepte en queryString

  • format=(ref|ressource|full) ref renvoie une ref (toujours avec les _droits), full ajoute la résolution des id (auteurs, relations, groupes…)
  • droits=1 pour ajouter une propriété _droits (string contenant des lettres parmi RWD)
Source:

Methods

(inner) postRessourceExternalUpdate(context) → {*}

Demande d'update des arbres contenant une Ref

Parameters:
Name Type Description
context
Source:
Returns:
Type
*

DEL /api/public/:oid()

Denied (rerouting interne ressource => public si on a ni session ni token)

Source:

DEL /api/public/:origine/:idOrigine()

Denied (rerouting interne ressource => public si on a ni session ni token)

Source:

DEL /api/ressource/:origine/:idOrigine(:origine, :idOrigine)

Delete par id d'origine ou par rid, retourne reponseDeleted

Parameters:
Name Type Description
:origine string

ou baseId si c'était un rid

:idOrigine string

ou oid si c'était un rid

Source:

DELETE /api/ressource/:oid(oid)

Delete ressource par oid, retourne reponseDeleted

Parameters:
Name Type Description
oid Integer
Source:

GET /api/autocomplete/:pattern()

Retourne une liste de filtres de recherche qui matchent pattern
Retourne un objet {filters: searchFilter[]}, chaque élément du tableau étant searchFilter ({index: string, value: string|number})

Source:

GET /api/baseId?baseUrl=xxx()

Retourne la baseId d'une baseUrl (sesatheque ou sesalab)

Source:

GET /api/clone/:oid()

Clone une ressource de la bibli courante en mettant l'utilisateur courant auteur (si c'est éditable, sinon laisse les auteurs)
Cumule les actions createAlias et forkAlias, sauf pour les ressources non éditables où on laisse les auteurs intact (alors que createAlias met toujours l'utilisateur courant en auteur)
Utilisé par le bouton dupliquer, retourne la ressource

La route devrait être /api/ressource/clone/:oid, mais on a déjà une route qui match 2 arguments après ressource
(ressource/:origine/:idOrigine) donc on utilise l'action en premier

Source:

GET /api/createAlias/:baseId/:oid()

Crée un alias de ressource en mettant l'utilisateur courant en auteur (de l'alias)
(sinon il pourra pas le supprimer)
Ne deviendra une vraie ressource clonée que si on l'édite
Retourne Ref
Utiliser la méthode sesatheque-client:cloneItem

Source:

GET /api/deconnexion()

Déconnecte l'utilisateur courant

Source:

GET /api/forkAlias/:oid()

Fork un alias et retourne la ressource créée (qui conserve l'oid de l'alias)

Source:

GET /api/jstree?ref=xx[&children=1](ref, childrenopt)

Récupère un arbre au format jstree (cf le plugin arbre pour un exemple d'utilisation)

Parameters:
Name Type Attributes Description
ref string

Un oid ou origine/idOrigine

children string <optional>

Passer 1 pour ne récupérer que les enfants

Source:

GET /api/liste()

Récupère des résultats de recherche

Source:

GET /api/liste/auteurs(pids)

Récupère les ressources d'une liste de pids, classée par pid (avec prénom & nom du pid)
Retourne reponseListesByPid
Utilisé par sesathequeClient.getListeAuteurs()

Parameters:
Name Type Description
pids string

la liste de pids séparés par des virgules

Source:

GET /api/liste/perso()

Cherche parmi les ressources du user courant (qui doit être connecté avant)
Retourne reponseListe

Parameters:
Type Description
requeteListe
Source:

GET /api/public/:oid(:oid)

Retourne la ressource publique et publiée (sinon 404) d'après son oid
Retourne reponseListe

Parameters:
Name Type Description
:oid Integer
Source:

GET /api/public/:origine/:idOrigine(:origine, :idOrigine)

Retourne la ressource publique et publiée (sinon 404) d'après son id d'origine
Retourne reponseRessource

Parameters:
Name Type Description
:origine string
:idOrigine string
Source:

GET /api/public/getRid?id=xxx()

Retourne le rid d'une ressource (même privée, juste pour avoir la correspondance
origine/idOrigine => rid ou vérifier que l'id existe)

Source:

GET /api/ressource/:oid(oid)

Retourne la ressource d'après son oid (si on a les droit de lecture dessus)
Au format reponseRessource ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
oid Integer
Source:

GET /api/ressource/:origine/:idOrigine(:origine, :idOrigine)

Retourne la ressource d'après son id d'origine (si on a les droit de lecture dessus)
Au format reponseRessource ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
:origine string
:idOrigine string
Source:

OPTIONS /api/*()

Passe au suivant pour toutes les requetes OPTIONS (traitées par le middleware cors)

Source:

OPTIONS /api/ressource()

Pour le preflight, ajoute aux headers cors habituels le header
Access-Control-Allow-Methods:POST OPTIONS

Source:

OPTIONS /api/ressource/addRelations()

Pour le preflight, ajoute aux headers cors habituels le header
Access-Control-Allow-Methods:POST OPTIONS

Source:

POST /api/connexion(origine, token)

Loggue un user d'un sesalab localement, répond {success:true} ou {success:false, error:"message d'erreur"}
Dupliqué dans app/personne/controllerPersonne.js en html

Parameters:
Name Type Description
origine string

L'url de la racine du sesalab appelant (qui doit être déclaré dans le config de la sésathèque), avec préfixe http ou https

token string

Le token de sesalab qui servira à récupérer le user

Source:

POST /api/deferPost()

Forward un post vers un sesalab (au unload on ne peut pas poster en crossdomain,
on le fait en synchrone ici qui fera suivre)

Source:

POST /api/notifyError()

Une url pour envoyer des notifications d'erreur, à priori par un client
qui trouve des incohérences dans ce qu'on lui a envoyé

Source:

POST /api/ressource(Les)

Create / update une ressource
Prend un objet ressource, éventuellement incomplète mais oid ou origine/idOrigine sont obligatoires
Si le titre et la catégorie sont manquants, ou que l'on passe ?merge=1 à l'url, ça merge avec la ressource
existante que l'on update, sinon on écrase (ou on créé si elle n'existait pas)

Retourne reponseRessourceOid ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
Les object

propriétés de la ressource

Source:

POST /api/ressource/addRelations(oidopt, origineopt, idOrigineopt, refopt, relations)

Ajoute des relations à une ressource (pour identifier la ressource on accepte dans le post oid ou origine+idOrigine ou ref)
Retourne reponseRessourceOid ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Attributes Description
oid Integer <optional>
origine string <optional>
idOrigine string <optional>
ref string <optional>
relations Array
Source:

POST /api/ressource/externalUpdate()

Pour poster une Ref afin de mettre à jour tous les éventuels arbres qui l'utilisent

Source:

POST /api/ressource/registerListener()

Permet à une autre sésathèque d'ajouter un listener ici pour être prévenu sur une modif d'une de nos ressource

Source:

Type Definitions

reponseListe

Format de la réponse à une demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
success boolean
error string <optional>

Message d'erreur éventuel

liste Array.<Ref> | Array.<Ressource>

Une liste de Ref (ou de Ressource si on le demande)

Source:

reponseListesByPid

Format de la réponse à une demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
success boolean
error string <optional>

Message d'erreur éventuel

warnings Array.<string> <optional>

Éventuelle liste de warnings (auteurs inconnus)

pidXX object

Objet contenant les ressources de pidXX

Properties
Name Type Description
pid string

rappel de son pid

label string

prénom & nom

liste Array.<Ref>

Ses ressources (lisibles par le demandeur)

Source:

requeteArgFilter

Format d'un filtre à passer à une requete de demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
index string

Le nom de l'index

values Array <optional>

Une liste de valeurs à chercher (avec des ou), remontera toutes les ressource ayant l'index si omis

Source:

requeteListe

Arguments à donner à une requête qui renvoie une liste de ressources

Type:
  • Object
Properties:
Name Type Attributes Description
json string <optional>

Tous les paramètres qui suivent dans une chaîne json (GET seulement, ignoré en POST)

filters Array.<requeteArgFilter> <optional>

Les filtres à appliquer

orderBy string <optional>

Un nom d'index

order string <optional>

Préciser 'desc' si on veut l'ordre descendant

start Integer <optional>

offset

nb Integer <optional>

Nombre de résultats voulus (Cf settings.ressource.limites.listeNbDefault, à priori 25),
sera ramené à settings.ressource.limites.maxSql si supérieur (à priori 500)

format string <optional>

ref|full par défaut on remonte les ressource au format Ref

Source:

controllerApi()

new controllerApi()

Controleur de la route /api/ (qui répond en json) pour les ressources
Toutes les routes contenant /public/ ignorent la session (cookies viré par varnish,
cela permet de mettre le résultat en cache et devrait être privilégié pour les ressources publiques)

Tout ce qui renvoie une ressource (ou un oid pour du post) accepte en queryString

  • format=(ref|ressource|full) ref renvoie une ref (toujours avec les _droits), full ajoute la résolution des id (auteurs, relations, groupes…)
  • droits=1 pour ajouter une propriété _droits (string contenant des lettres parmi RWD)
Source:

Methods

(inner) postRessourceExternalUpdate(context) → {*}

Demande d'update des arbres contenant une Ref

Parameters:
Name Type Description
context
Source:
Returns:
Type
*

DEL /api/public/:oid()

Denied (rerouting interne ressource => public si on a ni session ni token)

Source:

DEL /api/public/:origine/:idOrigine()

Denied (rerouting interne ressource => public si on a ni session ni token)

Source:

DEL /api/ressource/:origine/:idOrigine(:origine, :idOrigine)

Delete par id d'origine ou par rid, retourne reponseDeleted

Parameters:
Name Type Description
:origine string

ou baseId si c'était un rid

:idOrigine string

ou oid si c'était un rid

Source:

DELETE /api/ressource/:oid(oid)

Delete ressource par oid, retourne reponseDeleted

Parameters:
Name Type Description
oid Integer
Source:

GET /api/autocomplete/:pattern()

Retourne une liste de filtres de recherche qui matchent pattern
Retourne un objet {filters: searchFilter[]}, chaque élément du tableau étant searchFilter ({index: string, value: string|number})

Source:

GET /api/baseId?baseUrl=xxx()

Retourne la baseId d'une baseUrl (sesatheque ou sesalab)

Source:

GET /api/clone/:oid()

Clone une ressource de la bibli courante en mettant l'utilisateur courant auteur (si c'est éditable, sinon laisse les auteurs)
Cumule les actions createAlias et forkAlias, sauf pour les ressources non éditables où on laisse les auteurs intact (alors que createAlias met toujours l'utilisateur courant en auteur)
Utilisé par le bouton dupliquer, retourne la ressource

La route devrait être /api/ressource/clone/:oid, mais on a déjà une route qui match 2 arguments après ressource
(ressource/:origine/:idOrigine) donc on utilise l'action en premier

Source:

GET /api/createAlias/:baseId/:oid()

Crée un alias de ressource en mettant l'utilisateur courant en auteur (de l'alias)
(sinon il pourra pas le supprimer)
Ne deviendra une vraie ressource clonée que si on l'édite
Retourne Ref
Utiliser la méthode sesatheque-client:cloneItem

Source:

GET /api/deconnexion()

Déconnecte l'utilisateur courant

Source:

GET /api/forkAlias/:oid()

Fork un alias et retourne la ressource créée (qui conserve l'oid de l'alias)

Source:

GET /api/jstree?ref=xx[&children=1](ref, childrenopt)

Récupère un arbre au format jstree (cf le plugin arbre pour un exemple d'utilisation)

Parameters:
Name Type Attributes Description
ref string

Un oid ou origine/idOrigine

children string <optional>

Passer 1 pour ne récupérer que les enfants

Source:

GET /api/liste()

Récupère des résultats de recherche

Source:

GET /api/liste/auteurs(pids)

Récupère les ressources d'une liste de pids, classée par pid (avec prénom & nom du pid)
Retourne reponseListesByPid
Utilisé par sesathequeClient.getListeAuteurs()

Parameters:
Name Type Description
pids string

la liste de pids séparés par des virgules

Source:

GET /api/liste/perso()

Cherche parmi les ressources du user courant (qui doit être connecté avant)
Retourne reponseListe

Parameters:
Type Description
requeteListe
Source:

GET /api/public/:oid(:oid)

Retourne la ressource publique et publiée (sinon 404) d'après son oid
Retourne reponseListe

Parameters:
Name Type Description
:oid Integer
Source:

GET /api/public/:origine/:idOrigine(:origine, :idOrigine)

Retourne la ressource publique et publiée (sinon 404) d'après son id d'origine
Retourne reponseRessource

Parameters:
Name Type Description
:origine string
:idOrigine string
Source:

GET /api/public/getRid?id=xxx()

Retourne le rid d'une ressource (même privée, juste pour avoir la correspondance
origine/idOrigine => rid ou vérifier que l'id existe)

Source:

GET /api/ressource/:oid(oid)

Retourne la ressource d'après son oid (si on a les droit de lecture dessus)
Au format reponseRessource ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
oid Integer
Source:

GET /api/ressource/:origine/:idOrigine(:origine, :idOrigine)

Retourne la ressource d'après son id d'origine (si on a les droit de lecture dessus)
Au format reponseRessource ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
:origine string
:idOrigine string
Source:

OPTIONS /api/*()

Passe au suivant pour toutes les requetes OPTIONS (traitées par le middleware cors)

Source:

OPTIONS /api/ressource()

Pour le preflight, ajoute aux headers cors habituels le header
Access-Control-Allow-Methods:POST OPTIONS

Source:

OPTIONS /api/ressource/addRelations()

Pour le preflight, ajoute aux headers cors habituels le header
Access-Control-Allow-Methods:POST OPTIONS

Source:

POST /api/connexion(origine, token)

Loggue un user d'un sesalab localement, répond {success:true} ou {success:false, error:"message d'erreur"}
Dupliqué dans app/personne/controllerPersonne.js en html

Parameters:
Name Type Description
origine string

L'url de la racine du sesalab appelant (qui doit être déclaré dans le config de la sésathèque), avec préfixe http ou https

token string

Le token de sesalab qui servira à récupérer le user

Source:

POST /api/deferPost()

Forward un post vers un sesalab (au unload on ne peut pas poster en crossdomain,
on le fait en synchrone ici qui fera suivre)

Source:

POST /api/notifyError()

Une url pour envoyer des notifications d'erreur, à priori par un client
qui trouve des incohérences dans ce qu'on lui a envoyé

Source:

POST /api/ressource(Les)

Create / update une ressource
Prend un objet ressource, éventuellement incomplète mais oid ou origine/idOrigine sont obligatoires
Si le titre et la catégorie sont manquants, ou que l'on passe ?merge=1 à l'url, ça merge avec la ressource
existante que l'on update, sinon on écrase (ou on créé si elle n'existait pas)

Retourne reponseRessourceOid ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Description
Les object

propriétés de la ressource

Source:

POST /api/ressource/addRelations(oidopt, origineopt, idOrigineopt, refopt, relations)

Ajoute des relations à une ressource (pour identifier la ressource on accepte dans le post oid ou origine+idOrigine ou ref)
Retourne reponseRessourceOid ou Ref si on le réclame avec ?format=ref

Parameters:
Name Type Attributes Description
oid Integer <optional>
origine string <optional>
idOrigine string <optional>
ref string <optional>
relations Array
Source:

POST /api/ressource/externalUpdate()

Pour poster une Ref afin de mettre à jour tous les éventuels arbres qui l'utilisent

Source:

POST /api/ressource/registerListener()

Permet à une autre sésathèque d'ajouter un listener ici pour être prévenu sur une modif d'une de nos ressource

Source:

Type Definitions

reponseListe

Format de la réponse à une demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
success boolean
error string <optional>

Message d'erreur éventuel

liste Array.<Ref> | Array.<Ressource>

Une liste de Ref (ou de Ressource si on le demande)

Source:

reponseListesByPid

Format de la réponse à une demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
success boolean
error string <optional>

Message d'erreur éventuel

warnings Array.<string> <optional>

Éventuelle liste de warnings (auteurs inconnus)

pidXX object

Objet contenant les ressources de pidXX

Properties
Name Type Description
pid string

rappel de son pid

label string

prénom & nom

liste Array.<Ref>

Ses ressources (lisibles par le demandeur)

Source:

requeteArgFilter

Format d'un filtre à passer à une requete de demande de liste

Type:
  • Object
Properties:
Name Type Attributes Description
index string

Le nom de l'index

values Array <optional>

Une liste de valeurs à chercher (avec des ou), remontera toutes les ressource ayant l'index si omis

Source:

requeteListe

Arguments à donner à une requête qui renvoie une liste de ressources

Type:
  • Object
Properties:
Name Type Attributes Description
json string <optional>

Tous les paramètres qui suivent dans une chaîne json (GET seulement, ignoré en POST)

filters Array.<requeteArgFilter> <optional>

Les filtres à appliquer

orderBy string <optional>

Un nom d'index

order string <optional>

Préciser 'desc' si on veut l'ordre descendant

start Integer <optional>

offset

nb Integer <optional>

Nombre de résultats voulus (Cf settings.ressource.limites.listeNbDefault, à priori 25),
sera ramené à settings.ressource.limites.maxSql si supérieur (à priori 500)

format string <optional>

ref|full par défaut on remonte les ressource au format Ref

Source: