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"
}
