Status codes

Vue d'ensemble

Tous les appels d'API, qu'ils soient REST ou Python, renvoient des codes d'état qui peuvent être décomposés en sous-états.

Les codes d'état de niveau HTTP ne sont utilisés que pour signaler 200 OK, 400 Bad request et 403 Forbidden - les autres codes d'état HTTP ne sont pas utilisés car la fonctionnalité SSO, par le biais de son API Python, peut être exposée via des protocoles qui peuvent ne pas avoir une notion intrinsèque de codes d'état, par exemple AMQP ou WebSockets.

Notez que dans certains cas, le sous-état renvoyé publiquement peut être suivi d'informations plus spécifiques dans les logs du serveur. Par exemple, le code générique E005001 "Vous n'êtes pas autorisé à accéder à cette ressource" peut être accompagné des informations suivantes E001001 "Nom d'utilisateur non valide", mais ce message n'est pas renvoyé à l'appelant afin de ne pas révéler trop d'informations à des adversaires potentiels.

Chaque sous-état commence par un préfixe, 'E' indiquant une erreur et 'W' un avertissement.

En Python, on peut accéder à tous les codes d'état par le biais de 'from zato.sso import status_code'.

Status codes

Nom Notes
ok L'opération s'est terminée avec succès, il n'y a pas d'erreur ni d'avertissement à signaler
warning L'opération s'est peut-être terminée avec succès, mais il y avait un problème à signaler, vérifiez le sous-état pour plus de détails
error L'opération a échoué, vérifiez le sous-état pour plus de détails

Sous-status codes

Code Étiquette Notes
E001001 username.invalid Un tel nom d'utilisateur n'existe pas dans la base de données
E001002 username.exists Ce nom d'utilisateur existe déjà - par exemple, lors de la création d'un utilisateur
E001003 username.too_long Le nom d'utilisateur est plus long que configuration ne le permet
E001004 username.has_whitespace Le nom d'utilisateur contient des espaces
E001100 user_id.invalid Un tel ID utilisateur n'existe pas dans la base de données
E002001 email.invalid Un tel email n'existe pas dans la base de données
E002002 email.exists Cet e-mail existe déjà - par exemple, lors de la création d'un utilisateur si les e-mails doivent être uniques
E002003 email.too_long L'adresse électronique est plus longue que ne l'autorise configuration
E002004 email.has_whitespace L'adresse électronique contient des espaces
E002005 email.missing Il n'y a pas eu d'email donné sur l'entrée alors qu'il en faut un
E003001 password.invalid Le mot de passe est invalide selon les règles définies dans configuration
E003002 password.too_short Le mot de passe est trop court
E003003 password.too_long Le mot de passe est trop long
E003004 password.expired Un appel a été émis en utilisant un compte dont le mot de passe a expiré (par exemple entre la connexion et cet appel)
W003005 password.w_about_to_exp Un avertissement pour indiquer que le mot de passe est sur le point d'expirer
E003006 password.e_about_to_exp Exactement comme W003005 mais renvoyé comme une erreur, par configuration
E003007 password.must_send_new La demande a été rejetée, l'utilisateur doit envoyer un nouveau mot de passe pour remplacer le mot de passe actuel
E004001 app_list.invalid Le nom de l'application donné en entrée n'a pas été trouvé dans configuration
E004002 app_list.no_signup Le nom de l'application en entrée existe mais il n'est pas possible de se connecter à partir de celle-ci, c'est-à-dire que l'utilisateur doit utiliser une autre application pour se connecter
E005001 auth.not_allowed Un message générique "You are not allowed to access this resource", qui peut être complété par des détails dans le log du serveur
E005002 auth.locked Le compte est verrouillé, il ne peut être utilisé tant qu'il n'est pas déverrouillé
E005003 auth.invalid_signup_status Le compte ne peut pas être utilisé pour se connecter car le processus d'inscription n'est pas encore terminé, c'est-à-dire que l'utilisateur ne l'a pas encore confirmé
E005004 auth.not_approved Le compte attend l'approbation d'un super-administrateur, il n'est pas possible de se connecter tant qu'il n'est pas approuvé
E005005 auth.super_user_required Les privilèges du super-utilisateur sont nécessaires pour effectuer une action donnée, mais l'utilisateur actuel n'en fait pas partie
E005006 auth.no_such_sign_up_token Le token d'inscription donné en entrée n'existe pas.
E005007 auth.sign_up_confirmed Une tentative de confirmation d'un processus d'inscription a été faite en utilisant un token qui a déjà été utilisé une fois
E006001 metadata.not_allowed L'application actuelle à partir de laquelle l'utilisateur se connecte n'est pas autorisée à envoyer les métadonnées de connexion, telles que remote_addr et user_agent
E007001 session.no_such_session Le token de session de l'utilisateur saisi (UST) n'est pas valide - soit il n'existe pas, soit la session a expiré
E007002 session.expired La session indiquée par l'entrée UST existe mais a déjà expiré
E008001 common.invalid_operation L'opération demandée n'est pas valide, par exemple, un utilisateur tente de supprimer son propre compte.
E008002 common.invalid_input Au moins une des valeurs données en entrée n'était pas valide
E008003 common.missing_input Une valeur était attendue en entrée mais elle n'a pas été fournie par l'appelant.
E008004 common.internal_error Une erreur interne s'est produite, vérifiez les logs du serveur pour plus de détails
E009001 attr.already_exists Une tentative a été faite pour créer un attribut dont le nom existe déjà
E009002 attr.no_such_attr On a tenté d'accéder à un attribut dont le nom n'existe pas (s'applique à toutes les fonctions .get, .update et .delete)
E010010 password_reset.could_not_access Le token de réinitialisation du mot de passe ou la clé de réinitialisation n'ont pas été accessibles pour une raison quelconque, par exemple, ils n'ont jamais existé, ils ont déjà expiré ou le token de réinitialisation à usage unique a déjà été utilisé auparavant