Documentation en ligne

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

Dernière mise à jour le 18/06/2023 18:29 — Éditer