Cette section détaille les endpoints pour créer, lister, modifier et supprimer les zones d'accès, qui sont utilisées pour gérer les autorisations sur les métriques.
Lister toutes les zones d'accès
Description
Cette requête récupère une liste de toutes les zones d'accès configurées dans le système, avec la possibilité de filtrer et de paginer les résultats.
GET /v2/access-zones
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:read.
Paramètres
name (string, optionnel) : Filtre les zones dont le nom contient cette chaîne.
includeGroups (boolean, optionnel) : Si true (défaut), inclut la liste des ID de groupes associés à chaque zone.
limit (integer, optionnel) : Nombre de résultats par page (défaut: 50).
paginationKey (string, optionnel) : Clé pour obtenir la page de résultats suivante (voir gestion de la pagination)
Ces paramètres doivent être ajoutés à la fin de l'URL pour construire la chaîne de requête. Le premier est précédé d'un "?" et les suivants sont séparés par un "&".
Syntaxe générale de la requête GET :
.../access-zones?name=[filtre_nom]&includeGroups=[true|false]&limit=[limite]
Exemple de requête
# Commande pour lister toutes les zones d'accès
curl -X GET \
'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones' \
-H 'Authorization: Bearer VOTRE_JETON_JWT'
Réponses
Exemple de réponse valide (200 OK)
{
"data": [
{
"id": "4e1daf3a-9a1c-4c54-a6ea-f826e03c4270",
"name": "#DefaultAccessZoneRead",
"groups": [
"67918ae6-f285-4bfc-b23e-e08baa5e275b"
],
"accessType": "Read",
"isDefault": true
}
],
"paginationInfo": {
"count": 1,
"isComplete": true
},
"statusCode": 1010,
"message": "OK"
}
Gestion de la Pagination (isComplete)
Se référer au paragraphe de gestion de la pagination.
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Lister mes zones d'accès
Description
Cette requête récupère la liste des zones d'accès auxquelles l'utilisateur authentifié appartient.
GET /v2/access-zones/me
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:read.
Exemple de requête
# Commande pour lister mes propres zones d'accès
curl -X GET \
'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/me' \
-H 'Authorization: Bearer VOTRE_JETON_JWT'
Réponses
Exemple de réponse valide (200 OK)
{
"data": [
{
"id": "4e1daf3a-9a1c-4c54-a6ea-f826e03c4270",
"name": "#DefaultAccessZoneRead",
"accessType": "Read",
"isDefault": true
}
],
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Créer une nouvelle zone d'accès
Description
Cette requête permet de créer une nouvelle zone d'accès.
POST /v2/access-zones
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:admin.
Corps de la requête
name (string, obligatoire) : Nom unique de la zone d'accès.
accessType (string, obligatoire) : Type d'accès (Read, Write, ou ReadWrite).
groups (liste de uuid, optionnel) : Liste des ID des groupes d'utilisateurs à associer à cette zone.
Les paramètres suivants doivent être fournis dans le corps de la requête, au format JSON.
Syntaxe générale du corps de la requête :
{
"name": "nom_unique_de_la_zone",
"accessType": "Read | Write | ReadWrite",
"groups": [ "uuid_groupe_1", "uuid_groupe_2" ]
}
Exemple de requête
# Commande pour créer une nouvelle zone d'accès
curl -X POST \
--url 'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones' \
# ----- En-têtes -----
-H 'Authorization: Bearer VOTRE_JETON_JWT' \
-H 'Content-Type: application/json' \
# ----- Corps de la requête -----
-d '
{
"name": "TestZone_API_Creation",
"accessType": "ReadWrite"
}
'
Réponses
Exemple de réponse valide (200 OK)
{
"data": {
"id": "0894d6cc-9234-4cba-82ad-c1bacaf71a07",
"name": "TestZone_API_Creation",
"accessType": "ReadWrite",
"isDefault": false
},
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Obtenir les détails d'une zone d'accès
Description
Cette requête récupère la configuration complète d'une seule zone d'accès via son ID.
GET /v2/access-zones/{accessZoneId}
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:read.
Paramètres
accessZoneId (uuid, obligatoire) : ID de la zone d'accès.
Cette requête utilise un paramètre de chemin, qui est intégré directement dans l'URL.
Syntaxe générale de la requête GET :
.../access-zones/[uuid_de_la_zone_d_acces]
Exemple de requête
# Commande pour obtenir la zone avec l'ID '0894d6cc-...'
curl -X GET \
'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/0894d6cc-9234-4cba-82ad-c1bacaf71a07' \
-H 'Authorization: Bearer VOTRE_JETON_JWT'
Réponses
Exemple de réponse valide (200 OK) :
{
"data": {
"id": "0894d6cc-9234-4cba-82ad-c1bacaf71a07",
"name": "TestZone_e3707275",
"accessType": "ReadWrite",
"isDefault": false
},
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Mettre à jour une zone d'accès
Description
Cette requête permet de modifier le nom et le type d'accès d'une zone existante.
PUT /v2/access-zones/{accessZoneId}
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:admin.
Paramètres
accessZoneId (uuid, obligatoire) : ID de la zone d'accès à modifier.
Cette requête utilise un paramètre de chemin, qui est intégré directement dans l'URL.
Syntaxe générale de l'URL :
.../access-zones/[uuid_de_la_zone_d_acces]
Corps de la requête
name (string, obligatoire) : Le nouveau nom de la zone.
accessType (string, obligatoire) : Le nouveau type d'accès (Read, Write, ReadWrite).
Les champs suivants doivent être fournis dans le corps de la requête, au format JSON.
Syntaxe générale du corps de la requête :
{
"name": "nouveau_nom_de_la_zone",
"accessType": "Read | Write | ReadWrite"
}
Exemple de requête
# Commande pour mettre à jour une zone d'accès
curl -X PUT \
--url 'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/0894d6cc-9234-4cba-82ad-c1bacaf71a07' \
# ----- En-têtes -----
-H 'Authorization: Bearer VOTRE_JETON_JWT' \
-H 'Content-Type: application/json' \
# ----- Corps de la requête -----
-d '
{
"name": "TestZone_updated_name",
"accessType": "Read"
}
'
Réponses
Exemple de réponse valide (200 OK) :
{
"data": {
"id": "0894d6cc-9234-4cba-82ad-c1bacaf71a07",
"name": "TestZone_updated_name",
"accessType": "Read",
"isDefault": false
},
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Modifier les groupes d'une zone d'accès (Patch)
Description
Cette requête permet d'ajouter et/ou de retirer des groupes d'utilisateurs d'une zone d'accès sans modifier ses autres propriétés.
PATCH /v2/access-zones/{accessZoneId}/groups
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:admin.
Paramètres
accessZoneId (uuid, obligatoire) : ID de la zone d'accès à modifier.
Cette requête utilise un paramètre de chemin, qui est intégré directement dans l'URL.
Syntaxe générale de l'URL :
.../access-zones/[uuid_de_la_zone_d_acces]/groups
Corps de la requête
groupsToAdd (liste de uuid, optionnel) : Liste des ID de groupes à ajouter.
groupsToRemove (liste de uuid, optionnel) : Liste des ID de groupes à retirer.
Les champs suivants doivent être fournis dans le corps de la requête, au format JSON.
{
"groupsToAdd": [ "uuid_groupe_a_ajouter_1" ],
"groupsToRemove": [ "uuid_groupe_a_retirer_1" ]
}
Exemple de requête
# Commande pour ajouter un groupe à une zone
curl -X PATCH \
--url 'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/0894d6cc-9234-4cba-82ad-c1bacaf71a07/groups' \
# ----- En-têtes -----
-H 'Authorization: Bearer VOTRE_JETON_JWT' \
-H 'Content-Type: application/json' \
# ----- Corps de la requête -----
-d '
{
"groupsToAdd": [ "6dbdeed1-8ab4-4d34-abd9-b1e5b67bb6b0" ],
"groupsToRemove": []
}
'
Réponses
Exemple de réponse valide (200 OK) :
{
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Vérifier mon appartenance à une zone d'accès
Description
Cette requête spéciale (HEAD) permet de vérifier si l'utilisateur authentifié fait partie d'une zone d'accès, sans retourner de corps de message. La réponse est contenue dans le code de statut HTTP.
HEAD /v2/access-zones/{accessZoneId}/users
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:write.
Paramètres
accessZoneId (uuid, obligatoire) : ID de la zone d'accès à vérifier.
Cette requête utilise un paramètre de chemin, qui est intégré directement dans l'URL.
Syntaxe générale de la requête HEAD :
.../access-zones/[uuid_de_la_zone_d_acces]/users
Exemple de requête
# Commande pour vérifier si je suis dans la zone '0894d6cc-...' # L'option -I effectue une requête HEAD
curl -I \
'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/0894d6cc-9234-4cba-82ad-c1bacaf71a07/users' \
-H 'Authorization: Bearer VOTRE_JETON_JWT'
Réponses
Exemple de réponse valide (200 OK) :
Un code de statut HTTP/1.1 200 OK sans corps de message indique que l'utilisateur fait partie de la zone.
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Supprimer une zone d'accès
Description
Cette requête supprime une zone d'accès. Attention, les métriques utilisant cette zone d'accès (autorisation) seront inaccessibles si aucune autre autorisation n'est positionnée.
DELETE /v2/access-zones/{accessZoneId}
Scope
Pour effectuer cette requête, vous devez posséder le scope suivant : metrics:admin.
Paramètres
accessZoneId (uuid, obligatoire) : ID de la zone d'accès à supprimer.
Cette requête utilise un paramètre de chemin, qui est intégré directement dans l'URL.
Syntaxe générale de la requête DELETE :
.../access-zones/[uuid_de_la_zone_d_acces]
Exemple de requête
# Commande pour supprimer la zone d'accès '0894d6cc-...'
curl -X DELETE \
'https://xxx.indaba.api.indasuite.io-base.com/v2/access-zones/0894d6cc-9234-4cba-82ad-c1bacaf71a07' \
-H 'Authorization: Bearer VOTRE_JETON_JWT'
Réponses
Exemple de réponse valide (200 OK) :
{
"statusCode": 1010,
"message": "OK"
}
Erreurs Courantes :
Veuillez vous référer à la liste des erreurs courantes.
Gestion de la Pagination (isComplete)
Pour garantir de bonnes performances, l'API peut diviser les réponses contenant un grand nombre de résultats (par exemple, une longue liste de métriques) en plusieurs "pages". Certaines réponses contiennent un champ booléen nommé "isComplete", dans l'objet "paginationInfo" pour gérer ce cas.
Si isComplete est true : Vous avez reçu toutes les données.
Si isComplete est false : Il reste des données à récupérer. Pour obtenir la suite :
Récupérez la valeur du champ "paginationKey" dans la réponse que vous venez de recevoir.
Effectuez une nouvelle requête en y ajoutant "paginationKey" comme paramètre et en attribuant à ce paramètre la valeur récupérée.
Répétez ce processus jusqu'à ce que la réponse finale contienne "isComplete" : true.
Erreurs courantes
Vous rencontrerez principalement les codes d'erreur HTTP suivants :
400 Bad Request : Votre requête est malformée. Cela peut être dû à un paramètre manquant, un type de donnée incorrect ou un JSON invalide. Le corps de la réponse contiendra un tableau errors détaillant le problème.
{
"errors": [
{
"error": "Field Required",
"message": "The xxx field is required."
}
],
"statusCode": 1050,
"message": "Invalid request"
}
403 Forbidden : Votre jeton d'authentification est valide, mais vous n'avez pas les droits nécessaires pour cette action. Cela peut arriver pour deux raisons :
Votre jeton n'a pas les droits (scope) nécessaires (par exemple, vous tentez d'écrire des données sans avoir le scope metrics:write).
Votre jeton a le bon scope, mais votre utilisateur (ou compte de service) n'est pas rattaché à une autorisation qui donne accès à la métrique demandée.
404 Not Found : La ressource que vous essayez d'atteindre n'existe pas. Cela se produit typiquement si vous utilisez un ID incorrect ou si vous demandez une métrique qui n'existe pas.