Crear equipo

Espacio de nombres: microsoft.graph

Importante

Las API de la /beta versión 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 v1.0, use el selector de versiones.

Cree un equipo.

Permisos

Se requiere uno de los siguientes permisos para llamar a esta API. Para obtener más información, incluido cómo elegir permisos, vea Permisos.

Tipo de permiso Permisos (de menos a más privilegiados)
Delegado (cuenta profesional o educativa) Team.Create, Group.ReadWrite.All , Directory.ReadWrite.All
Delegado (cuenta personal de Microsoft) No admitida.
Aplicación Team.Create, Teamwork.Migrate.All, Group.ReadWrite.All , Directory.ReadWrite.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.

Nota: los permisos marcados con ** están en desuso y no deberían usarse.

Solicitud HTTP

POST /teams

Encabezados de solicitud

Encabezado Valor
Authorization {token} de portador. Obligatorio.
Content-Type application/json. Obligatorio.

Cuerpo de la solicitud

En el cuerpo de la solicitud, agregue una representación JSON del objeto team.

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

Este es un ejemplo de una solicitud mínima. Al omitir otras propiedades, el cliente usa de forma implícita 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"
}

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

Este es un ejemplo de una solicitud mínima con permisos de aplicación. Al omitir otras propiedades, el cliente usa de forma implícita 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.

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

La siguiente es una solicitud con una carga completa. El cliente puede reemplazar los valores de la plantilla base y agregarlos a los elementos con valor de matriz en la medida que lo permiten las reglas de validación para la 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",
    "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://docs.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 en el que lo está creando tiene que tener como mínimo un propietario.
  • El equipo resultante siempre heredará del nombre de pantalla, la visibilidad, la especialización y los miembros del grupo. De esta manera, al hacer esta llamada con la propiedad group@odata.bind, la inclusión de las propiedades displayName, visibilidad, especialización, o members@odata.bind del equipo devolverá 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. Se recomienda que vuelva a intentar la llamada para Crear equipo tres veces, con un retraso de 10 segundos entre llamadas.

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

La siguiente es una solicitud que convierte un grupo existente con propiedades extendidas, que creará 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 plantillas base son plantillas especiales que Microsoft creó para sectores específicos. Con frecuencia, estas plantillas base contienen aplicaciones propietarias que no están disponibles en la tienda de aplicaciones y propiedades de equipo que aún no se admiten de forma individual en las plantillas de Microsoft Teams.

Para crear un equipo a partir de una plantilla base no estándar, puede cambiar la propiedad template@odata.bind en el cuerpo de la solicitud de standard para apuntar a la plantilla base específica que quiera crear.

Para obtener más información sobre los tipos de plantilla base admitidos, 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"
}

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 y propiedades extendidas

Los tipos de plantilla base se pueden extender con propiedades adicionales, lo que le permite usar una plantilla base existente con otras opciones 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 8: 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 plantilla standard.

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 9: Permisos de aplicación con el nombre principal del usuario

Este es un ejemplo de una solicitud mínima con permisos de aplicación. Al omitir otras propiedades, el cliente usa de forma implícita 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.

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

Vea también