Skip to content

Commit 74976b6

Browse files
committed
add doc utilisation api
1 parent 09adae6 commit 74976b6

File tree

3 files changed

+155
-2
lines changed

3 files changed

+155
-2
lines changed

docs/.vuepress/config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ theme: defaultTheme({
6363
prefix: '/Api',
6464
children: [
6565
'filtres',
66-
'photo'
66+
'photo',
67+
'exempleapi'
6768
]
6869
},
6970
{

docs/Api/exempleapi.md

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# Exemples d'utilisation de l'API Sesame
2+
## Utilisation en python de l'api
3+
### recherche d'identités
4+
5+
Deux variables d'environnement servent à passer l'URL et le TOKEN
6+
7+
* API_BASEURL Url de l api de l'orchestrator
8+
* API_TOKEN JEton d'authentification (créé sur l'orchestrator par la commande **make sesame-create-keyring**)
9+
```
10+
API_BASEURL=http://192.168.0.1:4000
11+
API_TOKEN=eyJhbGciOiJIUzI....
12+
13+
```
14+
15+
Cet exemple prend en argument l'uid et le recherche
16+
```bash
17+
python get_identity.py --uid ddupont
18+
```
19+
20+
**Script python get_identity.py**
21+
22+
```python
23+
import requests
24+
import os
25+
import argparse
26+
27+
def get_identity(uid):
28+
api_baseurl = os.getenv('API_BASEURL')
29+
api_token = os.getenv('API_TOKEN')
30+
headers = {
31+
"Authorization": f"Bearer {api_token}",
32+
"Content-Type": "application/json; charset=utf-8",
33+
}
34+
params = {
35+
"filters[:inetOrgPerson.uid]": uid
36+
}
37+
response=requests.get(api_baseurl +"/management/identities",headers=headers,params=params)
38+
data.json()
39+
return data
40+
41+
if __name__ == '__main__':
42+
parser = argparse.ArgumentParser()
43+
parser.add_argument('--uid', help='uid', default='')
44+
args = parser.parse_args()
45+
data=get_identity(args.uid)
46+
print("Status request: " + str(data['statusCode']) +"\n")
47+
48+
49+
```
50+
51+
Les filtres sont passés dans le tableau params (voir la documentation au sujet des fitres)
52+
53+
Pour faire une recherche multiple exemple uid = dupont et identité synchronisée :
54+
55+
```python
56+
params = {
57+
"filters[:inetOrgPerson.uid]": "ddupont"
58+
"filters[:state]": 99
59+
}
60+
```
61+
62+
Pour rechercher tous les identités dont le nom commence par b ou B. Pour ce cas nous utilisons une expression régulière sur le champ sn
63+
64+
```python
65+
params = {
66+
"filters[:inetOrgPerson.sn]": "/¨b/i"
67+
}
68+
```
69+
70+
Pour rechercher toutes les identités à completer ou en erreur
71+
72+
```python
73+
params = {
74+
"filters[@state][0]": -2,
75+
"filters[@state][1]": -3,
76+
}
77+
```
78+
79+
## Modification d'une identité
80+
81+
la modification de l identité se fait par la methode PATCH sur l'url /managment/identities
82+
83+
Vous devez lire l entrée modifier le tableau et enlever la clé metadata et appeler la méthode path
84+
85+
Exemple modification de l'état de l identité
86+
```bash
87+
python set_identity.py --uid ddupont --status disable
88+
```
89+
Script python **set_identity.py**
90+
```python
91+
import requests
92+
import os
93+
import argparse
94+
95+
def get_identity(uid):
96+
api_baseurl = os.getenv('API_BASEURL')
97+
api_token = os.getenv('API_TOKEN')
98+
headers = {
99+
"Authorization": f"Bearer {api_token}",
100+
"Content-Type": "application/json; charset=utf-8",
101+
}
102+
params = {
103+
"filters[inetOrgPerson.uid]": uid
104+
}
105+
response = requests.get(api_baseurl + "/management/identities", headers=headers, params=params)
106+
data = response.json()
107+
return data
108+
109+
def set_identity(uid,status):
110+
api_baseurl = os.getenv('API_BASEURL')
111+
api_token = os.getenv('API_TOKEN')
112+
headers = {
113+
"Authorization": f"Bearer {api_token}",
114+
"Content-Type": "application/json; charset=utf-8",
115+
}
116+
resp=get_identity(uid)
117+
data_json = resp['data'][0]
118+
data_json['dataStatus']=status
119+
del data_json['metadata']
120+
id=resp['data'][0]['_id']
121+
response=requests.patch(api_baseurl +"/management/identities/" + id , headers=headers,json=data_json)
122+
return response
123+
124+
if __name__ == '__main__':
125+
parser = argparse.ArgumentParser()
126+
parser.add_argument('--uid', help='uid', default='')
127+
parser.add_argument( '--status',help="disable | enable")
128+
args = parser.parse_args()
129+
status=-3
130+
if args.status == "enable":
131+
status=1
132+
133+
data=set_identity(args.uid,status)
134+
rep=data.json()
135+
print("Status request: " + str(rep['statusCode']) +"\n")
136+
137+
```
138+

docs/Api/filtres.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,15 @@ Voici la liste des champs structurels disponibles dans une identité
7676
| | 50 : En cours de synchronisation |
7777
| | 99 : synchronisée |
7878
| | -2 : à compléter |
79+
| | -3 : en erreur |
7980
| | -99 : ne plus synchroniser (envoi aux backends) |
8081
| **initState** | Statut d'envoi du mail de réinitialisation du mot de passe |
8182
| | 0 : le mail n'a jamais été envoyé |
8283
| | 1 : Le mail a été envoyé |
8384
| | 2 : le compte a été activé |
8485
| **dataStatus** | Etat d'activation de l'identité |
8586
| | 0 : Identité non initialisée |
86-
| | 1 : l'dentité est active |
87+
| | 1 : l'identité est active |
8788
| | -1 : l'identité est supprimée et ne doit plus être importée |
8889
| | -2 : l'identité doit changer sont mot de passe |
8990
| | -3 : l'identité est désactivée |
@@ -97,4 +98,17 @@ Voici la liste des champs structurels disponibles dans une identité
9798
| **metadata.lastUpdatedBy** | Dernier utilisateur qui a modifié l'identité |
9899
| **metadata.lastUpdatedAt** | Date de la dernière modification |
99100

101+
Champs concernant la fusion d'identité
102+
103+
Quand il y a une fusion d'identité l'identité secondaire complète l'identité primaire et est
104+
marquée à ne plus synchroniser.
105+
106+
| Champ | Description |
107+
|----------------------------|----------------------------------------------------------|
108+
| **srcFusionId** | _id des identité fusionnée (dans l'identité primaire) |
109+
| **destFusionId** | _id de l'identité fusionnée (dans l'identité secondaire |
110+
| **primaryEmployeeNumber** | employeeNumber principal (present dans l'identité primaire) |
111+
| | Dans l'identité secondaire son employeeNumber sera renommé F... |
112+
113+
100114

0 commit comments

Comments
 (0)