Créer équipe

Espace de noms: microsoft.graph

Importante

Les API sous la version /beta dans Microsoft Graph sont susceptibles d’être modifiées. L’utilisation de ces API dans des applications de production n’est pas prise en charge. Pour déterminer si une API est disponible dans v1.0, utilisez le sélecteur Version .

Créer une nouvelle équipe.

Remarque

Lorsque vous créez une équipe, l’approvisionnement du site SharePoint du canal général peut échouer. Si l’approvisionnement du site échoue au bout de 5 minutes, utilisez l’API Get filesFolder pour déclencher l’approvisionnement.

Cette API est disponible dans les déploiements cloud nationaux suivants.

Service global Gouvernement américain L4 Gouvernement américain L5 (DOD) Chine exploitée par 21Vianet

Autorisations

Choisissez l’autorisation ou les autorisations marquées comme étant les moins privilégiées pour cette API. Utilisez une ou plusieurs autorisations privilégiées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, voir Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez la référence des autorisations.

Type d’autorisation Autorisations les moins privilégiées Autorisations à privilèges plus élevés
Déléguée (compte professionnel ou scolaire) Team.Create Directory.ReadWrite.All, Group.ReadWrite.All
Déléguée (compte Microsoft personnel) Non prise en charge. Non prise en charge.
Application Team.Create Directory.ReadWrite.All, Group.ReadWrite.All, Teamwork.Migrate.All

Remarque

L’autorisation Teamwork.Migrate.All est prise en charge uniquement pour la migration. À l’avenir, Microsoft pourra exiger que vous ou vos clients payiez des frais supplémentaires en fonction du volume de données importées.

  • Les autorisations Group.ReadWrite.All et Directory.ReadWrite.All sont prises en charge uniquement à des fins de compatibilité descendante. Nous vous recommandons de mettre à jour vos solutions pour utiliser une autorisation différente répertoriée dans le tableau précédent et d’éviter d’utiliser ces autorisations à l’avenir.

Requête HTTP

POST /teams

En-têtes de demande

En-tête Valeur
Autorisation Porteur {token}. Obligatoire. En savoir plus sur l’authentification et les autorisations.
Content-Type application/json. Obligatoire.

Corps de la demande

Dans le corps de la demande, fournissez une représentation JSON de l’objet équipe. Vous pouvez également spécifier une valeur pour la propriété firstChannelName afin de nommer le premier canal créé. La valeur par défaut du premier canal est General.

Réponse

Si elle réussit, cette API renvoie une réponse 202 Accepted contenant un lien vers teamsAsyncOperation.

Exemples

Exemple 1 : autorisations déléguées

L’exemple suivant illustre une requête minimale. Comme le client a omis d’autres propriétés, il prend implicitement les valeurs par défaut du modèle prédéfini représenté par template.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')",
  "displayName": "My Sample Team",
  "description": "My sample team's description",
  "firstChannelName": "My first channel of the sample team"
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 2 : autorisations d’application

L’exemple suivant illustre une requête minimale utilisant des autorisations d’application. Comme le client a omis d’autres propriétés, il prend implicitement les valeurs par défaut du modèle prédéfini représenté par template. Lors de l’émission d’une demande avec des autorisations d’application, unutilisateur doit être spécifié dans la collection members.

Remarque : Vous ne pouvez spécifier qu’un seul membre comme propriétaire dans ce scénario.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
   "template@odata.bind":"https://graph.microsoft.com/beta/teamsTemplates('standard')",
   "displayName":"My Sample Team",
   "description":"My sample team’s description",
   "firstChannelName": "My first channel of the sample team",
   "members":[
      {
         "@odata.type":"#microsoft.graph.aadUserConversationMember",
         "roles":[
            "owner"
         ],
         "user@odata.bind":"https://graph.microsoft.com/beta/users('0040b377-61d8-43db-94f5-81374122dc7e')"
      }
   ]
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 3 : Créer une équipe avec plusieurs canaux, des applications installées, et les onglets épinglés à l’aide des autorisations déléguées

L’exemple suivant montre une demande avec une charge utile complète. Le client peut substituer des valeurs dans le modèle de base et les ajouter aux éléments évalués dans un tableau dans la limite autorisée par les règles de validation pour la specialization.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
    "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')",
    "visibility": "Private",
    "displayName": "Sample Engineering Team",
    "description": "This is a sample engineering team, used to showcase the range of properties supported by this API",
    "firstChannelName": "My first channel of the sample team",
    "channels": [
        {
            "displayName": "Announcements 📢",
            "isFavoriteByDefault": true,
            "description": "This is a sample announcements channel that is favorited by default. Use this channel to make important team, product, and service announcements."
        },
        {
            "displayName": "Training 🏋️",
            "isFavoriteByDefault": true,
            "description": "This is a sample training channel, that is favorited by default, and contains an example of pinned website and YouTube tabs.",
            "tabs": [
                {
                    "teamsApp@odata.bind": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('com.microsoft.teamspace.tab.web')",
                    "displayName": "A Pinned Website",
                    "configuration": {
                        "contentUrl": "https://learn.microsoft.com/microsoftteams/microsoft-teams"
                    }
                },
                {
                    "teamsApp@odata.bind": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('com.microsoft.teamspace.tab.youtube')",
                    "displayName": "A Pinned YouTube Video",
                    "configuration": {
                        "contentUrl": "https://tabs.teams.microsoft.com/Youtube/Home/YoutubeTab?videoId=X8krAMdGvCQ",
                        "websiteUrl": "https://www.youtube.com/watch?v=X8krAMdGvCQ"
                    }
                }
            ]
        },
        {
            "displayName": "Planning 📅 ",
            "description": "This is a sample of a channel that is not favorited by default, these channels will appear in the more channels overflow menu.",
            "isFavoriteByDefault": false
        },
        {
            "displayName": "Issues and Feedback 🐞",
            "description": "This is a sample of a channel that is not favorited by default, these channels will appear in the more channels overflow menu."
        }
    ],
    "memberSettings": {
        "allowCreateUpdateChannels": true,
        "allowDeleteChannels": true,
        "allowAddRemoveApps": true,
        "allowCreateUpdateRemoveTabs": true,
        "allowCreateUpdateRemoveConnectors": true
    },
    "guestSettings": {
        "allowCreateUpdateChannels": false,
        "allowDeleteChannels": false
    },
    "funSettings": {
        "allowGiphy": true,
        "giphyContentRating": "Moderate",
        "allowStickersAndMemes": true,
        "allowCustomMemes": true
    },
    "messagingSettings": {
        "allowUserEditMessages": true,
        "allowUserDeleteMessages": true,
        "allowOwnerDeleteMessages": true,
        "allowTeamMentions": true,
        "allowChannelMentions": true
    },
    "discoverySettings": {
        "showInTeamsSearchAndSuggestions": true
    },
    "installedApps": [
        {
            "teamsApp@odata.bind": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('com.microsoft.teamspace.tab.vsts')"
        },
        {
            "teamsApp@odata.bind": "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('1542629c-01b3-4a6d-8f76-1938b779e48d')"
        }
    ]
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('958e8cf8-169a-42aa-8599-5c1c5479c0ca')/operations('00000000-0000-0000-0000-000000000000')
Content-Location: /teams('958e8cf8-169a-42aa-8599-5c1c5479c0ca')
Content-Length: 0

Exemple 4: créer une équipe à partir d’un groupe

L’exemple suivant montre comment vous pouvez créer une équipe à partir d'un groupe, à partir d’unGroupID.

