Difference: CdsLoginInternalApi (1 vs. 14)

Revision 142017-02-22 - PascalWassong

 
META TOPICPARENT name="CdsLoginProjet"

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par CdsLoginApi.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments obligatoires : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Le 3e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Le 2e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument usernames est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cette valeur est stockée dans le champ lastLoginIp de la table users.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. L'argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}
Added:
>
>
Cette commande est différente de newEmail, qui permet à un utilisateur de demander le changement de son adresse mail.
 

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

Added:
>
>

newEmail

Cette commande lance une demande de changement de mail pour un utilisateur. Elle prend en arguments username pour identifier l'utilisateur concerné, newEmail qui est la nouvelle adresse mail demandée, et password qui doit être le mot de passe correct de l'utilisateur. Un mail d'information est envoyé à l'adresse email courante, et un mail de confirmation de changement est envoyé à la nouvelle adresse. L'adresse actuelle est celle qui reste valide tant que la confirmation n'a pas eu lieu. La demande est effacée dans la nuit qui suit les 24h de la demande. La confirmation se fait avec la commande confirmEmail. Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

Cette commande est différente de la commande updateMail, qui permet de changer une adresse mail unilatéralement, par un administrateur.

confirmEmail

Cette commande permet la confirmation d'un changement d'email. Elle prend comme seul argument key, qui est la clé qui a été envoyée dans le message de confirmation, qui a été envoyé lors de la commande newEmail. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

 

-- PascalWassong - 2017-01-10

META TOPICMOVED by="PascalWassong" date="1485438373" from="Developpeur.ProjetCDSLoginInternal" to="Developpeur.CdsLoginInternalApi"

Revision 132017-02-22 - PascalWassong

 
META TOPICPARENT name="CdsLoginProjet"

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par CdsLoginApi.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Changed:
<
<
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments obligatoires : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Le 3e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
>
>
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments obligatoires : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Le 3e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
 
