Regardez une vidéo de démonstration de SCIM en action (12 min)
Aperçu
wandb-scim.
Fonctionnalités prises en charge
- Filtrage : l’API prend en charge le filtrage pour les points de terminaison
/Userset/Groups - Opérations PATCH : prise en charge de PATCH pour les mises à jour partielles des ressources
- Prise en charge des ETags : mises à jour conditionnelles à l’aide d’ETags pour détecter les conflits
- Authentification par compte de service : les comptes de service d’organisation peuvent accéder à l’API
Si vous êtes administrateur de plusieurs organisations Enterprise Multi-tenant SaaS, vous devez configurer l’organisation cible des requêtes de l’API SCIM afin de vous assurer que les requêtes de l’API SCIM envoyées avec votre clé API s’appliquent à la bonne organisation. Cliquez sur votre image de profil, puis sur Paramètres utilisateur, puis vérifiez le paramètre Organisation API par défaut.L’option d’hébergement choisie détermine la valeur de l’espace réservé
<host-url> utilisé dans les exemples de cette page.De plus, les exemples utilisent des ID utilisateur comme abc et def. Dans les requêtes et réponses réelles, les ID utilisateur ont des valeurs hachées.Authentification
Principales différences
- Qui devrait l’utiliser : Users conviennent mieux aux actions d’administration interactives et ponctuelles ; les comptes de service sont plus adaptés à l’automatisation et aux intégrations (CI/CD, outils de provisionnement).
- Identifiants : Users envoient le nom d’utilisateur et la clé API ; les comptes de service envoient uniquement une clé API (sans nom d’utilisateur).
- Charge utile de l’en-tête d’autorisation : Users encodent
username:API-KEY; les comptes de service encodent:API-KEY(deux-points en tête). - Portée et autorisations : les deux nécessitent des privilèges d’administrateur ; les comptes de service sont limités à l’organisation et sans utilisateur associé, ce qui offre des pistes d’audit plus claires pour l’automatisation.
- Où obtenir les identifiants : Users copient leur clé API dans les Paramètres utilisateur ; les clés des comptes de service se trouvent dans l’onglet Compte de service de l’organisation.
- Cloud mutualisé : si vous avez accès à plusieurs organisations Cloud mutualisé, vous devez définir la Default API organization pour vous assurer que les appels à l’API SCIM sont dirigés vers l’organisation voulue.
Users
Authorization de la manière suivante : Basic <base64(username:API-KEY)>.
Par exemple, authentifiez-vous avec demo:p@55w0rd :
Comptes de service
Authorization comme suit : Basic <base64(:API-KEY)> (notez les deux-points initiaux et le nom d’utilisateur vide). Vous trouverez les clés API des comptes de service dans le tableau de bord de l’organisation, sous l’onglet Compte de service. Consultez Comptes de service limités à l’organisation.
Par exemple, authentifiez-vous avec la clé API sa-p@55w0rd :
Gestion des utilisateurs
Obtenir un utilisateur
Cette opération ne récupère pas les comptes de service.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: GET
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
Exemple
- Requête Obtenir un utilisateur
- Réponse Obtenir un utilisateur
Lister les Users
Cette opération ne récupère pas les comptes de service.
Filtrer les Users
/Users permet de filtrer les Users par nom d’utilisateur ou adresse e-mail :
userName eq "value"- Filtrer par nom d’utilisateuremails.value eq "value"- Filtrer par adresse e-mail
Exemple
Endpoint
- URL:
<host-url>/scim/Users - Méthode: GET
Exemple
- Requête de liste des Users
- Réponse de liste des Users
Créer un utilisateur
Endpoint
- URL:
<host-url>/scim/Users - Méthode: POST
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
emails | array | Oui | Tableau d’objets e-mail. Doit inclure une adresse e-mail principale |
userName | string | Oui | Nom d’utilisateur du nouvel utilisateur |
Exemple
- Requête de création d’utilisateur (Dedicated/Autogéré)
- Requête de création d’utilisateur (Multi-tenant)
Réponse
- Réponse de création d’utilisateur (Dedicated/Autogéré)
- Réponse de création d’utilisateur (Multi-tenant)
Supprimer un utilisateur
Cette opération s’applique uniquement aux utilisateurs, pas aux comptes de service. Supprimez un compte de service dans les paramètres du W&B Team.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: DELETE
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur à supprimer |
Exemple
- Requête de suppression de l’utilisateur
- Réponse de suppression de l’utilisateur
Pour désactiver temporairement l’utilisateur, référez-vous à l’API Désactiver l’utilisateur, qui utilise l’endpoint
PATCH.Mettre à jour l’adresse e-mail d’un utilisateur
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
op | string | Oui | replace |
path | string | Oui | emails |
value | array | Oui | Tableau contenant le nouvel objet d’adresse e-mail |
Exemple
- Requête de mise à jour de l’adresse e-mail
- Réponse de mise à jour de l’adresse e-mail
Mettre à jour le nom d’affichage de l’utilisateur
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
op | string | Oui | replace |
path | string | Oui | displayName |
value | string | Oui | Nouveau nom d’affichage |
Exemple
- Requête de mise à jour du nom affiché
- Réponse de mise à jour du nom affiché
Désactiver un utilisateur
- Cloud dédié / Autogéré : définit le champ
activede l’utilisateur surfalse. Pour rétablir l’accès d’un utilisateur désactivé à votre organisation, voir Réactiver un utilisateur. - Cloud mutualisé : supprime l’utilisateur de l’organisation. Pour rétablir l’accès de l’utilisateur, ajoutez-le de nouveau à votre organisation. Voir Créer un utilisateur. Dans le Cloud mutualisé, le compte d’un utilisateur n’est pas géré par l’organisation.
Cette opération fonctionne uniquement pour les utilisateurs, pas pour les comptes de service. La désactivation d’un compte de service n’est pas prise en charge. Gérez les comptes de service d’équipe dans les Settings de la W&B Team.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur à désactiver |
op | string | Oui | replace |
value | objet | Oui | Objet contenant {"active": false} |
Exemple
- Requête de désactivation d’un utilisateur (Dedicated/Autogéré)
- Requête de désactivation d’un utilisateur (Multi-tenant)
Réponse
- Réponse de désactivation d’un utilisateur (Dedicated/Autogéré)
- Réponse de désactivation d’un utilisateur (Multi-tenant)
Réactiver un utilisateur
- La réactivation ne fonctionne que pour les utilisateurs, pas pour les comptes de service. Elle n’est pas prise en charge pour les comptes de service. Gérez les comptes de service dans les paramètres de la W&B Team.
-
La réactivation des utilisateurs n’est pas prise en charge dans le Cloud mutualisé. Pour restaurer l’accès de l’utilisateur, ajoutez-le à nouveau à votre organisation. Voir Créer un utilisateur. Dans le Cloud mutualisé, le compte d’un utilisateur n’est pas géré par l’organisation. Toute tentative de réactivation d’un utilisateur entraîne une erreur HTTP
400:
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur à réactiver |
op | string | Oui | replace |
value | objet | Oui | Objet contenant {"active": true} |
Exemple
- Requête de réactivation de l’utilisateur
- Réponse de réactivation de l’utilisateur
Attribuer un rôle au niveau de l’organisation
Cette opération fonctionne uniquement pour les utilisateurs, pas pour les comptes de service. Les rôles personnalisés ne sont pas pris en charge pour les comptes de service.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
op | string | Oui | replace |
path | string | Oui | organizationRole |
value | string | Oui | Nom du rôle (admin ou member) |
Le rôle
viewer au niveau de l’organisation est obsolète et ne peut plus être attribué dans l’interface utilisateur. Si vous utilisez SCIM pour attribuer le rôle viewer à un utilisateur :- Le rôle
memberlui est attribué dans l’organisation. - Une licence Models
viewerlui est attribuée au lieu d’une licencefull. Cela permet un accès en lecture seule à Models et un accès complet au registre. Si aucune licence Models n’est disponible, une erreurSeat limit reachedest enregistrée et l’utilisateur est ajouté sans accès à Models. Cela pourra être mis à jour plus tard si une licence devient disponible. - Une licence Weave
viewerlui est attribuée au lieu d’une licencefull. Cela permet un accès en lecture seule à Weave. Si aucune licence Weave n’est disponible, une erreurSeat limit reachedest enregistrée et l’utilisateur est ajouté sans accès à Weave. Cela pourra être mis à jour plus tard si une licence devient disponible. - Le rôle
viewerdu registre lui est attribué dans les registres visibles au niveau de l’organisation.
Exemple
- Requête d’attribution d’un rôle d’organisation
- Réponse d’attribution d’un rôle d’organisation
Attribuer un rôle d’équipe
Cette opération s’applique uniquement aux utilisateurs, et non aux comptes de service. Les rôles personnalisés ne sont pas pris en charge pour les comptes de service.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
op | string | Oui | replace |
path | string | Oui | teamRoles |
value | array | Oui | Tableau d’objets contenant teamName et roleName |
Exemple
- Requête d’attribution d’un rôle d’équipe
- Réponse d’attribution d’un rôle d’équipe
Ajouter au registre
Cette opération fonctionne uniquement pour les utilisateurs, et non pour les comptes de service. Les rôles personnalisés ne sont pas pris en charge pour les comptes de service.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Oui | L’ID unique de l’utilisateur |
op | string | Oui | add |
path | string | Oui | registryRoles |
value | array | Oui | Tableau d’objets contenant registryName et roleName |
Exemple
- Requête d’ajout au registre
- Réponse d’ajout au registre
Retirer du registre
- Les opérations de suppression suivent les spécifications du protocole SCIM RFC 7644. Utilisez la syntaxe de filtre
"registryRoles[registryName eq \"{registry_name}\"]"pour retirer un utilisateur d’un registre spécifique, ou"registryRoles"pour retirer l’utilisateur de tous les registres. - Cette opération fonctionne uniquement pour les utilisateurs, pas pour les comptes de service. Retirez les comptes de service d’un registre dans les paramètres de la Team W&B.
Endpoint
- URL:
<host-url>/scim/Users/{id} - Méthode: PATCH
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | Yes | L’ID unique de l’utilisateur |
op | string | Yes | remove |
path | string | Yes | "registryRoles[registryName eq \"{registry_name}\"]" ou "registryRoles" |
Exemple
- Requête de suppression d’un registre
- Réponse de suppression d’un registre
- Requête de suppression de tous les registres
- Réponse de suppression de tous les registres
Ressource de groupe
storageBucket dans la requête.
Comptes de service
Filtrage des groupes
/Groups permet de filtrer les résultats pour rechercher des Teams spécifiques :
Filtres pris en charge
displayName eq "value"- Filtrer par nom d’affichage de l’équipe
Exemple
Obtenir l’équipe
Endpoint
- URL:
<host-url>/scim/Groups/{id} - Méthode: GET
Exemple
- Requête
- Réponse
Liste des équipes
Endpoint
- URL:
<host-url>/scim/Groups - Méthode: GET
Exemple
- Requête
- Réponse
Créer une équipe
- Endpoint:
<host-url>/scim/Groups - Méthode: POST
- Description: Crée une nouvelle ressource d’équipe.
- Champs pris en charge:
| Champ | Type | Requis |
|---|---|---|
displayName | Chaîne | Oui |
members | Tableau multivaleur | Oui (le sous-champ value est requis et correspond à un ID d’utilisateur) |
storageBucket | Objet | Non |
storageBucket. S’il est omis, l’équipe utilise le stockage par défaut ou le stockage au niveau de l’instance. Provisionnez le bucket (stratégie, CORS, identifiants) et déterminez, à l’aide du guide BYOB, le format d’adresse de stockage selon le fournisseur. L’objet storageBucket comporte les sous-champs suivants :
- Requis:
name(nom du bucket),provider(l’une des valeurs suivantes : ‘coreweave,aws,gcp,azure,minio`). Sensible à la casse. - Facultatif:
path(préfixe de chemin dans le bucket),kmsKeyId(clé KMS pour le chiffrement, par exemple pour AWS),awsExternalId(accès AWS inter-comptes),azureTenantId(ID du locataire Azure),azureClientId(ID client de l’identité managée Azure).
provider invalide renvoie 400 Bad Request avec une erreur SCIM qui répertorie les valeurs autorisées.
Exemples
- Requête (sans BYOB)
- CoreWeave
- AWS S3
- GCS
- Azure
- Réponse
Mettre à jour l’équipe
- Endpoint :
<host-url>/scim/Groups/{id} - Méthode : PATCH
- Description : Mettre à jour la liste des membres d’une équipe existante.
- Opérations prises en charge :
addun membre,removeun membre,replaceles membres
-
Les opérations de suppression suivent les spécifications du protocole SCIM RFC 7644. Utilisez la syntaxe de filtre
members[value eq "{user_id}"]pour supprimer un utilisateur spécifique, oumemberspour supprimer tous les utilisateurs de l’équipe. Identification de l’utilisateur : le{user_id}dans les opérations sur les membres peut être :- Un ID utilisateur W&B
- Une adresse e-mail (par exemple, “user@example.com”)
- Ces opérations fonctionnent uniquement pour les utilisateurs, pas pour les comptes de service. Mettez à jour les comptes de service d’une équipe dans les Settings de l’équipe W&B.
Remplacez
{team_id} par l’ID réel de l’équipe et {user_id} par l’ID utilisateur réel ou l’adresse e-mail réelle dans vos requêtes.Remplacer les membres de l’équipe
Cette opération s’applique uniquement aux utilisateurs, pas aux comptes de service. Gérez les comptes de service dans les Settings de l’équipe W&B.
- Endpoint :
<host-url>/scim/Groups/{id} - Méthode : PUT
- Description : Remplacer l’intégralité de la liste des membres de l’équipe.
- Requête
- Réponse
dev-user2 à acme-devs :
Cette opération s’applique uniquement aux utilisateurs, pas aux comptes de service. Gérez les comptes de service dans les Settings de l’équipe W&B.
- Requête
- Réponse
dev-user2 de acme-devs :
Cette opération s’applique uniquement aux utilisateurs, pas aux comptes de service. Gérez les comptes de service dans les Settings de l’équipe W&B.
- Requête
- Réponse
acme-devs :
Cette opération fonctionne uniquement pour les Users, pas pour les comptes de service. Gérez les comptes de service dans les Settings de l’équipe W&B.
- Requête
- Réponse
Supprimer une équipe
- La suppression des équipes n’est actuellement pas prise en charge par l’API SCIM, car des données supplémentaires y sont associées. Supprimez les équipes depuis l’application pour confirmer que vous souhaitez tout supprimer.
Ressource de rôle
/Roles ne font pas partie du schéma SCIM officiel. W&B ajoute ces endpoints /Roles pour permettre la gestion automatisée des rôles personnalisés dans les organisations W&B.
Obtenir un rôle personnalisé
Endpoint
- URL:
<host-url>/scim/Roles/{id} - Méthode: GET
Exemple
- Requête
- Réponse
Lister les rôles personnalisés
Endpoint
- URL:
<host-url>/scim/Roles - Méthode: GET
Exemple
- Requête
- Réponse
Créer un rôle personnalisé
- Endpoint:
<host-url>/scim/Roles - Méthode: POST
- Description: Crée un nouveau rôle personnalisé dans l’organisation W&B.
- Champs pris en charge:
| Champ | Type | Requis |
|---|---|---|
name | String | Nom du rôle personnalisé |
description | String | Description du rôle personnalisé |
permissions | Object array | Tableau d’objets d’autorisation, où chaque objet contient un champ de type chaîne name dont la valeur est de la forme w&bobject:operation. Par exemple, pour une opération de suppression sur des runs W&B, un objet d’autorisation aurait name défini sur run:delete. |
inheritedFrom | String | Le rôle prédéfini dont hérite le rôle personnalisé. Il peut s’agir de member ou de viewer. |
Exemple
- Requête
- Réponse
Mettre à jour un rôle personnalisé
Ajouter des autorisations à un rôle
- Endpoint :
<host-url>/scim/Roles/{id} - Méthode : PATCH
- Description : Ajouter des autorisations à un rôle personnalisé existant.
- Requête
- Réponse
Supprimer une autorisation d’un rôle
- Endpoint:
<host-url>/scim/Roles/{id} - Méthode: PATCH
- Description: Supprime des autorisations d’un rôle personnalisé existant.
- Requête
- Réponse
Remplacer le rôle personnalisé
- Endpoint:
<host-url>/scim/Roles/{id} - Méthode: PUT
- Description: Remplace intégralement la définition d’un rôle personnalisé.
- Requête
- Réponse
Supprimer un rôle personnalisé
Endpoint
- URL :
<host-url>/scim/Roles/{id} - Méthode : DELETE
Exemple
- Requête
- Réponse
Fonctionnalités avancées
Prise en charge des ETags
ETag et dans le champ meta.version.
Pour utiliser les ETags :
- Obtenir l’ETag actuel : lorsque vous envoyez une requête GET sur une ressource, relevez l’en-tête ETag dans la réponse
- Mise à jour conditionnelle : incluez l’ETag dans l’en-tête
If-Matchlors de la mise à jour
Exemple
412 Precondition Failed indique que la ressource a été modifiée depuis que vous l’avez récupérée.
Gestion des erreurs
| Code de statut | Description |
|---|---|
200 | Succès |
201 | Création réussie |
204 | No Content (suppression réussie) |
400 | Requête incorrecte - paramètres invalides ou corps de la requête invalide |
401 | Non autorisé - Échec de l’authentification |
403 | Interdit - Permissions insuffisantes |
404 | Introuvable - La ressource n’existe pas |
409 | Conflit - La ressource existe déjà |
412 | Échec de la précondition - ETag non correspondant |
500 | Erreur interne du serveur |
Différences d’implémentation selon le type de déploiement
| Fonctionnalité | Cloud dédié | Autogéré |
|---|---|---|
| Mettre à jour l’adresse e-mail de l’utilisateur | - | ✓ |
| Mettre à jour le nom d’affichage de l’utilisateur | - | ✓ |
| Désactivation de l’utilisateur | ✓ | ✓ |
| Réactivation de l’utilisateur | - | ✓ |
| Plusieurs adresses e-mail par utilisateur | ✓ | - |
Limitations
- Nombre maximal de résultats : 9999 éléments par requête.
- Environnements single-tenant : une seule adresse e-mail est prise en charge par utilisateur.
- Suppression de Teams : non prise en charge via SCIM (utilisez l’interface web W&B).
- Réactivation des utilisateurs : non prise en charge dans les environnements de Cloud mutualisé.
- Limites de licences : les opérations peuvent échouer si les limites de licences de l’organisation sont atteintes.