Voici quelques remarques à retenir sur cet appel :

  • Pour créer une équipe, le groupe à partir duquel vous la créez doit avoir au moins un propriétaire.
  • L’équipe créée hérite toujours de propriétés telles que le nom d’affichage, la visibilité, la spécialisation et les membres du groupe. Par conséquent, lorsque vous effectuez cet appel avec la propriété, l’inclusion de l’équipe group@odata.binddisplayName, de la visibilité, de la spécialisation ou members@odata.bind des propriétés renvoie une erreur.
  • Si le groupe a été créé il y a moins de 15 minutes, l’appel de l’API Créer une équipe peut échouer et renvoyer un code d’erreur 404 en raison des délais de réplication. Nous vous recommandons de réessayer l’appel Créer une équipe trois fois, avec un délai de 10 secondes entre les appels. Pour en savoir plus, consultez Conception en vue d’une cohérence éventuelle pour Microsoft Entra.
  • La spécification d’un nom de premier canal avec la propriété firstChannelName n’est pas prise en charge lorsque vous créez une équipe à partir d’un groupe.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')",
  "group@odata.bind": "https://graph.microsoft.com/beta/groups('71392b2f-1765-406e-86af-5907d9bdb2ab')"
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('71392b2f-1765-406e-86af-5907d9bdb2ab')/operations('9698b2b8-9636-4f49-b7a8-10dadfa7062a')
Content-Location: /teams('71392b2f-1765-406e-86af-5907d9bdb2ab')
Content-Length: 0

Exemple 5 : Créer une équipe depuis un groupe avec plusieurs canaux, des applications installées, et les onglets épinglés

L’exemple suivant montre une demande qui convertit un groupe existant avec des propriétés étendues qui créent l’équipe avec plusieurs canaux, applications installées et onglets épinglés.

Pour en savoir plus sur les propriétés et les types de modèles de base pris en charge, reportez-vous à la rubrique sur la prise en main des modèles Teams.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
   "template@odata.bind":"https://graph.microsoft.com/beta/teamsTemplates('standard')",
   "group@odata.bind":"https://graph.microsoft.com/beta/groups('dbd8de4f-5d47-48da-87f1-594bed003375')",
   "channels":[
      {
         "displayName":"Class Announcements 📢",
         "isFavoriteByDefault":true
      },
      {
         "displayName":"Homework 🏋️",
         "isFavoriteByDefault":true
      }
   ],
   "memberSettings":{
      "allowCreateUpdateChannels":false,
      "allowDeleteChannels":false,
      "allowAddRemoveApps":false,
      "allowCreateUpdateRemoveTabs":false,
      "allowCreateUpdateRemoveConnectors":false
   },
   "installedApps":[
      {
         "teamsApp@odata.bind":"https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('com.microsoft.teamspace.tab.vsts')"
      },
      {
         "teamsApp@odata.bind":"https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('1542629c-01b3-4a6d-8f76-1938b779e48d')"
      }
   ]
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 6 : créer une équipe avec un type de modèle de base non standard

Les types de modèles de base sont des modèles spéciaux créés par Microsoft pour des secteurs d’activité spécifiques. Ces modèles de base contiennent souvent des applications propriétaires qui ne sont pas disponibles dans le Store et des propriétés d’équipe qui ne sont pas encore prises en charge individuellement dans les modèles Microsoft Teams.

Pour créer une équipe à partir d’un modèle de base non standard, vous devez modifier la template@odata.bind propriété dans le corps de la demande de standard celle de pointer vers le modèle de base spécifique que vous souhaitez créer.

Pour en savoir plus sur les types de modèles de base pris en charge, reportez-vous à la rubrique sur la prise en main des modèles Teams.

Remarque

Les utilisateurs de Teams peuvent mettre jusqu’à 24 heures à voir un modèle personnalisé modifier dans la galerie.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('educationClass')",
  "displayName": "My Class Team",
  "description": "My Class Team’s Description"
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 7 : créer une équipe avec un type de modèle de base non standard localisé

Les types de modèles de base peuvent être localisés dans la langue de votre choix, ce qui vous permet de créer des modèles dans la langue de votre choix.

Choisissez votre modèle d’équipe dans la liste de définitions renvoyée par l’opération Liste des définitions .

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
    "templateDefinition@odata.bind": "https://graph.microsoft.com/beta/teamwork/teamTemplates/com.microsoft.teams.template.ManageAProject/definitions/Y29tLm1pY3Jvc29mdC50ZWFtcy50ZW1wbGF0ZS5NYW5hZ2VBUHJvamVjdCMjUHVibGljIyNhci1TQQ==",
    "displayName": "My Sample Team",
    "description": "My Sample Team’s Description"
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 8 : créer une équipe avec un type de modèle de base non standard avec des propriétés étendues