{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Changed:
<
<
Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Le 2e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Exemple de résultat :
>
>
Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Le 2e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Exemple de résultat :
 
{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Changed:
<
<
Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :
>
>
Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument usernames est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :
 
{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cette valeur est stockée dans le champ lastLoginIp de la table users.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. L'argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

META TOPICMOVED by="PascalWassong" date="1485438373" from="Developpeur.ProjetCDSLoginInternal" to="Developpeur.CdsLoginInternalApi"

Revision 122017-02-21 - PascalWassong

 
META TOPICPARENT name="CdsLoginProjet"

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par CdsLoginApi.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Changed:
<
<
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
>
>
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments obligatoires : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Le 3e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
 
{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Changed:
<
<
Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :
>
>
Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Le 2e argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Exemple de résultat :
 
{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
Changed:
<
<
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
>
>
ip Non L'adresse IP de la requête Cette valeur est stockée dans le champ lastLoginIp de la table users.
 
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Changed:
<
<
Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :
>
>
Cette commande permet de créer un utilisateur anonyme. L'argument ip est optionel, et permet de conserver la dernière adresse IP de l'utilisateur, dans le champ lastLoginIp de la table users. Le userId de l'utilisateur créé est rendu. Exemple de résultat :
 
{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

META TOPICMOVED by="PascalWassong" date="1485438373" from="Developpeur.ProjetCDSLoginInternal" to="Developpeur.CdsLoginInternalApi"

Revision 112017-01-26 - PascalWassong

Changed:
<
<
META TOPICPARENT name="WebHome"
>
>
META TOPICPARENT name="CdsLoginProjet"
 

API du serveur CDSLoginInternal

Changed:
<
<
Les points d'entrées de ce projet sont essentiellement utilisés par ProjetCDSLogin.
>
>
Les points d'entrées de ce projet sont essentiellement utilisés par CdsLoginApi.
 

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

Added:
>
>
META TOPICMOVED by="PascalWassong" date="1485438373" from="Developpeur.ProjetCDSLoginInternal" to="Developpeur.CdsLoginInternalApi"

Revision 102017-01-25 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par ProjetCDSLogin.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Changed:
<
<
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
>
>
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est soit le nom de l'utilisateur, soit son mail et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
 
{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Changed:
<
<
Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :
>
>
Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur, c'est soit son username, soit son email. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :
 
{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

Revision 92017-01-25 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Les points d'entrées de ce projet sont essentiellement utilisés par ProjetCDSLogin.

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Changed:
<
<
Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :
>
>
Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré, ce qui fait un trou de sécurité. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :
 
{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

Revision 82017-01-17 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Added:
>
>
Les points d'entrées de ce projet sont essentiellement utilisés par ProjetCDSLogin.
 

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

Deleted:
<
<

Revision 72017-01-13 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :

{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

getUser.

Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :

{"cdsLogin": {"user": {
    "lastLogin": "1472572409342",
    "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy",
    "preferences": {"preference": [
        {
            "key": "portal.imageviewer",
            "content": "aladinPreviewer"
        },
        {
            "key": "user.isdatapublic",
            "content": "no"
        },
        {"key": "user.affiliation"},
        {
            "key": "user.firstname",
            "content": "firstname"
        },
        {
            "key": "portal.files.quota",
            "content": "500"
        },
        {"key": "user.researchdomain"},
        {
            "key": "user.lastname",
            "content": "lastname"
        },
        {
            "key": "portal.islinksnewwindow",
            "content": "no"
        },
        {
            "key": "portal.files.used",
            "content": "0"
        }
    ]},
    "role": "user",
    "creationDate": "1457520518948",
    "email": "myNiceUsername@astro.unistra.fr",
    "username": "myNiceUsername",
    "status": "0"
}}}

isXmatchMail

Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :

{"cdsLogin": {"returnedValue": "no"}}

-- PascalWassong - 2017-01-10

Revision 62017-01-13 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :

{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Changed:
<
<
Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré. Exemple de résultat :
>
>
Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré. Exemple de résultat, lorsque la base ne contient que 2 utilisateurs :
{"items":[{"mId":"$2a$10$xlua7GGJ8qBjLz7F0E1e7.LD66xZ4tbGVCrMjy./8uArZ3uaUEs9","mLastLoginAsLong":1353071061842,"mCreationDateAsLong":1353071061484,"mAnonyme":true,"mUsername":"anonymous","mPassword":"$2a$10$DP8/n79Lde7l9axlvg89mufkDBhMnwugsJj92mh5RVde0CIkWm32.","mEmail":"","mRole":"user","mPreferences":{"user_isdatapublic":"no","portal_files_quota":"100","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"16 nov. 2012 14:04:21","mStatus":0},{"mId":"$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy","mLastLoginAsLong":1472572409342,"mCreationDateAsLong":1457520518948,"mAnonyme":false,"mUsername":"myNiceUsername","mPassword":"$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy","mEmail":"myNiceUsername@astro.unistra.fr","mRole":"user","mPreferences":{"portal_imageviewer":"aladinPreviewer","user_researchdomain":"","user_isdatapublic":"no","user_firstname":"firstname","portal_islinksnewwindow":"no","user_lastname":"lastname","portal_files_quota":"500","user_affiliation":"","portal_files_used":"0"},"mAdminInfo":{},"mIsDeleteAllowed":true,"mCreationDate":"9 mars 2016 11:48:38","mStatus":0}]}

Deleted:
<
<
-

 
Changed:
<
<

getUser

>
>

getUser.

 
Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de récupérer toutes les informations d'un seul utilisateur. L'argument requesterId est obligatoire mais complètement ignoré. L'argument username est obligatoire et donne le nom de l'utilisateur pour lequel on veut toutes les données. Exemple de résultat :
{"cdsLogin": {"user": {

Added:
>
>
"lastLogin": "1472572409342", "password": "$2a$10$Dp.CQ5ZcBsZm9..5oPUJQepqfZQo0tnnyXApY.x6H42M7LDzAhIzy", "preferences": {"preference": [ {
"key"
"portal.imageviewer",
"content"
"aladinPreviewer" }, {
"key"
"user.isdatapublic",
"content"
"no" }, {"key": "user.affiliation"}, {
"key"
"user.firstname",
"content"
"firstname" }, {
"key"
"portal.files.quota",
"content"
"500" }, {"key": "user.researchdomain"}, {
"key"
"user.lastname",
"content"
"lastname" }, {
"key"
"portal.islinksnewwindow",
"content"
"no" }, {
"key"
"portal.files.used",
"content"
"0" } ]}, "role": "user", "creationDate": "1457520518948", "email": "myNiceUsername@astro.unistra.fr", "username": "myNiceUsername", "status": "0"
}}}
 

isXmatchMail

Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de savoir si la préférence pour recevoir les mails xmatch est mise à true. Elle prend en argument soit username, soit userId, pour identifier l'utilisateur. Si les 2 sont donnés, c'est la valeur de username qui est utilisée. Exemple de résultat :
{"cdsLogin": {"returnedValue": "no"}}

 

-- PascalWassong - 2017-01-10

Added:
>
>

Revision 52017-01-13 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :

{"cdsLogin": {"isPasswordUpdated": "true"}}

updateMail

Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :

{"cdsLogin": {"isEmailUpdated": "true"}}

updateRole

Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :

{"cdsLogin": {"isRoleUpdated": "true"}}

Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.

updateStatus

Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :

{"cdsLogin": {"isStatusUpdated": "true"}}

Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.

updatePreferences

Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :

{"cdsLogin": {"isPreferencesUpdated": "true"}}

setDeleteAllowed

Changed:
<
<
Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false.
>
>
Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false. Exemple de résultat :
Deleted:
<
<
Exemple de résultat :
 
{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

users

Added:
>
>
Cette commande permet d'obtenir la liste complète de tous les utilisateurs. Elle a un seul argument, requesterId, qui est obligatoire mais complètement ignoré.
 Exemple de résultat :
-

getUser

Exemple de résultat :

-

isXmatchMail

Exemple de résultat :

-

-- PascalWassong - 2017-01-10

Deleted:
<
<

Revision 42017-01-12 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :

{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Changed:
<
<
Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est le userId avec des privilèges d'administrateur. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour changer le mot de passe. Exemple de résultat :
-

>
>
Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur, soit le userId de l'utilisateur pour lequel on change le mot de passe. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour lequel changer le mot de passe. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le mot de passe est changé. Exemple de résultat :
{"cdsLogin": {"isPasswordUpdated": "true"}}

 

updateMail

Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de modifier l'adresse mail d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument email est le nouveau email qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le email. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le email est changé. Exemple de résultat :
{"cdsLogin": {"isEmailUpdated": "true"}}

 

updateRole

Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de modifier le rôle d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument role est le nouveau rôle qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le rôle est changé. Exemple de résultat :
{"cdsLogin": {"isRoleUpdated": "true"}}

 
Added:
>
>
Les 3 rôles connus sont "user", "admin" et "correcteur", mais il est possible de mettre n'importe quoi. Le rôle "admin" est pour ceux qui ont des privilèges d'administrateur.
 

updateStatus

Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de modifier le statut d'un utilisateur. L'argument requesterId est soit un userId avec des privilèges d'administrateur. L'argument status est le nouveau statut qui sera mis en place. L'argument username est le nom identifiant l'utilisateur pour lequel changer le rôle. Il est optionnel, s'il n'existe pas, c'est l'utilisateur requesterId dont le statut est changé. Exemple de résultat :
{"cdsLogin": {"isStatusUpdated": "true"}}

 
Added:
>
>
Il y a 2 valeurs possibles pour le statut : 0, qui signifie OPEN et 1, qui veut dire CLOSED.
 

updatePreferences

Changed:
<
<
Exemple de résultat :
-

>
>
Cette commande permet de modifier les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. L'argument requesterId est le seul qui soit obligatoire, et doit soit être le userId d'un utilisateur qui a les privilèges d'administrateur, soit l'utilisateur pour lequel on veut modifier les préférences. Il faut aussi identifier l'utilisateur pour qui on veut changer les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les préférences de l'utilisateur requesterId qui sont modifiées. La liste des préférences est donnés sous la forme cdslogin:key=value. key est le nom de la préférence (elle sera mise toute en minuscule), value est la valeur de la préférence. Il ne faut pas mettre de double point : dans la key. Attention, toutes les préférences existantes sont perdues. Les nouvelles préférences remplacent complètement les anciennes. Exemple de résultat :
{"cdsLogin": {"isPreferencesUpdated": "true"}}

 

setDeleteAllowed

Added:
>
>
Cette commande permet de changer la valeur de l'attribut isDeleteAllowed pour un utilisateur. L'argument userId identifie l'utilisateur et isAllowed donne la nouvelle valeur, qui doit être soit true, soit false.
 Exemple de résultat :
Changed:
<
<
-

>
>
{"cdsLogin": {"isDeleteAllowedUpdated": "true"}}

 

users

Exemple de résultat :

-

getUser

Exemple de résultat :

-

isXmatchMail

Exemple de résultat :

-

-- PascalWassong - 2017-01-10

Revision 32017-01-11 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.

Commandes reconnues

login

Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :

{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}

username

Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :

{"cdsLogin": {"username": "myNiceUsername"}}

data

Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"
}}}

email

Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :

{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

preferences

Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :

{"cdsLogin": {"preferences": {"preference": [
    {
        "key": "portal.imageviewer",
        "content": "aladinPreviewer"
    },
    {
        "key": "user.isdatapublic",
        "content": "no"
    },
    {"key": "user.affiliation"},
    {
        "key": "user.firstname",
        "content": "MyFirstname"
    },
    {
        "key": "portal.files.quota",
        "content": "500"
    },
    {"key": "user.researchdomain"},
    {
        "key": "user.lastname",
        "content": "MyName"
    },
    {
        "key": "portal.islinksnewwindow",
        "content": "no"
    },
    {
        "key": "portal.files.used",
        "content": "0"
    }
]}}}

prettyNames

Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :

{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}

Exemple avec plusieurs résultats :

{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}

createUser

Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :

nom Obligatoire ? Valeur par défaut Commentaire
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".

L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.

Example de résulat :

{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}

Et quelques cas d'erreur :

{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}

activate

Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :

{"cdsLogin": {"isUserActivated": "true"}}

askForNewPassword

Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :

{"cdsLogin": {"mailSent": "true"}}

resetPassword

Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :

{"cdsLogin": {"isPasswordReseted": "true"}}

createAnonymous

Changed:
<
<
Exemple de résultat :
>
>
Cette commande permet de créer un utilisateur anonyme. Elle ne prend aucun argument. Le userId de l'utilisateur créé est rendu. Exemple de résultat :
 
{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}

updatePassword

Changed:
<
<
Exemple de résultat :
>
>
Cette commande permet de modifier le mot de passe d'un utilisateur. L'argument requesterId est le userId avec des privilèges d'administrateur. L'argument oldPassword est le mot de passe actuel, et est utilisé pour vérifier qu'il est correct avant de permettre la modification. L'argument newPassword est le nouveau mot de passe qui sera mis en place. Il doit respecter les mêmes contraintes que lors de la création d'un utilisateur, donc avoir une longueur entre 7 et 29 (inclus). L'argument username est le nom identifiant l'utilisateur pour changer le mot de passe. Exemple de résultat :
Added:
>
>
-
 

updateMail

Exemple de résultat :

Added:
>
>
-
 

updateRole

Exemple de résultat :

Added:
>
>
-
 

updateStatus

Exemple de résultat :

Added:
>
>
-
 

updatePreferences

Exemple de résultat :

Added:
>
>
-
 

setDeleteAllowed

Exemple de résultat :

Added:
>
>
-
 

users

Exemple de résultat :

Added:
>
>
-
 

getUser

Exemple de résultat :

Added:
>
>
-
 

isXmatchMail

Exemple de résultat :

Added:
>
>
-
  -- PascalWassong - 2017-01-10

Revision 22017-01-10 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Changed:
<
<
Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json.
>
>
Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json. Tous les exemples de résultat ci-dessous sont au format json.
 

Commandes reconnues

login

Added:
>
>
Cette commande permet à un utilisateur de s'identifier. La commande prend 2 arguments : username est le nom de l'utilisateur et password est son mot de passe. Si l'utilisateur existe et que le mot de passe est correct, le userId de l'utilisateur est rendu sous la forme :
{"cdsLogin": {"userId": "$2a$10$mG9iCo3rz4WNzKWrYA3Kqe.02yHaGzhDVIbT.r9tyNdWQObiIIOoy"}}
 

username

Deleted:
<
<

data

email

preferences

prettynames

createuser

activate

askfornewpassword

resetpassword

createanonymous

updatepassword

updatemail

updaterole

updatestatus

updatepreferences

setdeleteallowed

users

getuser

isxmatchmail

 
Changed:
<
<

tables

>
>
Cette commande rend le username à partir d'un userId. L'argument userId est nécessaire. Exemple de résultat :
Added:
>
>
{"cdsLogin": {"username": "myNiceUsername"}}
 
Changed:
<
<
Cette commande permet de récupérer la liste de toutes les VOTable que l'utilisateur a uploadé. Voici un exemple de réponse au format json.
>
>

data

Deleted:
<
<
{"cdsStore": {"tables": [
    {
        "date": "1473263765224",
        "fileName": "A2744CL-1",
        "metadata": {
            "coordinates": {
                "decUnit": "deg",
                "dec": "DEC",
                "raUnit": "deg",
                "errorType": "noError",
                "ra": "RA"
            },
            "comment": "bla bla bla"
        },
        "size": "6018",
        "nbRows": "1"
    },
    {
        "date": "1474374997438",
        "fileName": "csv-with-header.csv",
        "metadata": {
            "coordinates": {},
            "comment": "csv hide"
        },
        "size": "941",
        "nbRows": "3"
    }
]}}
 
Changed:
<
<
S'il n'y a qu'une seule table, la valeur de tables n'est pas un tableau, mais un objet. Voici un exemple :
{"cdsStore": {"tables": {
    "date": "1474374997438",
    "fileName": "csv-with-header.csv",
    "metadata": {
        "coordinates": {},
        "comment": "csv hide"

>
>
Cette commande renvoie des informations de base à propos d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les données. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :
{"cdsLogin": {"data": {
    "lastLogin": "Tue Jan 10 14:31:33 CET 2017",
    "role": "user",
    "creationDate": "Wed Mar 09 11:48:38 CET 2016",
    "username": "myNiceUsername",
    "eMail": "myNiceUsername@astro.unistra.fr"

Deleted:
<
<
}, "size": "941", "nbRows": "3"
 }}}
Changed:
<
<
S'il n'y a aucune table, un objet vide est rendu :
>
>

email

Deleted:
<
<
{"cdsStore": {}}
 
Changed:
<
<
Dans le navigateur, pour obtenir systématiquement un tableau, vous pouvez écrire :
[].concat(cdsStore.tables);
>
>
Cette commande renvoie l'email d'un utilisateur. 2 arguments sont possibles pour identifier l'utilisateur : username ou userId. Si username a une valeur, c'est elle qui est utilisée et la valeur de userId est ignorée. Exemple de résultat :
{"cdsLogin": {"email": "myNiceUsername@astro.unistra.fr"}}

Added:
>
>
 
Changed:
<
<
L'objet coordinates existent toujours dans les métadatas, même s'il est vide. Cf l'exemple ci-dessus concernant le fichier csv-with-header.csv.
>
>

preferences

Deleted:
<
<

deleteTables

 
Changed:
<
<
Cette commande permet de supprimer une table qui a été uploadé. La commande prend un seul argument, tables, qui contient la liste des noms des tables à supprimer, séparées par des slash ( / ).Ce caractère fait parti des caractères qui ne peuvent pas être dans le nom d'un fichier. Voir les commandes upload, uploadFromUrl et rename
>
>
Cette commande renvoie les préférences d'un utilisateur. Son accès est restreint à des administrateurs, qui ont leur rôle mis à admin. Les arguments sont requesterId, qui doit être le userId d'un utilisateur qui a les privilèges d'administrateur. Il faut aussi identifier l'utilisateur pour qui on veut les préférences. 2 arguments sont utilisables pour ça : username et userId. Si username est donné, userId est inutilisé. Si username n'est pas donné, alors userId est utilisé. Si aucun des 2 n'est donné, alors c'est les données de l'utilisateur requesterId qui sont fournies. Exemple de résultat :
{"cdsLogin": {"preferences": {"preference": [

Deleted:
<
<
La valeur rendue par la commande est toujours la suivante, même si on a demandé la suppression d'une table inexistante.
{"cdsStore": {}}

downloadTable

Cette commande permet de récupérer une table. Cette commande utilise l'argument général outputFormat. Le paramètre filename est obligatoire, et donne le nom du fichier à récupérer. En sortie, on récupère la VOTable dans le format qui a été spécifié par outputFormat.

updateTableComment

Cette commande permet de modifier le commentaire associé à une table. Le commentaire est stocké dans les métadonnées qui sont renvoyées lorsqu'on récupère la liste de toutes les tables.

Les arguments sont filename et comment. Ils sont obligatoires.

En résultat, la commande renvoie dans l'objet cdsPortal, un sous objet nommé commentUpdated, qui a comme valeur le nouveau commentaire.

updateCoordinatesMetadata

Cette commande permet de mettre à jour les informations sur les colonnes RA et DEC de la VOTable, ainsi que sur les colonnes d'erreurs associées. La liste des paramètres reconnus est

ra Nom de la colonne RA
dec Nom de la colonne DEC
raUnit Unité de la colonne RA. Valeurs possibles : deg ou sexa
decUnit Unité de la colonne DEC. Valeurs possible : deg ou sexa
errorType Type d'erreur, les valeurs possibles sont : noError, circular, polarEllipse, orientedEllipse, covarianceEllipse, correlationEllipse
raDecErr Colonne d'erreur si errorType vaut circular
raDecErrUnit Unité pour la colonne d'erreur dans le cas circular. Valeurs possibles : mas, arcsec, arcmin
raErr Colonne d'erreur si errorType vaut polarEllipse, covarianceEllipse ou correlationEllipse
raErrUnit Unité pour la colonne d'erreur dans les cas polarEllipse, covarianceEllipse ou correlationEllipse. Valeurs possibles : mas, arcsec, arcmin
decErr Colonne d'erreur si errorType vaut polarEllipse, covarianceEllipse ou correlationEllipse
decErrUnit Unité pour la colonne d'erreur dans les cas polarEllipse, covarianceEllipse ou correlationEllipse. Valeurs possibles : mas, arcsec, arcmin
minAxis Colonne d'erreur si errorType vaut orientedEllipse
minAxisUnit Unité pour la colonne d'erreur dans le cas orientedEllipse. Valeurs possibles : mas, arcsec, arcmin
majAxis Colonne d'erreur si errorType vaut orientedEllipse
majAxisUnit Unité pour la colonne d'erreur dans le cas orientedEllipse. Valeurs possibles : mas, arcsec, arcmin
posAngle Colonne contenant l'angle si errorType vaut orientedEllipse
posAngleUnit Unit pour la colonne d'angle si errorType vaut orientedEllipse, Valeurs possibles : deg, arc
covariance Colonne contenant la covariance dans le cas covarianceEllipse
correlation Colonne contenant la corrélation dans le cas correlationEllipse

Lors de la mise à jour de ces informations, aucune vérification n'est faite côté serveur sur les valeurs. Ces informations sont utilisées par le serveur de Xmatch.

tableMetadata

Cette commande permet de récupérer les informations concernant les colonnes d'une table. Le paramètre filename, indiquant pour quelle VOTable on veut le résultat, est obligatoire. Le résultat donne la liste de toutes les colonnes de la table, avec l'ucd de la colonne. Un exemple de résultat :

{"cdsStore": {"columns": [

  {
Changed:
<
<
"ucd": "meta.id;meta.main", "name": "ID"
>
>
"key": "portal.imageviewer", "content": "aladinPreviewer"
  }, {
Changed:
<
<
"ucd": "pos.eq.ra;meta.main", "name": "RA"
>
>
"key": "user.isdatapublic", "content": "no"
  },
Added:
>
>
{"key": "user.affiliation"},
  {
Changed:
<
<
"ucd": "pos.eq.dec;meta.main", "name": "DEC"
>
>
"key": "user.firstname", "content": "MyFirstname"
  }, {
Changed:
<
<
"ucd": "phot.mag;em.opt.B", "name": "MAG_B435"
>
>
"key": "portal.files.quota", "content": "500"
  },
Added:
>
>
{"key": "user.researchdomain"},
  {
Changed:
<
<
"ucd": "phot.mag;em.opt.V", "name": "MAG_V606"
>
>
"key": "user.lastname", "content": "MyName"
  }, {
Changed:
<
<
"ucd": "stat.error;phot.mag;em.opt.B", "name": "MAGERR_B435"
>
>
"key": "portal.islinksnewwindow", "content": "no"
  }, {
Changed:
<
<
"ucd": "stat.error;phot.mag;em.opt.V", "name": "MAGERR_V606"
>
>
"key": "portal.files.used", "content": "0"
  }
Changed:
<
<
]}}
>
>
]}}}
 
Changed:
<
<
Tout comme pour les tables, s'il n'y a qu'une seule colonne, la valeur de columns est un objet, pas un tableau.
>
>

prettyNames

Deleted:
<
<

rename

 
Changed:
<
<
Cette commande permet de renommer un fichier. Les paramètres obligatoires (forcément en minuscule) sont :
>
>
Cette commande renvoie le nom complet des utilisateurs donnés en argument. L'argument username est nécessaire et est une liste de username séparé par des virgules ,. Les utilisateurs inexistants sont simplement ignorés. Un utilisateur doit aussi avoir autorisé l'affichage public de ses données. Cela se fait en mettant la préférence user.ispublicdata à autre chose que no. Si ce n'est pas le cas, cet utilisateur est ignoré. Exemple de résultat :
Added:
>
>
{"cdsLogin": {"prettyNames": {"prettyName": {
    "content": "MyFirstname MyName",
    "username": "myNiceUsername"
}}}}
 
Changed:
<
<
filename : le nom actuel du fichier. Le nom est transformé, s'il contient des caractères interdits. Voir la commande upload pour plus de détails.
>
>
Exemple avec plusieurs résultats :
Added:
>
>
{"cdsLogin": {"prettyNames": {"prettyName": [
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    },
    {
        "content": "MyFirstname MyName",
        "username": "myNiceUsername"
    }
]}}}
 
Changed:
<
<
newname : le nouveau nom du fichier. Il ne faut pas qu'un autre fichier avec le nouveau nom existe, sinon une erreur est rendue.
>
>

createUser

 
Changed:
<
<
En cas de succès, le résultat est :
{"cdsStore": {"rename": "ok"}} 
>
>
Cette commande permet de créer un nouvel utilisateur. Elle peut prendre de nombreux arguments :
nom Obligatoire ? Valeur par défaut Commentaire
Added:
>
>
username Oui - La longueur doit être entre 4 et 29 (inclus). Aucun utilisateur avec ce nom ne doit déjà exister. Si la valeur est "anonymous", alors un compte anonyme est créé.
password Oui - La longueur doit être entre 7 et 29 (inclus). Aucun utilisateur avec ce email ne doit déjà exister.
email Oui - Un mail de confirmation est envoyé à cette adresse.
firstname Non null -
lastname Non null -
affiliation Non null -
researchDomain Non null -
ip Non L'adresse IP de la requête Cet argument est ignoré. Aucune utilisation n'en est faite.
isDataPublic Non no Il faut que la valeur soit explicitement "yes" pour que ce ne soit pas "no".
 
Changed:
<
<

addThing

>
>
L'utilisateur est dans un statut "not-activated". Il doit utiliser le lien qui est dans son email, utilisant la commande activace, pour activer son compte. Si le compte n'est pas activé au bout de 72h, il est effacé dans la nuit qui suit.
 
Changed:
<
<
Cette commande permet d'ajouter un objet JSON. Le contenu de l'objet est absolument libre. Les paramètres obligatoires sont :
>
>
Example de résulat :
Added:
>
>
{"cdsLogin": {
    "created": "true",
    "username": "myNiceUsername"
}}
 
Changed:
<
<
category : la category dans laquelle l'objet sera rangé. Le caractère virgule , est interdit dans le nom de la categorie.
>
>
Et quelques cas d'erreur :
Added:
>
>
{"cdsLogin": {"error": "This username is already taken"}}
{"cdsLogin": {"error": "A user with this email already exists"}}
 
Changed:
<
<
id : un identifiant unique de l'objet, pour la catégorie en question. 2 catégories différentes peuvent contenir le même id.
>
>

activate

 
Changed:
<
<
value : la valeur de l'objet. C'est une chaîne de caractères qui doit contenir un objet json correctement formaté. L'ensemble de l'objet est sauvé, sans que le serveur regarde le contenu. La seule exception est la valeur de id. Lorsqu'on récupère une liste d'objets, cette valeur sera écrasée par l'identifiant donné par le paramètre id. La longueur maximum de la chaîne de caractères de la valeur est limitée. La limite actuelle est 2048 octets.
>
>
Cette commande permet à un utilisateur d'activé son compte, dans les 72h après sa création. L'argument userId est nécessaire pour identifier le compte. Exemple de résultat :
Added:
>
>
{"cdsLogin": {"isUserActivated": "true"}}
 
Changed:
<
<
maxThings : ce paramètre optionnel indique le nombre maximum d'objets à garder dans cette catégorie. Si la limite est dépassée avec le nouveau objet qu'on ajoute, les plus anciens objets sont supprimés.
>
>

askForNewPassword

Deleted:
<
<

setThings

 
Changed:
<
<
Cette commande remplace complètement tous les objets d'une catégorie par le ou les nouveaux objets passés avec la commande. Les paramètres obligatoires sont :
>
>
Cette commande permet à utilisateur de recevoir un mail lui permettant de changer son mot de passe sans avoir à donner l'ancier. Il faut l'argument username pour identifier l'utilisateur. Le lien dans le mail est valide pendant 24h (en fait, jusqu'au milieu de la nuit qui suit les 24h). Exemple de résultat :
Added:
>
>
{"cdsLogin": {"mailSent": "true"}}
 
Changed:
<
<
category : la category dans laquelle l'objet sera rangé. Le caractère virgule , est interdit dans le nom de la categorie.
>
>

resetPassword

 
Changed:
<
<
value : la liste des nouveaux objets à stocker. C'est une chaîne de caractères qui doit contenir un objet json correctement formaté. Voici un exemple de format :
>
>
Cette commande permet de réinitialiser un mot de passe. Tous les arguments sont obligatoire. L'argument username identifie l'utilisateur pour qui le mot de passe doit changer. La clé nommée key est celle qui a été envoyé dans de mail de demande de nouveau mot de passe. Il faut ensuite donner le nouveau mot de passe dans l'argument password et le répéter dans verifyPassword. Exemple de résultat :
Added:
>
>
{"cdsLogin": {"isPasswordReseted": "true"}}
 
Changed:
<
<
value={id10:{p33: v3, p44:v4},id11:{p1:v1}}
>
>

createAnonymous

 
Changed:
<
<
La commande renvoie le nombre d'objets ajoutés :
>
>
Exemple de résultat :
Added:
>
>
{"cdsLogin": {"userId": "$2a$10$ktOu.bZWP/MR29OIgnI7YO.S01BzgdgNnkk5BT1wmaJHu898GvyXC"}}
 
Changed:
<
<
{"cdsStore": {"thingsSet": "2 things added."}}
>
>

updatePassword

 
Changed:
<
<

things

>
>
Exemple de résultat :
Added:
>
>

updateMail

 
Changed:
<
<
Cette commande permet de récupérer tous les objets pour une catégorie donnée. category est un argument obligatoire. Il peut contenir une liste de noms de catégories que l'on veut récupérer, séparé par le caractère ,. L'identifiant de chaque objet est un mis à l'intérieur de l'objet qui a été donné lors de l'ajout. Voici un exemple de résultat, si on demande 2 catégories ( test-cat et prefs) :
{"cdsStore": {

>
>
Exemple de résultat :

updateRole

Deleted:
<
<
"test-cat": { "v": "c", "id": "id1" }, "prefs": [ {
"p1"
"v1",
"p2"
"v2",
"id"
"id1" }, {
"p3"
"v3",
"p4"
"v4",
"id"
"identifier" } ]
}}
 
Changed:
<
<
Comme pour les tables, lorsque la catégorie ne contient qu'une seule entrée, c'est un objet. S'il y a plusieurs entrées, c'est un tableau qui est récupéré.
>
>
Exemple de résultat :
Added:
>
>

updateStatus

 
Changed:
<
<
La valeur d'un objet peut être un tableau. Par contre, il y a 2 restrictions. À l'intérieur d'un tableau, il faut des valeurs simples (pas de tableau ou un nouvel objet). Si le tableau ne contient qu'une seule valeur, alors cette valeur est renvoyée comme une valeur simple, et pas comme un tableau à une seule valeur.
>
>
Exemple de résultat :
Added:
>
>

updatePreferences

 
Changed:
<
<

deleteThing

>
>
Exemple de résultat :
Added:
>
>

setDeleteAllowed

 
Changed:
<
<
Cette commande permet de supprimer un objet. Les paramètres category et id sont obligatoires. Voici un exemple de résultat rendu :
{"cdsStore": {"thingDeleted": {

>
>
Exemple de résultat :

users

Deleted:
<
<
"id": "id1", "category": "prefs" }}}
 
Changed:
<
<

upload

>
>
Exemple de résultat :
Added:
>
>

getUser

 
Changed:
<
<
Permet l'upload d'une VOTable. Le format du fichier d'entrée est automatiquement détecté, en utilisant la librairie STIL.
>
>
Exemple de résultat :
Added:
>
>

isXmatchMail

 
Changed:
<
<
Les paramètres optionnels sont comment et origin. La valeur par défaut de origin est Upload. La valeur de comment, si présente, est stockée dans les métadonnées.
>
>
Exemple de résultat :
Deleted:
<
<
4 caractères sont interdits dans les noms des fichiers : /, &, < et ,. Ces 4 caractères sont remplacés par un _ au moment du upload.

uploadFromUrl

Permet l'upload d'un catalogue, en donnant l'URL depuis laquelle obtenir le catalogue.

Les paramètres obligatoires sont url et filename. Le code est le même que pour la commande upload. Il y a donc les mêmes paramètres optionnels, et les mêmes transformations concernant d'éventuels caractères interdits.

Le résultat a le format :

{"cdsStore": {"uploadFromUrl": "ok"}} 

Et en cas d'erreur :

{"cdsStore": {"error": "Error while uploading from url: http://cdsarc.u-strasbg.fr/viz-bin/vizgraph= =?-s=I/337&-i=.graph_sql&Source=4659456740670442752&file=fov.dat&--output=votable"}}
  -- PascalWassong - 2017-01-10

Revision 12017-01-10 - PascalWassong

 
META TOPICPARENT name="WebHome"

API du serveur CDSLoginInternal

Paramètres communs à tous les points d'entrée

Ci-dessous sont listés les paramètres qui sont communs à toutes les commandes. La casse des noms des paramètres n'a aucune importance (contrairement aux paramètres spécifiques à chaque commande, qui eux doivent forcément être en minuscule) :

command

C'est le nom de la commande à exécuter. La liste des commandes connues est données un peu plus bas. La casse des noms des commandes n'a aucune importance. Ce paramètre est obligatoire.

format

Le format dans lequel les données seront renvoyées. Ce paramètre est optionnel. La casse n'a pas d'importance. La valeur par défaut est xml. Le seul autre format reconnu est json.

Commandes reconnues

login

username

data

email

preferences

prettynames

createuser

activate

askfornewpassword

resetpassword

createanonymous

updatepassword

updatemail

updaterole

updatestatus

updatepreferences

setdeleteallowed

users

getuser

isxmatchmail

tables

Cette commande permet de récupérer la liste de toutes les VOTable que l'utilisateur a uploadé. Voici un exemple de réponse au format json.

{"cdsStore": {"tables": [
    {
        "date": "1473263765224",
        "fileName": "A2744CL-1",
        "metadata": {
            "coordinates": {
                "decUnit": "deg",
                "dec": "DEC",
                "raUnit": "deg",
                "errorType": "noError",
                "ra": "RA"
            },
            "comment": "bla bla bla"
        },
        "size": "6018",
        "nbRows": "1"
    },
    {
        "date": "1474374997438",
        "fileName": "csv-with-header.csv",
        "metadata": {
            "coordinates": {},
            "comment": "csv hide"
        },
        "size": "941",
        "nbRows": "3"
    }
]}}

S'il n'y a qu'une seule table, la valeur de tables n'est pas un tableau, mais un objet. Voici un exemple :

{"cdsStore": {"tables": {
    "date": "1474374997438",
    "fileName": "csv-with-header.csv",
    "metadata": {
        "coordinates": {},
        "comment": "csv hide"
    },
    "size": "941",
    "nbRows": "3"
}}}

S'il n'y a aucune table, un objet vide est rendu :

{"cdsStore": {}}

Dans le navigateur, pour obtenir systématiquement un tableau, vous pouvez écrire :

[].concat(cdsStore.tables);

L'objet coordinates existent toujours dans les métadatas, même s'il est vide. Cf l'exemple ci-dessus concernant le fichier csv-with-header.csv.

deleteTables

Cette commande permet de supprimer une table qui a été uploadé. La commande prend un seul argument, tables, qui contient la liste des noms des tables à supprimer, séparées par des slash ( / ).Ce caractère fait parti des caractères qui ne peuvent pas être dans le nom d'un fichier. Voir les commandes upload, uploadFromUrl et rename

La valeur rendue par la commande est toujours la suivante, même si on a demandé la suppression d'une table inexistante.

{"cdsStore": {}}

downloadTable

Cette commande permet de récupérer une table. Cette commande utilise l'argument général outputFormat. Le paramètre filename est obligatoire, et donne le nom du fichier à récupérer. En sortie, on récupère la VOTable dans le format qui a été spécifié par outputFormat.

updateTableComment

Cette commande permet de modifier le commentaire associé à une table. Le commentaire est stocké dans les métadonnées qui sont renvoyées lorsqu'on récupère la liste de toutes les tables.

Les arguments sont filename et comment. Ils sont obligatoires.

En résultat, la commande renvoie dans l'objet cdsPortal, un sous objet nommé commentUpdated, qui a comme valeur le nouveau commentaire.

updateCoordinatesMetadata

Cette commande permet de mettre à jour les informations sur les colonnes RA et DEC de la VOTable, ainsi que sur les colonnes d'erreurs associées. La liste des paramètres reconnus est

ra Nom de la colonne RA
dec Nom de la colonne DEC
raUnit Unité de la colonne RA. Valeurs possibles : deg ou sexa
decUnit Unité de la colonne DEC. Valeurs possible : deg ou sexa
errorType Type d'erreur, les valeurs possibles sont : noError, circular, polarEllipse, orientedEllipse, covarianceEllipse, correlationEllipse
raDecErr Colonne d'erreur si errorType vaut circular
raDecErrUnit Unité pour la colonne d'erreur dans le cas circular. Valeurs possibles : mas, arcsec, arcmin
raErr Colonne d'erreur si errorType vaut polarEllipse, covarianceEllipse ou correlationEllipse
raErrUnit Unité pour la colonne d'erreur dans les cas polarEllipse, covarianceEllipse ou correlationEllipse. Valeurs possibles : mas, arcsec, arcmin
decErr Colonne d'erreur si errorType vaut polarEllipse, covarianceEllipse ou correlationEllipse
decErrUnit Unité pour la colonne d'erreur dans les cas polarEllipse, covarianceEllipse ou correlationEllipse. Valeurs possibles : mas, arcsec, arcmin
minAxis Colonne d'erreur si errorType vaut orientedEllipse
minAxisUnit Unité pour la colonne d'erreur dans le cas orientedEllipse. Valeurs possibles : mas, arcsec, arcmin
majAxis Colonne d'erreur si errorType vaut orientedEllipse
majAxisUnit Unité pour la colonne d'erreur dans le cas orientedEllipse. Valeurs possibles : mas, arcsec, arcmin
posAngle Colonne contenant l'angle si errorType vaut orientedEllipse
posAngleUnit Unit pour la colonne d'angle si errorType vaut orientedEllipse, Valeurs possibles : deg, arc
covariance Colonne contenant la covariance dans le cas covarianceEllipse
correlation Colonne contenant la corrélation dans le cas correlationEllipse

Lors de la mise à jour de ces informations, aucune vérification n'est faite côté serveur sur les valeurs. Ces informations sont utilisées par le serveur de Xmatch.

tableMetadata

Cette commande permet de récupérer les informations concernant les colonnes d'une table. Le paramètre filename, indiquant pour quelle VOTable on veut le résultat, est obligatoire. Le résultat donne la liste de toutes les colonnes de la table, avec l'ucd de la colonne. Un exemple de résultat :

{"cdsStore": {"columns": [
    {
        "ucd": "meta.id;meta.main",
        "name": "ID"
    },
    {
        "ucd": "pos.eq.ra;meta.main",
        "name": "RA"
    },
    {
        "ucd": "pos.eq.dec;meta.main",
        "name": "DEC"
    },
    {
        "ucd": "phot.mag;em.opt.B",
        "name": "MAG_B435"
    },
    {
        "ucd": "phot.mag;em.opt.V",
        "name": "MAG_V606"
    },
    {
        "ucd": "stat.error;phot.mag;em.opt.B",
        "name": "MAGERR_B435"
    },
    {
        "ucd": "stat.error;phot.mag;em.opt.V",
        "name": "MAGERR_V606"
    }
]}}

Tout comme pour les tables, s'il n'y a qu'une seule colonne, la valeur de columns est un objet, pas un tableau.

rename

Cette commande permet de renommer un fichier. Les paramètres obligatoires (forcément en minuscule) sont :

filename : le nom actuel du fichier. Le nom est transformé, s'il contient des caractères interdits. Voir la commande upload pour plus de détails.

newname : le nouveau nom du fichier. Il ne faut pas qu'un autre fichier avec le nouveau nom existe, sinon une erreur est rendue.

En cas de succès, le résultat est :

{"cdsStore": {"rename": "ok"}} 

addThing

Cette commande permet d'ajouter un objet JSON. Le contenu de l'objet est absolument libre. Les paramètres obligatoires sont :

category : la category dans laquelle l'objet sera rangé. Le caractère virgule , est interdit dans le nom de la categorie.

id : un identifiant unique de l'objet, pour la catégorie en question. 2 catégories différentes peuvent contenir le même id.

value : la valeur de l'objet. C'est une chaîne de caractères qui doit contenir un objet json correctement formaté. L'ensemble de l'objet est sauvé, sans que le serveur regarde le contenu. La seule exception est la valeur de id. Lorsqu'on récupère une liste d'objets, cette valeur sera écrasée par l'identifiant donné par le paramètre id. La longueur maximum de la chaîne de caractères de la valeur est limitée. La limite actuelle est 2048 octets.

maxThings : ce paramètre optionnel indique le nombre maximum d'objets à garder dans cette catégorie. Si la limite est dépassée avec le nouveau objet qu'on ajoute, les plus anciens objets sont supprimés.

setThings

Cette commande remplace complètement tous les objets d'une catégorie par le ou les nouveaux objets passés avec la commande. Les paramètres obligatoires sont :

category : la category dans laquelle l'objet sera rangé. Le caractère virgule , est interdit dans le nom de la categorie.

value : la liste des nouveaux objets à stocker. C'est une chaîne de caractères qui doit contenir un objet json correctement formaté. Voici un exemple de format :

value={id10:{p33: v3, p44:v4},id11:{p1:v1}}

La commande renvoie le nombre d'objets ajoutés :

{"cdsStore": {"thingsSet": "2 things added."}}

things

Cette commande permet de récupérer tous les objets pour une catégorie donnée. category est un argument obligatoire. Il peut contenir une liste de noms de catégories que l'on veut récupérer, séparé par le caractère ,. L'identifiant de chaque objet est un mis à l'intérieur de l'objet qui a été donné lors de l'ajout. Voici un exemple de résultat, si on demande 2 catégories ( test-cat et prefs) :

{"cdsStore": {
    "test-cat": {
        "v": "c",
        "id": "id1"
    },
    "prefs": [
        {
            "p1": "v1",
            "p2": "v2",
            "id": "id1"
        },
        {
            "p3": "v3",
            "p4": "v4",
            "id": "identifier"
        }
    ]
}}

Comme pour les tables, lorsque la catégorie ne contient qu'une seule entrée, c'est un objet. S'il y a plusieurs entrées, c'est un tableau qui est récupéré.

La valeur d'un objet peut être un tableau. Par contre, il y a 2 restrictions. À l'intérieur d'un tableau, il faut des valeurs simples (pas de tableau ou un nouvel objet). Si le tableau ne contient qu'une seule valeur, alors cette valeur est renvoyée comme une valeur simple, et pas comme un tableau à une seule valeur.

deleteThing

Cette commande permet de supprimer un objet. Les paramètres category et id sont obligatoires. Voici un exemple de résultat rendu :

{"cdsStore": {"thingDeleted": {
    "id": "id1",
    "category": "prefs"
}}}

upload

Permet l'upload d'une VOTable. Le format du fichier d'entrée est automatiquement détecté, en utilisant la librairie STIL.

Les paramètres optionnels sont comment et origin. La valeur par défaut de origin est Upload. La valeur de comment, si présente, est stockée dans les métadonnées.

4 caractères sont interdits dans les noms des fichiers : /, &, < et ,. Ces 4 caractères sont remplacés par un _ au moment du upload.

uploadFromUrl

Permet l'upload d'un catalogue, en donnant l'URL depuis laquelle obtenir le catalogue.

Les paramètres obligatoires sont url et filename. Le code est le même que pour la commande upload. Il y a donc les mêmes paramètres optionnels, et les mêmes transformations concernant d'éventuels caractères interdits.

Le résultat a le format :

{"cdsStore": {"uploadFromUrl": "ok"}} 

Et en cas d'erreur :

{"cdsStore": {"error": "Error while uploading from url: http://cdsarc.u-strasbg.fr/viz-bin/vizgraph= =?-s=I/337&-i=.graph_sql&Source=4659456740670442752&file=fov.dat&--output=votable"}}

-- PascalWassong - 2017-01-10

 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback