Passer au contenu principal

Aperçu

L’API System for Cross-domain Identity Management (SCIM) permet aux administrateurs de l’instance ou de l’organisation de gérer les utilisateurs, les groupes et les rôles personnalisés dans leur organisation W&B. Les groupes SCIM correspondent aux Teams W&B. L’API SCIM de W&B est compatible avec les principaux fournisseurs d’identité, notamment Okta, ce qui permet le provisionnement et le déprovisionnement automatisés des utilisateurs. Pour configurer le SSO avec Okta et d’autres fournisseurs d’identité, voir la documentation SSO. Pour obtenir des exemples pratiques en Python montrant comment interagir avec l’API SCIM, consultez notre dépôt wandb-scim.

Fonctionnalités prises en charge

  • Filtrage : l’API prend en charge le filtrage pour les points de terminaison /Users et /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

Choisissez de vous authentifier avec une identité utilisateur ou un compte de service, après avoir pris connaissance des principales différences.

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

Utilisez vos identifiants personnels d’administrateur lorsque vous effectuez des tâches d’administration interactives. Construisez l’en-tête HTTP Authorization de la manière suivante : Basic <base64(username:API-KEY)>. Par exemple, authentifiez-vous avec demo:p@55w0rd :
Authorization: Basic ZGVtbzpwQDU1dzByZA==

Comptes de service

Utilisez un compte de service limité à l’organisation pour l’automatisation ou les intégrations. Formatez l’en-tête HTTP 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 :
Authorization: Basic OnNhLXBANTV3MHJk

Gestion des utilisateurs

La ressource utilisateur SCIM est associée aux Users de W&B. Utilisez ces endpoints pour gérer les utilisateurs de votre organisation.

Obtenir un utilisateur

Récupère les informations d’un utilisateur précis de votre organisation.
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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur

Exemple

GET /scim/Users/abc

Lister les Users

Récupère la liste de tous les Users de votre organisation.
Cette opération ne récupère pas les comptes de service.

Filtrer les Users

Le point de terminaison /Users permet de filtrer les Users par nom d’utilisateur ou adresse e-mail :
  • userName eq "value" - Filtrer par nom d’utilisateur
  • emails.value eq "value" - Filtrer par adresse e-mail
Exemple
GET /scim/Users?filter=userName eq "john.doe"
GET /scim/Users?filter=emails.value eq "john@example.com"

Endpoint

  • URL: <host-url>/scim/Users
  • Méthode: GET

Exemple

GET /scim/Users

Créer un utilisateur

Crée un nouvel utilisateur au sein de votre organisation.

Endpoint

  • URL: <host-url>/scim/Users
  • Méthode: POST

Paramètres

ParamètreTypeRequisDescription
emailsarrayOuiTableau d’objets e-mail. Doit inclure une adresse e-mail principale
userNamestringOuiNom d’utilisateur du nouvel utilisateur

Exemple

POST /scim/Users
{
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "emails": [
        {
            "primary": true,
            "value": "dev-user2@example.com"
        }
    ],
    "userName": "dev-user2"
}

Réponse

(Status 201)
{
    "active": true,
    "displayName": "Dev User 2",
    "emails": {
        "Value": "dev-user2@example.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "def",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "location": "Users/def"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user2"
}

Supprimer un utilisateur

Conservez l’accès administrateurVous devez vous assurer qu’au moins un utilisateur administrateur existe en permanence dans votre instance ou votre organisation. Sinon, aucun utilisateur ne pourra configurer ni gérer le compte W&B de votre organisation. Si une organisation utilise SCIM ou un autre processus automatisé pour retirer des utilisateurs de W&B, une opération de déprovisionnement pourrait supprimer par inadvertance le dernier administrateur de l’instance ou de l’organisation.Pour obtenir de l’assistance concernant la mise en place de procédures opérationnelles, ou pour rétablir l’accès administrateur, contactez l’assistance.
Supprime définitivement un utilisateur de votre organisation.
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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur à supprimer

Exemple

DELETE /scim/Users/abc
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

Met à jour l’adresse e-mail principale d’un utilisateur. Non pris en charge dans le Cloud mutualisé, où le compte d’un utilisateur n’est pas géré par l’organisation.

Endpoint

  • URL: <host-url>/scim/Users/{id}
  • Méthode: PATCH

Paramètres

ParamètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur
opstringOuireplace
pathstringOuiemails
valuearrayOuiTableau contenant le nouvel objet d’adresse e-mail

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "emails",
            "value": [
                {
                    "value": "newemail@example.com",
                    "primary": true
                }
            ]
        }
    ]
}

Mettre à jour le nom d’affichage de l’utilisateur

Met à jour le nom d’affichage d’un utilisateur. Non pris en charge dans le Cloud mutualisé, où le compte d’un utilisateur n’est pas géré par l’organisation.

Endpoint

  • URL: <host-url>/scim/Users/{id}
  • Méthode: PATCH

Paramètres

ParamètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur
opstringOuireplace
pathstringOuidisplayName
valuestringOuiNouveau nom d’affichage

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "displayName",
            "value": "John Doe"
        }
    ]
}

Désactiver un utilisateur

Désactive un utilisateur dans votre organisation. Le résultat varie selon le type de déploiement :
  • Cloud dédié / Autogéré : définit le champ active de l’utilisateur sur false. 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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur à désactiver
opstringOuireplace
valueobjetOuiObjet contenant {"active": false}

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": false}
        }
    ]
}

Réponse

(Statut 200)
{
    "active": false,
    "displayName": "Dev User 1",
    "emails": {
        "Value": "dev-user1@example.com",
        "Display": "",
        "Type": "",
        "Primary": true
    },
    "id": "abc",
    "meta": {
        "resourceType": "User",
        "created": "2023-10-01T00:00:00Z",
        "lastModified": "2023-10-01T00:00:00Z",
        "location": "Users/abc"
    },
    "schemas": [
        "urn:ietf:params:scim:schemas:core:2.0:User"
    ],
    "userName": "dev-user1"
}

Réactiver un utilisateur

Réactive un utilisateur précédemment désactivé dans votre organisation.
  • 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 :
    {
        "schemas": [
            "urn:ietf:params:scim:api:messages:2.0:Error"
        ],
        "detail": "User reactivation operations are not supported in SaaS Cloud",
        "status": "400"
    }
    

Endpoint

  • URL: <host-url>/scim/Users/{id}
  • Méthode: PATCH

Paramètres

ParamètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur à réactiver
opstringOuireplace
valueobjetOuiObjet contenant {"active": true}

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "value": {"active": true}
        }
    ]
}

Attribuer un rôle au niveau de l’organisation

Attribue à un utilisateur 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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur
opstringOuireplace
pathstringOuiorganizationRole
valuestringOuiNom 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 member lui est attribué dans l’organisation.
  • Une licence Models viewer lui est attribuée au lieu d’une licence full. Cela permet un accès en lecture seule à Models et un accès complet au registre. Si aucune licence Models n’est disponible, une erreur Seat limit reached est 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 viewer lui est attribuée au lieu d’une licence full. Cela permet un accès en lecture seule à Weave. Si aucune licence Weave n’est disponible, une erreur Seat limit reached est 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 viewer du registre lui est attribué dans les registres visibles au niveau de l’organisation.

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin"
        }
    ]
}

Attribuer un rôle d’équipe

Attribue à un utilisateur 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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur
opstringOuireplace
pathstringOuiteamRoles
valuearrayOuiTableau d’objets contenant teamName et roleName

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "teamRoles",
            "value": [
                {
                    "roleName": "admin",
                    "teamName": "team1"
                }
            ]
        }
    ]
}

Ajouter au registre

