POST/v1/access-requests/{request_id}/grant
Accorder l’accès à la suite d’une demande
grant_access_request
Utilise les mécanismes d’accès existants : collection_ids – le rôle de lecteur pour l’utilisateur sur les collections des sources (COLLECTION_MANAGE_PERMISSIONS sur chacune) ; data_profile – attribue un profil de données à l’utilisateur (ORG_MANAGE_USERS) ; add_category – ajoute les catégories des sources au profil de données actuel de l’utilisateur (administrateurs uniquement ; concerne tous les utilisateurs du profil, dont le nombre figure dans profile_users). Les sources auxquelles l’utilisateur a accès après l’octroi sont marquées comme accordées ; lorsque toutes le sont, la demande passe à granted, et l’utilisateur reçoit une notification. Ajouté dans la version 1.50.0.
Authentification
Envoyez une clé API dans l’en-tête Authorization : Authorization: Bearer <clé>.
Paramètres de chemin
request_idintegerobligatoire
Paramètres d’en-tête
X-View-AsstringUniquement pour les clés API ayant le rôle
admin. Exécute la requête avec le profil de données<profile>[:viewer|verifier|editor], par exempleemployee:viewer. La clé d’installation ne peut pas utiliser cet en-tête (403).Idempotency-KeystringClé permettant de réessayer une écriture sans risque : de 1 à 255 caractères ASCII imprimables ; un UUID v4 par opération logique est recommandé. Une nouvelle tentative avec la même clé dans les 24 heures n’exécute pas l’opération une seconde fois : elle renvoie la réponse enregistrée (statut, en-têtes et corps) avec l’en-tête
Idempotency-Replayed: true. La même clé avec une méthode, un chemin, unContent-Typeou un corps différents renvoie409 api.idempotency_mismatch; tant que la première requête est en cours,409 api.idempotency_in_progressavecRetry-After: 1. Après une réponse 5xx ou 429, la clé est libérée, et une nouvelle tentative exécute de nouveau l’opération. La clé est propre à l’organisation et à l’appelant (clé API, utilisateur ou clé de source personnalisée).length ≥ 1, length ≤ 255
Paramètres de cookie
kb_view_asstringCookie du mode « View as » pour une session.
POST /auth/view-asle définit etDELETE /auth/view-asle supprime.
Corps de la requête
application/json
collection_idsarray of integerdata_profilestringClé du profil de données à attribuer à l’utilisateur.
add_categoryboolean
Réponses
200La demande après l’octroi
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
Idempotency-Replayedtruesignifie que la réponse a été rejouée à partir de celle enregistrée pour cetteIdempotency-Key: l’opération ne s’est pas exécutée une seconde fois.
application/json
idintegerobligatoirestatusstringobligatoireValeurs autorisées:
opengranteddeniedanswer_idstringRéponse pour laquelle l’accès a été demandé (vide si la réponse a été supprimée selon la durée de conservation).
questionstringobligatoiremessagestringobligatoirecommentstringCommentaire du refus.
totalintegerobligatoireNombre de sources dans la demande (pour un décideur, les sources qu’il voit).
pendingintegerobligatoirePas encore accordé.
mergedbooleanDans la réponse à une requête de création : la demande a été fusionnée avec une demande ouverte.
decided_atstring (date-time)created_atstring (date-time)obligatoireupdated_atstring (date-time)obligatoiresourcesarray of AccessRequestSourcePour un décideur uniquement.
can_add_categorybooleanprofile_usersintegerUtilisateurs actifs du profil de données du demandeur (une modification du profil les concerne tous).
400La requête est invalide : la valeur d’un paramètre ou l’état de l’objet ne permet pas l’action (`detail` est un message).
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
401Aucun identifiant n’a été envoyé (ni cookie de session ni clé API), ou la clé est introuvable.
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
403L’action n’est pas autorisée : le rôle est insuffisant, il n’y a pas d’accès à la collection ou à la fiche, la requête s’exécute en mode « View as », ou l’organisation est suspendue ou supprimée (`detail` est un objet avec `code: org_suspended | org_deleted`).
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
404L’objet n’existe pas ou ne vous est pas accessible. L’API ne confirme pas l’existence d’un objet à accès restreint.
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
409L’état de l’objet ne permet pas l’action, par exemple un doublon, une indexation en cours ou un job déjà traité.
En-têtes de la réponse
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
429Trop de requêtes (`api.rate_limited`), quota de l’organisation pour la minute, le jour ou le mois épuisé (`api.quota_exceeded` ; `error.details` contient `quota`, `limit` et `reset_at`), limite de l’organisation atteinte, ou service de réponses occupé (`answers.engine_busy`). Attendez le délai indiqué dans l’en-tête `Retry-After`.
En-têtes de la réponse
Retry-AfterNombre de secondes à attendre avant de réessayer la requête.
RateLimit-PolicyLimites en vigueur, au format du brouillon IETF
draft-ietf-httpapi-ratelimit-headers: éléments séparés par des virgules"<name>";q=<quota>;w=<window in seconds>.keyest le débit de requêtes de la clé API (le quota est la rafale, la fenêtre est le temps nécessaire pour la reconstituer entièrement ; pour une session, c’estuser, sans identifiants,ip) ;minute,dayetmonthsont les quotas de l’organisation pour la minute, le jour et le mois calendaires en UTC.RateLimitCe qui reste de chaque limite de
RateLimit-Policy:"<name>";r=<remaining>;t=<seconds until reset>.X-RateLimit-LimitLimite de l’entrée la plus stricte de
RateLimit-Policy(celle à laquelle il reste le moins de requêtes).X-RateLimit-RemainingRequêtes restantes au titre de la limite la plus stricte.
X-RateLimit-ResetSecondes restantes avant la réinitialisation de la limite la plus stricte.
application/json
Codes d’erreur
Codes que ce point de terminaison peut renvoyer dans error.code, en plus des codes généraux communs à toutes les requêtes.
Nouvelles tentatives sans risque
Envoyez un en-tête Idempotency-Key (par exemple un UUID) avec chaque POST et PATCH. Une nouvelle tentative avec la même clé dans les 24 heures renvoie la réponse enregistrée au lieu d’exécuter à nouveau la requête.
Limites de débit
Les réponses portent les en-têtes RateLimit et RateLimit-Policy, ainsi que les anciens X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Une réponse 429 contient Retry-After en secondes : attendez, puis réessayez.