Créer un utilisateur
La création d'utilisateur se fait avec le WebService accessible à l'adresse /api/users/ via la méthode HTTP POST en soumettant un document JSON décrivant l'utilisateur à créer. Tous les attributs définis pour un profil d'utilisateur peuvent être définis dès la création.
Paramètres
Propriété |
Description |
Valeur requise |
Valeur permise |
---|---|---|---|
first_name | prénom | oui | chaîne quelconque |
last_name | nom | oui | chaîne quelconque |
adresse de courriel | oui | courriel | |
username | nom d'utilisateur | non | chaîne quelconque |
send_registration_email | Envoyer un courriel à l'utilisateur contenant un lien lui permettant de saisir son mot de passe et finaliser la création de compte. Cette option n'a de sens que si l'attribut email est renseigné | non | true |
send_registration_email_next_url | Adresse sur laquelle rediriger l'utilisateur après la phase d'enregistrement. Cette option n'a d'intérêt que si l'option send_registration_email est activée. | non | URL valide |
ou | identifiant (slug) de l'OU (Organizational Unit, collectivité) | non | slug d'une OU existante |
Les valeurs null ne sont pas autorisées.
Exemple
POST /api/users/ HTTP/1.1 Content-Type: application/json Authorization: Basic xxxx Content-Length: xxx { "email": "john.doe@example.com", "first_name": "John", "last_name": "Doe", "gender": 1, "email": "john.doe@example.com", "birthdate": "1981-06-01", "birthplace": "Marseille", "birthcountry": "France", "preferred_username": "john", "address_city": "New-York", "send_registration_email": "True", "send_registration_email_next_url": "http://www.entrouvert.com" }
Retour Passant
201 Created Content-Type: application/json Content-Length: xxx { "sub": "8e7f200b4bb447fa8a91cd03c0f0ade3", "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "date_joined": "2017-03-20T13:16:44.991343Z", "modified": "2017-03-20T13:16:44.991343Z", "is_active": true }
Cas non-passant
Code |
Signification |
Contenu |
---|---|---|
400 | Le format de la requête est invalide (paramètre interdit ou avec une valeur invalide) | Un document JSON décrivant les erreurs rencontrées |
401 | L'authentification a échouée | |
403 | Permission non accordée d'effectuer l'action |
Par exemple :
HTTP/1.1 400 BAD REQUEST Content-Type: application/json Content-Length: xxxx { "errors": { "last_name": [ "Ce champ est obligatoire." ] }, "result": 0 }
Créer ou obtenir un utilisateur
Il est également possible d'effectuer l'opération hybride "get or create" : recherche d'un utilisateur selon certains attributs et création de l'utilisateur uniquement si la recherche échoue. L'opération se fait sur la même l'adresse que la création d'utilisateur /api/users/ via la méthode HTTP POST en soumettant un document JSON décrivant l'utilisateur à rechercher/créer. Par rapport à la création simple il faut ajouter un ou plusieurs paramètres get_or_create=nom-de-l'attribut dans la query string, pour indiquer sur quels attributs doit se baser la recherche.
Exemple :
POST /api/users/?get_or_create=email HTTP/1.1 Content-Type: application/json Authorization: Basic xxxx Content-Length: xxx { "email": "john.doe@example.com", "first_name": "John", "last_name": "Doe" }
Retour Passant
200 OK Content-Type: application/json Content-Length: xxx { "email": "john.doe@example.com", "first_name": "John", "last_name": "Doe" }
Mettre à jour ou obtenir un utilisateur
Sur le même principe que le "get or create", il est possible d'effectuer l'opération hybride "update or create" : recherche d'un utilisateur selon certains attributs avec création de l'utilisateur si la recherche échoue et mise à jour de l'utilisateur si la recherche réussit. Il faut ajouter un ou plusieurs paramètres update_or_create=nom-de-l'attribut dans la query string, pour indiquer sur quels attributs doit se baser la recherche.
Exemple :
POST /api/users/?update_or_create=email HTTP/1.1 Content-Type: application/json Authorization: Basic xxxx Content-Length: xxx { "email": "john.doe@example.com", "first_name": "John", "last_name": "Doe" }
Retour Passant
200 OK Content-Type: application/json Content-Length: xxx { "email": "john.doe@example.com", "first_name": "John", "last_name": "Doe" }