Crear equipo

Espacio de nombres: microsoft.graph

Importante

Las API de la versión /beta de Microsoft Graph están sujetas a cambios. No se admite el uso de estas API en aplicaciones de producción. Para determinar si una API está disponible en la versión 1.0, use el selector de Versión.

Cree un equipo.

Nota:

Al crear un equipo, es posible que el sitio de SharePoint del canal general no se pueda aprovisionar. Si el sitio no se aprovisiona después de 5 minutos, use la API Get filesFolder para desencadenar el aprovisionamiento.

Esta API está disponible en las siguientes implementaciones en la nube nacional.

Servicio global Administración pública de EE. UU. Gobierno de EE. UU. L5 (DOD) China operado por 21Vianet

Permissions

Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use uno o varios permisos con privilegios más altos solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.

Tipo de permiso Permisos con privilegios mínimos Permisos con privilegios más altos
Delegado (cuenta profesional o educativa) Team.Create Directory.ReadWrite.All, Group.ReadWrite.All
Delegado (cuenta personal de Microsoft) No admitida. No admitida.
Aplicación Team.Create Directory.ReadWrite.All, Group.ReadWrite.All, Teamwork.Migrate.All

Nota:

El permiso Teamwork.Migrate.All solo se admite para la migración. En el futuro, Microsoft puede solicitarle a usted o a sus clientes que paguen tarifas adicionales en función de la cantidad de datos que se importen.

  • Los permisos Group.ReadWrite.All y Directory.ReadWrite.All solo se admiten por motivos de compatibilidad con versiones anteriores. Se recomienda actualizar las soluciones para usar un permiso alternativo enumerado en la tabla anterior y así evitar el uso de estos permisos en el futuro.

Solicitud HTTP

POST /teams

Encabezados de solicitud

Encabezado Valor
Authorization {token} de portador. Obligatorio. Obtenga más información sobre autenticación y autorización.
Content-Type application/json. Obligatorio.

Cuerpo de la solicitud

En el cuerpo de la solicitud, agregue una representación JSON del objeto team. Opcionalmente, especifique un valor para la propiedad firstChannelName para nombrar el primer canal que se crea. El valor predeterminado del primer canal es General.

Respuesta

Si se ejecuta de manera correcta, esta API devuelve una respuesta 202 Accepted que contiene un vínculo al elemento teamsAsyncOperation.

Ejemplos

Ejemplo 1: permisos delegados

En el ejemplo siguiente se muestra una solicitud mínima. Dado que el cliente omitió otras propiedades, está tomando implícitamente los valores predeterminados de la plantilla predefinida representada por template.

Solicitud

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"
}

Respuesta

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

Ejemplo 2: permisos de aplicación

En el ejemplo siguiente se muestra una solicitud mínima mediante permisos de aplicación. Dado que el cliente omitió otras propiedades, está tomando implícitamente los valores predeterminados de la plantilla predefinida representada por template. Al emitir una solicitud con permisos de aplicación, es necesario especificar un usuario en la colección members.

Nota: En este escenario, solo puede especificar un único miembro como propietario.

Solicitud

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')"
      }
   ]
}

Respuesta

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

Ejemplo 3: crear un equipo con varios canales, aplicaciones instaladas y pestañas ancladas mediante permisos delegados

En el ejemplo siguiente se muestra una solicitud con una carga completa. El cliente puede reemplazar los valores de la plantilla base y agregar los elementos con valores de matriz en la medida en que lo permitan las reglas de validación de specialization.

Solicitud

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')"
        }
    ]
}

Respuesta

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

Ejemplo 4: crear un equipo a partir de un grupo

El siguiente ejemplo muestra cómo puede crear un equipo nuevo a partir de un grupo, teniendo un Id. de grupo.