Les types de modèles de base peuvent être étendus avec d’autres propriétés, ce qui vous permet de créer sur un modèle de base existant avec davantage de paramètres d’équipe, de canaux, d’applications ou d’onglets.

Pour en savoir plus sur les propriétés et les types de modèles de base pris en charge, reportez-vous à la rubrique sur la prise en main des modèles Teams.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
   "template@odata.bind":"https://graph.microsoft.com/beta/teamsTemplates('educationClass')",
   "displayName":"My Class Team",
   "description":"My Class Team’s Description",
   "channels":[
      {
         "displayName":"Class Announcements 📢",
         "isFavoriteByDefault":true
      },
      {
         "displayName":"Homework 🏋️",
         "isFavoriteByDefault":true
      }
   ],
   "memberSettings":{
      "allowCreateUpdateChannels":false,
      "allowDeleteChannels":false,
      "allowAddRemoveApps":false,
      "allowCreateUpdateRemoveTabs":false,
      "allowCreateUpdateRemoveConnectors":false
   },
   "installedApps":[
      {
         "teamsApp@odata.bind":"https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('com.microsoft.teamspace.tab.vsts')"
      },
      {
         "teamsApp@odata.bind":"https://graph.microsoft.com/v1.0/appCatalogs/teamsApps('1542629c-01b3-4a6d-8f76-1938b779e48d')"
      }
   ]
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0

Exemple 9 : créer une équipe en mode de migration

Demande

L’exemple suivant montre comment créer une équipe pour les messages importés.

Remarque : À l’avenir, Microsoft pourra exiger que vous ou vos clients payiez des frais supplémentaires en fonction du volume de données importé.

Remarque : Les équipes créées en mode de migration prennent uniquement en charge le standard modèle. Remarque : Cet appel ne prend pas en charge la propriété firstChannelName .

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
  "@microsoft.graph.teamCreationMode": "migration",
  "template@odata.bind": "https://graph.microsoft.com/beta/teamsTemplates('standard')",
  "displayName": "My Sample Team",
  "description": "My Sample Team’s Description",
  "createdDateTime": "2020-03-14T11:22:17.067Z"
}

Réponse

HTTP/1.1 202 Accepted
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')

Réponse d’erreur

Si la requête échoue, cette méthode renvoie un code de réponse 400 Bad Request.

400 Bad Request

Voici quelques-unes des raisons qui peuvent être à l’origine de cette réponse :

  • createdDateTime est défini à l’avenir.
  • createdDateTime est correctement spécifiée, mais l’attribut d’instance teamCreationMode est manquant ou a une valeur non valide.

Exemple 10 : autorisations d’application utilisant le nom d’utilisateur principal

L’exemple suivant illustre une requête minimale utilisant des autorisations d’application. Comme le client a omis d’autres propriétés, il prend implicitement les valeurs par défaut du modèle prédéfini représenté par template. Vous devez spécifier un utilisateur dans la collection pour les members demandes avec des autorisations d’application.

Demande

POST https://graph.microsoft.com/beta/teams
Content-Type: application/json

{
   "template@odata.bind":"https://graph.microsoft.com/beta/teamsTemplates('standard')",
   "displayName":"My Sample Team",
   "description":"My Sample Team’s Description",
   "members":[
      {
         "@odata.type":"#microsoft.graph.aadUserConversationMember",
         "roles":[
            "owner"
         ],
         "user@odata.bind":"https://graph.microsoft.com/beta/users('jacob@contoso.com')"
      }
   ]
}

Réponse

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')/operations('3a6fdce1-c261-48bc-89de-1cfef658c0d5')
Content-Location: /teams('dbd8de4f-5d47-48da-87f1-594bed003375')
Content-Length: 0