Ajoute un utilisateur à un registre en lui attribuant un rôle au niveau du 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ètreTypeRequisDescription
idstringOuiL’ID unique de l’utilisateur
opstringOuiadd
pathstringOuiregistryRoles
valuearrayOuiTableau d’objets contenant registryName et roleName

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles",
            "value": [
                {
                    "roleName": "admin",
                    "registryName": "hello-registry"
                }
            ]
        }
    ]
}

Retirer du registre

Retire un utilisateur d’un 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ètreTypeRequisDescription
idstringYesL’ID unique de l’utilisateur
opstringYesremove
pathstringYes"registryRoles[registryName eq \"{registry_name}\"]" ou "registryRoles"

Exemple

PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles[registryName eq \"goodbye-registry\"]"
        }
    ]
}
PATCH /scim/Users/abc
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "registryRoles"
        }
    ]
}

Ressource de groupe

Lorsque vous créez un groupe SCIM dans votre IAM, cela crée un mappage vers une équipe W&B, et les autres opérations sur les groupes SCIM s’appliquent à cette équipe. Pour configurer un stockage personnalisé lors de la création de l’équipe, incluez storageBucket dans la requête.

Comptes de service

Lorsqu’une équipe W&B est créée à l’aide de SCIM, tous les comptes de service au niveau de l’organisation y sont automatiquement ajoutés afin de préserver leur accès aux ressources de l’équipe.

Filtrage des groupes

Le point de terminaison /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

GET /scim/Groups?filter=displayName eq "engineering-team"

Obtenir l’équipe

Récupérez les informations d’une équipe à l’aide de son ID unique.

Endpoint

  • URL: <host-url>/scim/Groups/{id}
  • Méthode: GET

Exemple

GET /scim/Groups/ghi

Liste des équipes

Récupérez la liste des équipes.

Endpoint

  • URL: <host-url>/scim/Groups
  • Méthode: GET

Exemple

GET /scim/Groups

Créer une équipe

  • Endpoint: <host-url>/scim/Groups
  • Méthode: POST
  • Description: Crée une nouvelle ressource d’équipe.
  • Champs pris en charge:
ChampTypeRequis
displayNameChaîneOui
membersTableau multivaleurOui (le sous-champ value est requis et correspond à un ID d’utilisateur)
storageBucketObjetNon
Vous pouvez configurer Bring your own bucket (BYOB) au niveau de l’équipe lors de sa création en incluant un objet 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).
W&B valide que le bucket existe et est accessible avant de créer l’équipe. Si la validation échoue, la requête SCIM échoue et l’équipe n’est pas créée. Une valeur provider invalide renvoie 400 Bad Request avec une erreur SCIM qui répertorie les valeurs autorisées.

Exemples

Ces exemples montrent comment créer une équipe sans stockage personnalisé et avec un stockage BYOB chez un fournisseur donné. Sélectionnez un onglet correspondant à la configuration de stockage souhaitée pour afficher un exemple de requête, puis sélectionnez l’onglet Réponse pour voir un exemple de réponse.
POST /scim/Groups
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "wandb-support",
    "members": [
        {
            "value": "def"
        }
    ]
}

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 : add un membre, remove un membre, replace les 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, ou members pour 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

Remplace tous les membres d’une équipe par une nouvelle liste.
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.
PUT /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
    "displayName": "acme-devs",
    "members": [
        {
            "value": "{user_id_1}"
        },
        {
            "value": "{user_id_2}"
        }
    ]
}
Ajouter un utilisateur à une équipe Ajout de 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.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add",
            "path": "members",
            "value": [
                {
                    "value": "{user_id}"
                }
            ]
        }
    ]
}
Supprimer un utilisateur spécifique d’une équipe Suppression de 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.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "members[value eq \"{user_id}\"]"
        }
    ]
}
Suppression de tous les Users d’une équipe Suppression de tous les Users de 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.
PATCH /scim/Groups/{team_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "members"
        }
    ]
}

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

