API Doc¶
Aperçu¶
Cette API offre la possibilité de créer, lire, modifier et rechercher et supprimer (CRUD) des utilisateurs dans l'annuaire du Utilisateur.
Transport¶
HTTP obligatoire
Style de l'interface¶
REST/JSON
Authentification¶
L'authentification se fait via un login et un mot de passe en utilisant le mode d'authentification HTTP Basic.
Contrôle d'accès¶
En utilisant la fonctionnalité des rôles affectés aux utilisateurs techniques il est possible d'autoriser ou non les différentes actions: créer, modifier, rechercher, supprimer.
Liste/recherche un Utilisateur¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/ |
GET |
document JSON |
voir plus loin |
Paramètres¶
Nom |
Sémantique |
Valeurs permises |
Exemple |
ordering |
Permet de passer le nom d'un champ par lequel les réponses seront ordonnées, préfixé par - l'ordre est inversé, ex.: ordering=last_name |
[-]date_joined , [-]modified , [-]first_name , [-]last_name |
first_name |
recherche exacte sur le prénom pour une valeur exacte |
|
|
first_name__iexact |
recherche exacte sur le prénom pour une valeur exacte en ignorant la casse |
|
|
first_name__icontains |
recherche exacte sur le prénom pour une sous chaîne en ignorant la casse |
|
|
first_name__gte |
recherche sur le prénom supérieure ou égale à la valeur |
|
|
first_name__lte |
recherche sur le prénom inférieure ou égale à la valeur |
|
|
first_name__gt |
recherche sur le prénom supérieure à la valeur |
|
|
first_name__lt |
recherche sur le prénom inférieure à la valeur |
|
|
last_name + __iexact , __icontains , __gte , __lte , __gt , __lt |
idem que pour le prénom mais avec le nom |
|
|
modified__gte |
recherche sur la date de dernière modification supérieure ou égale à la valeur |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
curl -X GET -u partenaire:geronimo https://connexion-demo.dev.entrouvert.org/api/users/?modified__gte=2017-03-28T00:00:00 |
modified__lte |
recherche sur la date de dernière modification inférieure ou égale à la valeur |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
|
modified__gt |
recherche sur la date de dernière modification supérieure à la valeur |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
|
modified__lt |
recherche sur la date de dernière modification inférieure à la valeur |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
|
email |
recherche sur le courriel exact |
|
|
email__iexact |
recherche sur le courriel exact en ignorant la casse |
|
|
Format retour¶
Le document retour est un objet/dictionnaire JSON, les résultats sont toujours paginés, chaque page a une taille de 100, le lien vers la page suivante est dans la propriété next
et celui vers la page précédente
dans la propriété previous
. La propriété results
contient la liste des résultats.
Les résultats contiennent les propriétés suivantes:
Propriété |
Description |
Format |
uuid |
identifiant unique |
|
username |
nom d'utilisateur |
chaine quelconque |
password |
mot de passe chiffré |
|
date_joined |
date d'inscription |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
email |
courriel |
courriel |
email_verified |
|
booléen |
first_name |
prénom |
chaîne quelconque |
last_name |
nom |
chaîne quelconque |
is_active |
|
booléen |
is_staff |
|
booléen |
is_admin |
|
booléen |
date_joined |
date de dernière connexion |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
modified |
date de dernière modification |
date et heure au format ISO-8601: YYYY-MM-DDTHH:MM:SS |
ou |
Collectivité de l'utilisateur |
chaine quelconaue |
Exemple cas-passant¶
GET /api/users/ HTTP/1.1
Authorization: Basic xxx
200 OK
Coneent-Type: application/json
Content-Length: xxxx
{
"next": null,
"previous": null,
"results": [
{
"date_joined": "2017-08-21T14:28:00Z",
"email": "john.doe@example.com",
"email_verified": false,
"first_name": "John Kevin Eric",
"id": 4,
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": null,
"last_name": "Doe",
"modified": "2017-08-21T14:47:34.102909Z",
"ou": "default",
"password": "pbkdf2_sha256$20000$crynWolm1hVD$SpcKEw0W6HNjDdex6RcKrGPB5N5eBwjCRT+KaFWFATA=",
"username": "jdoe",
"uuid": "73e62dc8de25486e901753d127309eef"
}
]
}
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 |
|
Création d'un Utilisateur¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/ |
POST |
document JSON décrivant le Utilisateur à créer (à spécifier) |
non |
Format entrée¶
Le document en entrée est un object/dictionnaire JSON avec les propriétés suivantes:
Propriété |
Description |
Valeur requise |
Valeur permise |
username |
nom d'utilisateur |
non |
chaine quelconque |
password |
mot de passe |
non |
chaine quelconque |
first_name |
prénom |
oui |
chaîne quelconque |
last_name |
nom |
oui |
chaîne quelconque |
email |
courriel |
non |
courriel |
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",
"email": "john.doe@example.com",
"username": "jdoe",
"password": "toto"
}
Retour passant¶
201 Created
Content-Type: application/json
Content-Length: xxx
{
"date_joined": "2017-08-21T14:28:00.194032Z",
"email": "",
"email_verified": false,
"first_name": "John",
"id": 4,
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": null,
"last_name": "Doe",
"modified": "2017-08-21T14:28:00.470957Z",
"ou": "default",
"password": "pbkdf2_sha256$20000$crynWolm1hVD$SpcKEw0W6HNjDdex6RcKrGPB5N5eBwjCRT+KaFWFATA=",
"username": "jdoe",
"uuid": "73e62dc8de25486e901753d127309eef"
}
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquant, etc..) |
Un document JSON décrivant les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json
Content-Length: xxxx
{
"errors": {
"last_name": [
"Ce champ est obligatoire."
]
},
"result": 0
}
Lecture d'un Utilisateur¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/<uuid>/ |
GET |
document JSON décrivant le Utilisateur lu |
non |
GET /api/users/<uuid>/ HTTP/1.1
Authorization: Basic xxxx
Retour passant¶
Code |
Signification |
Contenu |
200 |
Un document JSON décrivant le Utilisateur |
200 Ok
Content-Type: application/json
Content-Length: xxxx
{
"date_joined": "2017-08-21T14:28:00Z",
"email": "john.doe@example.com",
"email_verified": false,
"first_name": "John",
"id": 4,
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": null,
"last_name": "Doe",
"modified": "2017-08-21T14:34:15.669381Z",
"ou": "default",
"password": "pbkdf2_sha256$20000$crynWolm1hVD$SpcKEw0W6HNjDdex6RcKrGPB5N5eBwjCRT+KaFWFATA=",
"username": "jdoe",
"uuid": "73e62dc8de25486e901753d127309eef"
}
Les propriétés sans valeur sont à null
.
Retour non-passant¶
Code |
Signification |
Contenu |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
404 |
L'id Utilisateur donné n'existe pas |
|
voir plus haut
Modification d'un Utilisateur¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/<uuid>/ |
PUT |
document JSON décrivant le Utilisateur |
non |
/api/users/<uuid>/ |
PATCH |
document JSON décrivant le Utilisateur |
non |
PATCH /api/users/<uuid>/ HTTP/1.1
Content-Type: application/json
Authorization: Basic xxxx
Content-Length: xxx
{
"first_name": "John Kevin"
}
L'action PUT nécessite que first_name
et last_name
(obligatoires) soient dans le document JSON. S'ils ne sont pas renseignés, une erreur 400 est retournée.
Retour passant¶
Code |
Signification |
Contenu |
200 |
Ok |
Un document JSON décrivant le Utilisateur modifié |
200 Ok
Content-Type: application/json
Content-Length: xxx
{
"date_joined": "2017-08-21T14:28:00Z",
"email": "john.doe@example.com",
"email_verified": false,
"first_name": "John Kevin",
"id": 4,
"is_active": true,
"is_staff": false,
"is_superuser": false,
"last_login": null,
"last_name": "Doe",
"modified": "2017-08-21T14:34:15.669381Z",
"ou": "default",
"password": "pbkdf2_sha256$20000$crynWolm1hVD$SpcKEw0W6HNjDdex6RcKrGPB5N5eBwjCRT+KaFWFATA=",
"username": "jdoe",
"uuid": "73e62dc8de25486e901753d127309eef"
}
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquant, etc..) |
Un document JSON décrivant les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
404 |
L'id Utilisateur donné n'existe pas |
|
HTTP/1.1 400 BAD REQUEST
Content-Type: application/json
Content-Length: xxxx
{
"errors": {
"last_name": [
"Ce champ est obligatoire."
]
},
"result": 0
}
Suppression d'un Utilisateur¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/<uuid>/ |
DELETE |
aucun |
non |
DELETE /api/users/<uuid>/ HTTP/1.1
Authorization: Basic xxx
Retour passant¶
Code |
Signification |
Contenu |
204 |
Ok |
aucun |
204 No content
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquant, etc..) |
Un document JSON décrivant les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
404 |
L'id Utilisateur donné n'existe pas |
JSON d'erreur |
Forcer le changement de mot de passe à la prochaine connexion¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/<uuid>/force-password-reset/ |
POST |
aucun |
non |
POST /api/users/<uuid>/force-password-reset/ HTTP/1.1
Authorization: Basic xxx
Retour passant¶
Code |
Signification |
Contenu |
204 |
Ok |
aucun |
204 No content
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquant, etc..) |
Un document JSON décrivant les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
404 |
L'id Utilisateur donné n'existe pas |
JSON d'erreur |
Tests d'existence des comptes en masse¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/synchronization/ |
POST |
Document JSON contenant la liste des ID Utilisateur à tester |
non |
POST /api/users/synchronization/ HTTP/1.1
Authorization: Basic xxx
Content-Type: application/json
Content-Length: xxxx
{
"known_uuids":["73e62dc8de25486e901753d127309eef", "1234567890"],
}
Retour passant¶
200 Ok
Content-Type: application/json
Content-Length: xxxx
{
"unknown_uuids":["1234567890"],
"result":1
}
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquan les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
|
400 BadRequest
Content-Type: application/json
Content-Length: xxxx
{
"detail":"JSON parse error - Expecting ',' delimiter: line 1 column 53 (char 52)"
}
Envoyer un jeton pour reinitialisation de mot de passe¶
URL |
Méthode |
Contenu |
Paramètres |
/api/users/<uuid>/password-reset/ |
POST |
aucun |
non |
POST /api/users/<uuid>/password-reset/ HTTP/1.1
Authorization: Basic xxx
Retour passant¶
Code |
Signification |
Contenu |
204 |
Ok |
aucun |
204 No content
Retour non-passant¶
Code |
Signification |
Contenu |
400 |
Le format de la requête est invalide (JSON mal formaté, attribut manquant, etc..) |
Un document JSON décrivant les erreurs rencontrées |
401 |
L'authentification a échouée |
|
403 |
Permission non accordée d'effectuer l'action |
404 |
L'id Utilisateur donné n'existe pas |
JSON d'erreur |
500 |
L'utilisateur identifié par l'id Utilisateur n'a pas de couriel |
JSON d'erreur |