| title | team: clone |
|---|---|
| description | Create a copy of a team. This operation also creates a copy of the corresponding group. |
| author | MSFTRickyCastaneda |
| ms.localizationpriority | medium |
| ms.subservice | teams |
| doc_type | apiPageType |
| ms.date | 08/16/2024 |
Namespace: microsoft.graph
[!INCLUDE beta-disclaimer]
Create a copy of a team. This operation also creates a copy of the corresponding group. You can specify which parts of the team to clone:
- apps - Copies Microsoft Teams apps that are installed in the team.
- channels – Copies the channel structure (but not the messages in the channel).
- members – Copies the members and owners of the group.
- settings – Copies all settings within the team, along with key group settings.
- tabs – Copies the tabs within channels.
Note: This method isn't supported for organization-wide teams.
Note
A known issue related to owners of cloned teams is associated with this method. For details, see Known issues.
When tabs are cloned, they aren't configured. The tabs are displayed on the tab bar in Microsoft Teams, and the first time a user opens them, they must go through the configuration screen. If the user who opens the tab doesn't have permission to configure apps, they see a message that says that the tab isn't configured.
Cloning is a long-running operation. After the POST clone returns, you need to GET the operation returned by the Location: header to see if it's running, succeeded, or failed. You should continue to GET until the status isn't running. The recommended delay between GETs is 5 seconds.
[!INCLUDE national-cloud-support]
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
[!INCLUDE permissions-table]
Note
The Group.ReadWrite.All and Directory.ReadWrite.All permissions are supported only for backward compatibility. We recommend that you update your solutions to use an alternative permission listed in the previous table and avoid using these permissions going forward.
POST /teams/{id}/clone| Header | Value |
|---|---|
| Authorization | Bearer {token}. Required. Learn more about authentication and authorization. |
| Content-Type | application/json |
| Property | Type | Description |
|---|---|---|
| classification | String (optional) | Describes a classification for the group (such as low, medium or high business impact). Valid values for this property are defined by creating a ClassificationList setting value, based on the template definition. If classification isn't specified, the classification is copied from the original team/group. |
| description | String (optional) | An optional description for the group. If this property isn't specified, it's left blank. |
| displayName | String | The display name for the group. This property is required when a group is created and it can't be cleared during updates. Supports $filter and $orderby. |
| mailNickname | String | The mail alias for the group, unique in the organization. This property must be specified when a group is created. Supports $filter. If this property isn't specified, it's computed from the displayName. Known issue: this property is currently ignored. |
| partsToClone | clonableTeamParts | A comma-separated list of the parts to clone. Legal parts are "apps, tabs, settings, channels, members". |
| visibility | teamVisibilityType (optional) | Specifies the visibility of the group. The possible values are: Private, Public. If visibility isn't specified, the visibility is copied from the original team/group. If the team being cloned is an educationClass team, the visibility parameter is ignored, and the new group's visibility will be set to HiddenMembership. |
Note
If the description property isn't specified in the request body, it takes the value of the displayName property from the request payload.
If successful, this method returns a 202 Accepted response code with a Location: header pointing to the operation resource.
When the operation is complete, the operation resource tells you the id of the created team.
The following example shows a request.
POST https://graph.microsoft.com/beta/teams/{id}/clone
Content-Type: application/json
{
"displayName": "Library Assist",
"description": "Self help community for library",
"mailNickname": "libassist",
"partsToClone": "apps,tabs,settings,channels,members",
"visibility": "public"
}[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
[!INCLUDE sample-code] [!INCLUDE sdk-documentation]
The following example shows the response. Note: The response object shown here might be shortened for readability.
HTTP/1.1 202 Accepted
Location: /teams({id})/operations({opId})
Content-Type: text/plain
Content-Length: 0