Récupérer un ensemble de fiches en fonction d'un filtre.
D'écrire une fiche.
D'effacer une fiche.
Le type de fiche sera annoté de manière générique object_type.
La Liste des types de fiches donne la liste des valeurs possibles.
Ainsi object_type pourra être remplacé par application, technical ou personal_account.
Lire l'ensemble des fiches
Un GET sur /api/v2/object_type permet de récupérer l'ensemble des fiches d'un type donné.
Par exemple, pour récupérer l'ensemble des applications, il faut faire un GET sur /api/v2/application/.
Le script suivant :
Code
#!/bin/bash# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT='default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST='http://localhost:1080'AUTHORIZATION_HEADER='Authorization: Bearer {"token":"'"$TOKEN"'","myTenant":{"id":"'"$TENANT"'"}}'MIMETYPE="application/vnd.cartosi.card+json;version=0.3"curl -s "${HOST}/api/v2/application" -H "$AUTHORIZATION_HEADER" -H "Accept: $MIMETYPE"
Le script suivant affiche le nom de l'ensemble des applications ainsi que leur ID :
Code
#! /usr/bin/env python3# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT = 'default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST = 'http://localhost:1080'#############################################################################import requestsimport sysheaders = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": "application/vnd.cartosi.card+json;version=0.3"}# exécution de la requête HTTPrep = requests.get(HOST + "/api/v2/application", headers=headers)# en cas d'erreur ...if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1)# on parcourt le résultat pour afficher le label de l'applicationfor appli in rep.json(): print("- "+appli["label"]+" : "+appli["id"])
Son exécution affiche :
Code
- Logistics : 09f059a4-78e8-eda8-0fea-9dcc4d493282- Application Banque de France : bccdaa31-a17e-6be7-0674-f3ff48b269ba- Data lake : b69161f4-d0d5-0458-bde9-31e2ed7a2da1- Gitlab : e7301d29-a28a-9cde-afcb-883abf749d98- Gestion des Postes : 24b6e910-e662-a2f7-b250-cadadf2735b3- Intranet Communication RH : 46c1e104-ab3b-27f0-a283-14045f5a6604- Linkedin : e80a4451-d2c4-f52e-fe53-3b00c4769546- LDAP : 17a76405-8615-2d81-d474-da58aff98ea4- Application courier : 16a167f5-c3e8-c47d-a588-f9dbb5193cf8- Interface de commande fournisseurs : 52271e43-c8ad-ba23-3646-e6622e198aac- Module ERP - Gestion des Stocks : ae15602d-478e-aa9e-7d66-597c220b1850- Module ERP - Gestion Salarié : e3c2bd44-816c-177e-f5ba-ab3f1826c96f- Google Cloud : 6cc572e2-8013-a564-93b9-a305ca0654f8- ERP : 4b65bd90-0294-0943-7ed5-fe6b8a19e73b
Lire une fiche
Un GET sur /api/v2/object_type/id permet de récupérer les données de la fiche d'ID id.
L'exemple précédent indique que l'application Gitlab a pour ID e7301d29-a28a-9cde-afcb-883abf749d98.
Les données de l'application Gitlab se récupèrent en faisant un GET sur /api/v2/application/e7301d29-a28a-9cde-afcb-883abf749d98.
Voici ce que cela donne avec cURL :
Code
#!/bin/bash# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT='default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST='http://localhost:1080'AUTHORIZATION_HEADER='Authorization: Bearer {"token":"'"$TOKEN"'","myTenant":{"id":"'"$TENANT"'"}}'MIMETYPE="application/vnd.cartosi.card+json;version=0.3"curl -s "${HOST}/api/v2/application/e7301d29-a28a-9cde-afcb-883abf749d98" -H "$AUTHORIZATION_HEADER" -H "Accept: $MIMETYPE"
Le script suivant affiche l'ensemble des champs de l'application Gitlab :
Code
#! /usr/bin/env python3# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT = 'default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST = 'http://localhost:1080'#############################################################################import requestsimport sysheaders = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": "application/vnd.cartosi.card+json;version=0.3"}# exécution de la requête HTTPrep = requests.get(HOST + "/api/v2/application/e7301d29-a28a-9cde-afcb-883abf749d98", headers=headers)# en cas d'erreur ...if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1)# on parcourt le résultat pour afficher les données de l'applicationfor key, value in rep.json().items(): print(key+": "+str(value))
Carto-SI ne distingue pas la création et la mise à jour d'une fiche au niveau de l'API.
Les deux se font avec un PUT sur /api/v2/object_type/id.
Le format des données contenues dans le PUT est identique à celui qui est reçu lors d'un GET.
Voici un exemple qui pousse une application avec cURL :
Code
#!/bin/bash# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT='default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST='http://localhost:1080'AUTHORIZATION_HEADER='Authorization: Bearer {"token":"'"$TOKEN"'","myTenant":{"id":"'"$TENANT"'"}}'MIMETYPE="application/vnd.cartosi.card+json;version=0.3"curl -s -X PUT "${HOST}/api/v2/application/123-scanner" -H "$AUTHORIZATION_HEADER" -H "Accept: $MIMETYPE" -H "Content-Type: $MIMETYPE" --data '{"id": "123-scanner", "label": "scanner"}'
L'exemple suivant commence par créer une application nommée scanner, puis change son responsable :
Code
#! /usr/bin/env python3import uuid# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT = 'default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST = 'http://localhost:1080'#############################################################################import requestsimport sys# mimetype utilisé pour formater une applicationmimetype = "application/vnd.cartosi.card+json;version=0.3"# Récupération d'une applicationdef get(id): headers = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": mimetype } rep = requests.get(HOST + "/api/v2/application/" + id, headers=headers) # en cas d'erreur ... if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1) return rep.json()# Enregistrement d'une applicationdef put(id, appli): # même chose que le GET avec le header Content-Type en plus headers = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": mimetype, "Content-Type": mimetype } rep = requests.put(HOST + "/api/v2/application/" + id, json=appli, headers=headers) # en cas d'erreur ... if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1)# Génération d'un ID aléatoire dont la taille est suffisamment grande pour éviter les conflitsid = str(uuid.uuid4())# Donnée de l'applicationappli = { "id": id, "label": "scanner", "teamleader": "pierre@carto-si.com"}# création de l'application scannerput(id, appli)# affichage des données de l'application scannerappli = get(id)print(appli["label"] + ", " + appli["teamleader"])# on change le teamleader de scannerappli["teamleader"] = "mathias@carto-si.com"put(id, appli)# affichage des données de l'application scannerappli = get(id)print(appli["label"] + ", " + appli["teamleader"])
Pour effacer une application, il faut faire un DELETE sur /api/v2/object_type/id.
Voici un exemple avec cURL :
Code
#!/bin/bash# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT='default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST='http://localhost:1080'AUTHORIZATION_HEADER='Authorization: Bearer {"token":"'"$TOKEN"'","myTenant":{"id":"'"$TENANT"'"}}'curl -s -X DELETE "${HOST}/api/v2/application/123-scanner" -H "$AUTHORIZATION_HEADER" -H "Accept: $MIMETYPE"
L'exemple suivant efface l'application scanner :
Code
#! /usr/bin/env python3import uuid# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT = 'default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST = 'http://localhost:1080'#############################################################################import requestsimport sys# mimetype utilisé pour formater une applicationmimetype = "application/vnd.cartosi.card+json;version=0.3"# Récupération de toutes les applicationsdef get_all(): headers = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": mimetype } rep = requests.get(HOST + "/api/v2/application/", headers=headers) # en cas d'erreur ... if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1) return rep.json()# Effacement d'une applicationdef delete(id): # même chose que le GET avec le header Content-Type en plus headers = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT) } rep = requests.delete(HOST + "/api/v2/application/" + id, headers=headers) # en cas d'erreur ... if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1)# Efface l'application dont le label est 'scanner'for appli in get_all(): if appli["label"] == "scanner": delete(appli["id"])
Un filtre s'exécute avec un POST sur l'URL /api/v2/object_type/filter avec une entité au format JSON suivant :
Code(json)
{ "filter": ["all"]}
Voici un exemple avec une commande cURL :
Code
#!/bin/bash# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT='default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST='http://localhost:1080'AUTHORIZATION_HEADER='Authorization: Bearer {"token":"'"$TOKEN"'","myTenant":{"id":"'"$TENANT"'"}}'MIMETYPE="application/vnd.cartosi.card+json;version=0.3;paginated=false"FILTER='{"filter":["glob","label","Appli*"]}'curl -s -X POST "${HOST}/api/v2/application/filter" -H "$AUTHORIZATION_HEADER" -H "Accept: $MIMETYPE" -H "Content-Type: application/json" --data "$FILTER"
Et la même chose en Python :
Code
#! /usr/bin/env python3import uuid# remplacez la valeur exemple ci-dessous par celle de votre tokenTOKEN = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImFjdGlvbiI6W10sImV4cCI6MzMyNzI3NjYwMzgsImxvZ2luIjoiYXBpIn0.wEwtFt7QkTbda7qajHiVW5rydAbKMWMOYfrju9pvS6w'# remplacez la valeur exemple ci-dessous par celle de votre tenantTENANT = 'default'# remplacez la valeur exemple ci-dessous par celle de votre hostHOST = 'http://localhost:1080'#############################################################################import requestsimport sysheaders = { "Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT), "Accept": "application/vnd.cartosi.card+json;version=0.3;paginated=false", "Content-Type": "application/json"}filter = { "filter": ["glob", "label", "Appli*"]}rep = requests.post(HOST + "/api/v2/application/filter", json=filter, headers=headers)# en cas d'erreur ...if rep.status_code != 200: print("Erreur %d : %s" % (rep.status_code, rep.text)) sys.exit(1)# affichage des noms des applications trouvéesfor appli in rep.json(): print(appli["label"])