GET/v1/catalog/services
Lister les services du catalogue
list_catalog_services
Renvoie les entrées du catalogue global des services externes (SaaS et éditeurs) : recherche d’une sous-chaîne, sans tenir compte de la casse, dans le nom, le groupe ou le domaine du site web, filtre par catégorie et pagination. Le nombre total pour le filtre figure dans l’en-tête X-Total-Count. Le catalogue est commun à toutes les organisations et accessible à tout utilisateur connecté. Ses données sont livrées avec Sursa et mises à jour à chaque version (la version figure dans GET /v1/catalog/categories et dans le champ version de l’icon_url de chaque entrée).
Authentification
Envoyez une clé API dans l’en-tête Authorization : Authorization: Bearer <clé>.
Paramètres de requête
qstring | nullSous-chaîne du nom, du groupe ou du domaine du site web (sans tenir compte de la casse).
length ≤ 200
categorystring | nullSlug de la catégorie (
GET /v1/catalog/categories).offsetintegerPar défaut : 0≥ 0
limitintegerPar défaut : 50≥ 1, ≤ 500
cursorstringCurseur de la page suivante, tiré de
X-Next-Cursorou denext_cursorde la réponse précédente avec les mêmes filtres ; il porte la taille de page. Avecoffset:422 validation.failed; curseur d’une autre liste, d’autres filtres ou mal formé :400 api.cursor_invalid.length ≤ 512
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).
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.
Réponses
200Réponse réussie
En-têtes de la réponse
LinkAdresse de la page suivante,
<…>; rel="next". L’absence de cet en-tête signifie qu’il s’agit de la dernière page.X-Next-CursorCurseur de la page suivante pour le paramètre
cursor. L’absence de cet en-tête signifie qu’il s’agit de la dernière page.X-Total-CountNombre total d’entrées correspondant au filtre, indépendamment de
limitetoffset.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
categorystringobligatoireIdentifiant textuel (slug) de la catégorie (
GET /v1/catalog/categories).description_enstring | nullobligatoireCourte description en anglais.
nulls’il n’y a pas de description.domainstring | nullobligatoireDomaine du site web sans
www..nulls’il n’y a pas de site web.group_namestring | nullobligatoireGroupe (éditeur) si le service appartient à une famille de produits, par exemple Atlassian ; sinon
null.iconbooleanobligatoireIndique si une icône est fournie avec Sursa.
icon_urlstring | nullobligatoireURL de l’icône (
/v1/catalog/services/{service_id}/icon?v=…ou une adresse externe configurée par l’installation).nulls’il n’y a pas d’icône.idstring (uuid)obligatoirenamestringobligatoireslugstringobligatoirewebsitestring | nullobligatoireURL du site web (
https://…) ounull.
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
422Erreur de validation : le corps ou les paramètres ne correspondent pas au schéma (`detail` est une liste d’erreurs de validation), ou la valeur d’un paramètre est hors des limites admises (`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
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.
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.