Algunas cosas a tener en cuenta sobre esta llamada:

  • Para crear un equipo, el grupo desde el que se crea debe tener al menos un propietario.
  • El equipo que se crea siempre hereda propiedades como el nombre para mostrar, la visibilidad, la especialización y los miembros del grupo. Por lo tanto, al realizar esta llamada con la group@odata.bind propiedad, la inclusión de displayName de equipo, la visibilidad, la especialización o members@odata.bind las propiedades devuelven un error.
  • Si hace menos de 15 minutos desde que se creó el grupo, es posible que la llamada de Crear equipo falle con un código de error 404 debido a los retrasos en la replicación. Le recomendamos que vuelva a intentar la llamada Crear equipo tres veces, con un retraso de 10 segundos entre llamadas. Obtenga más información en Diseño para lograr coherencia final para Microsoft Entra.
  • No se admite la especificación de un primer nombre de canal con la propiedad firstChannelName cuando se crea un equipo a partir de un grupo.

Solicitud

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')"
}

Respuesta

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

Ejemplo 5: crear un equipo desde un grupo con varios canales, aplicaciones instaladas y pestañas ancladas

En el ejemplo siguiente se muestra una solicitud que convierte un grupo existente con propiedades extendidas que crean el equipo con varios canales, aplicaciones instaladas y pestañas ancladas.

Para obtener más información sobre los tipos de plantilla base y las propiedades admitidas, vea Introducción a las plantillas de Teams.

Solicitud

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')"
      }
   ]
}

Respuesta

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

Ejemplo 6: Crear un equipo con un tipo de plantilla base no estándar

Los tipos de plantilla base son plantillas especiales que Microsoft creó para sectores específicos. Estas plantillas base a menudo contienen aplicaciones patentadas que no están disponibles en la tienda y propiedades de equipo que aún no se admiten individualmente en las plantillas de Microsoft Teams.

Para crear un equipo a partir de una plantilla base no estándar, deberá cambiar la template@odata.bind propiedad del cuerpo de la solicitud de standard que apunte a la plantilla base específica que desea crear.

Para obtener más información sobre los tipos de plantilla base admitidos, vea Introducción a las plantillas de Teams.

Nota:

Los usuarios de Teams pueden tardar hasta 24 horas en ver un cambio de plantilla personalizada en la galería.

Solicitud

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"
}

Respuesta

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

Ejemplo 7: Crear un equipo con un tipo de plantilla base no estándar localizada

Los tipos de plantillas base se pueden localizar al idioma que prefiera, lo que le permite crear plantillas en el idioma que prefiera.

Elija la plantilla de equipo de la lista de definiciones devuelta por la operación List definitions .

Solicitud

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"
}

Respuesta

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

Ejemplo 8: Crear un equipo con un tipo de plantilla base no estándar con propiedades extendidas

Los tipos de plantillas base se pueden ampliar con otras propiedades, lo que le permite crear a partir de una plantilla base existente con más opciones de configuración de equipo, canales, aplicaciones o pestañas.

Para obtener más información sobre los tipos de plantilla base y las propiedades admitidas, vea Introducción a las plantillas de Teams.

Solicitud

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')"
      }
   ]
}

Respuesta

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

Ejemplo 9: Crear un equipo en modo de migración

Solicitud

En el siguiente ejemplo se muestra cómo crear un equipo para mensajes importados.

Nota: En el futuro, Microsoft puede solicitarle a usted o a sus clientes que paguen tarifas adicionales en función de la cantidad de datos que se importen.|

Nota: Los equipos creados en el modo de migración solo admiten la standard plantilla. Nota: Esta llamada no admite la propiedad 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"
}

Respuesta

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')

Respuesta de error

Si la solicitud no se ejecuta correctamente, este método devuelve un código de respuesta 400 Bad Request.

400 Bad Request

A continuación, se presentan motivos habituales por los que se genera esta respuesta:

  • createdDateTime está establecido en una fecha futura.
  • createdDateTime está especificada correctamente, pero no se encuentra el atributo de instancia teamCreationMode o se ha establecido en un valor que no es válido.

Ejemplo 10: Permisos de aplicación mediante el nombre principal de usuario

En el ejemplo siguiente se muestra una solicitud mínima mediante permisos de aplicación. Dado que el cliente omitió otras propiedades, está tomando implícitamente los valores predeterminados de la plantilla predefinida representada por template. Debe especificar un usuario en la colección para las members solicitudes con permisos de aplicación.

Solicitud

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')"
      }
   ]
}

Respuesta

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