La ressource de rôle SCIM correspond aux rôles personnalisés de W&B. Comme indiqué précédemment, les endpoints /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é

Récupérez les informations d’un rôle personnalisé en indiquant son ID unique.

Endpoint

  • URL: <host-url>/scim/Roles/{id}
  • Méthode: GET

Exemple

GET /scim/Roles/abc

Lister les rôles personnalisés

Récupérez les informations sur tous les rôles personnalisés de l’organisation W&B.

Endpoint

  • URL: <host-url>/scim/Roles
  • Méthode: GET

Exemple

GET /scim/Roles

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:
ChampTypeRequis
nameStringNom du rôle personnalisé
descriptionStringDescription du rôle personnalisé
permissionsObject arrayTableau 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.
inheritedFromStringLe rôle prédéfini dont hérite le rôle personnalisé. Il peut s’agir de member ou de viewer.

Exemple

POST /scim/Roles
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Sample custom role",
    "description": "A sample custom role for example",
    "permissions": [
        {
            "name": "project:update"
        }
    ],
    "inheritedFrom": "member"
}

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.
PATCH /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "add",
            "path": "permissions",
            "value": [
                {
                    "name": "project:delete"
                },
                {
                    "name": "run:stop"
                }
            ]
        }
    ]
}

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.
PATCH /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "remove",
            "path": "permissions",
            "value": [
                {
                    "name": "project:update"
                }
            ]
        }
    ]
}

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é.
PUT /scim/Roles/{role_id}
{
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Role"],
    "name": "Updated custom role",
    "description": "Updated description for the custom role",
    "permissions": [
        {
            "name": "project:read"
        },
        {
            "name": "run:read"
        },
        {
            "name": "artifact:read"
        }
    ],
    "inheritedFrom": "viewer"
}

Supprimer un rôle personnalisé

Supprimez un rôle personnalisé dans l’organisation W&B. À utiliser avec prudence. Le rôle prédéfini dont héritait le rôle personnalisé est désormais attribué à tous les utilisateurs auxquels ce rôle personnalisé était attribué avant l’opération.

Endpoint

  • URL : <host-url>/scim/Roles/{id}
  • Méthode : DELETE

Exemple

DELETE /scim/Roles/abc

Fonctionnalités avancées

Prise en charge des ETags

L’API SCIM prend en charge les ETags pour les mises à jour conditionnelles afin d’éviter les conflits liés aux modifications simultanées. Les ETags sont renvoyés dans l’en-tête de réponse ETag et dans le champ meta.version.

ETags

Pour utiliser les ETags :
  1. Obtenir l’ETag actuel : lorsque vous envoyez une requête GET sur une ressource, relevez l’en-tête ETag dans la réponse
  2. Mise à jour conditionnelle : incluez l’ETag dans l’en-tête If-Match lors de la mise à jour

Exemple

# Obtenir l'utilisateur et noter l'ETag
GET /scim/Users/abc
# La réponse inclut : ETag: W/"xyz123"

# Mettre à jour avec l'ETag
PATCH /scim/Users/abc
If-Match: W/"xyz123"

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations": [
        {
            "op": "replace",
            "path": "organizationRole",
            "value": "admin"
        }
    ]
}
Une réponse d’erreur 412 Precondition Failed indique que la ressource a été modifiée depuis que vous l’avez récupérée.

Gestion des erreurs

L’API SCIM renvoie des réponses d’erreur SCIM standard :
Code de statutDescription
200Succès
201Création réussie
204No Content (suppression réussie)
400Requête incorrecte - paramètres invalides ou corps de la requête invalide
401Non autorisé - Échec de l’authentification
403Interdit - Permissions insuffisantes
404Introuvable - La ressource n’existe pas
409Conflit - La ressource existe déjà
412Échec de la précondition - ETag non correspondant
500Erreur interne du serveur

Différences d’implémentation selon le type de déploiement

W&B propose deux implémentations distinctes de l’API SCIM, dont les fonctionnalités diffèrent :
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.