Partager via


driveItem : copy

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éez de façon asynchrone une copie d’un objet driveItem (y compris les enfants) sous un nouvel élément parent ou avec un nouveau nom. Une fois la demande confirmée, elle entre dans une file d’attente. La copie réelle, y compris les sous-éléments, se produit à un moment indéterminé. La progression est signalée jusqu’à ce que l’opération soit terminée en surveillant la progression.

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

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Autorisations

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

Type d’autorisation Autorisations avec privilèges minimum Autorisations privilégiées plus élevées
Déléguée (compte professionnel ou scolaire) Files.ReadWrite Files.ReadWrite.All, Sites.ReadWrite.All
Déléguée (compte Microsoft personnel) Files.ReadWrite Files.ReadWrite.All
Application Files.ReadWrite.All Sites.ReadWrite.All

Remarque

SharePoint Embedded nécessite l’autorisation FileStorageContainer.Selected d’accéder au contenu du conteneur. Cette autorisation est différente de celles mentionnées précédemment. Pour plus d’informations, consultez Authentification et autorisation SharePoint Embedded. En plus des autorisations Microsoft Graph, votre application doit disposer de l’autorisation ou des autorisations nécessaires au niveau du type de conteneur pour appeler cette API. Pour plus d’informations, consultez Types de conteneurs. Pour en savoir plus sur les autorisations au niveau du type de conteneur, voir Autorisation SharePoint Embedded.

Requête HTTP

POST /drives/{driveId}/items/{itemId}/copy
POST /groups/{groupId}/drive/items/{itemId}/copy
POST /me/drive/items/{item-id}/copy
POST /sites/{siteId}/drive/items/{itemId}/copy
POST /users/{userId}/drive/items/{itemId}/copy

Paramètres facultatifs de la requête

Cette méthode prend en charge le @microsoft.graph.conflictBehavior paramètre de requête pour personnaliser le comportement en cas de conflit.

Valeur Description
fail L’opération entière échoue lorsqu’un conflit se produit. Ce comportement est la valeur par défaut si aucune option n’est spécifiée.
replace L’élément de fichier préexistant est supprimé et remplacé par le nouvel élément lorsqu’un conflit se produit. Cette option est uniquement prise en charge pour les éléments de fichier. Le nouvel élément porte le même nom que l’ancien. L’historique de l’ancien élément est supprimé.
rename Ajoute l’entier le plus bas qui garantit l’unicité au nom du nouveau fichier ou dossier et termine l’opération.

Si vous spécifiez @microsoft.graph.conflictBehavior=replace pour un élément de dossier source, cette API retourne une 202 Accepted réponse. Dans ce cas, l’interrogation de l’URL de surveillance signale une nameAlreadyExists erreur. Si vous spécifiez ce paramètre avec le childrenOnly paramètre , une erreur nameAlreadyExists se produit s’il existe des éléments de dossier dans les enfants de l’élément source.

Remarque

Le conflictBehavior paramètre n’est pas pris en charge pour le consommateur OneDrive.

Corps de la demande

Dans le corps de la demande, fournissez un objet JSON avec les paramètres suivants.

Nom Valeur Description
parentReference ItemReference Facultatif. Référence à l’élément parent dans lequel la copie est créée.
nom string Facultatif. Nouveau nom de la copie. Si ces informations ne sont pas fournies, le même nom est utilisé que l’original.
childrenOnly Boolean Facultatif. Si la valeur trueest , les enfants de l’objet driveItem sont copiés, mais pas l’élément driveItem lui-même. La valeur par défaut est false. Valide uniquement sur les éléments de dossier.
includeAllVersionHistory Boolean Facultatif. Si la truevaleur est , l’historique des versions des fichiers sources (versions principales et versions mineures, le cas échéant) doit être copié vers la destination, dans la limite du paramètre de version cible. Si falsela valeur est , seule la dernière version principale est copiée vers la destination. La valeur par défaut est false.

Remarque

Le parentReference paramètre doit inclure les driveId paramètres et id pour le dossier cible.

Dans une seule demande, l’option childrenOnly copie 150 éléments enfants, et pour les petits-enfants, la limite SharePoint s’applique. Pour plus d’informations, voir Limitation de SharePoint

Si vous utilisez le @microsoft.graph.conflictBehavior paramètre de requête avec le childrenOnly paramètre , chaque enfant de l’opération sera soumis au @microsoft.graph.conflictBehavior spécifié.

Réponse

La réponse retourne des détails sur la façon de surveiller la progression de la copie, lors de l’acceptation de la demande. La réponse indique si l’opération de copie a été acceptée ou rejetée, par exemple si le nom de fichier de destination est déjà utilisé.

Exemples

Exemple 1 : Copier un fichier dans un dossier

L’exemple suivant copie un fichier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . La nouvelle copie du fichier est nommée contoso plan (copy).txt.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt"
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Exemple 2 : Copier les éléments enfants dans un dossier

L’exemple suivant copie les enfants d’un dossier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . Le childrenOnly paramètre est défini sur true.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Le Location champ de la réponse contient une URL de surveillance que vous pouvez utiliser pour case activée la progression de l’opération de copie. Étant donné que les opérations de copie se produisent de manière asynchrone et peuvent se terminer après un laps de temps non spécifié, vous pouvez utiliser cette URL à plusieurs reprises pour suivre son status.

Pour recevoir un rapport status similaire à celui de l’exemple suivant, obtenez l’URL dans le Location champ de la réponse.

{
  "@odata.context": "https://https://contoso.sharepoint.com/sites/site1/_api/v2.1/$metadata#drives('driveId')/operations/$entity",
  "id": "049af13f-d177-4c70-aed0-eb6f04a5d88b",
  "createdDateTime": "0001-01-01T00:00:00Z",
  "lastActionDateTime": "0001-01-01T00:00:00Z",
  "percentageComplete": 100,
  "percentComplete": 100,
  "resourceId": "016OGUCSF6Y2GOVW7725BZO354PWSELRRZ",
  "resourceLocation": "https://https://contoso.sharepoint.com/sites/site2/_api/v2.0/drives/b!1YwGyNd6RUuVB42eCVw7ULlXybr_-09Br67iDGnYY-neBqwZd6jJRJbgCTx0On5n/items/016OGUCSF6Y2GOVW7725BZO354PWSELRRZ",
  "status": "completed"
}

Exemple 3 : Échec de copie d’un élément de fichier dans un dossier avec un élément préexistant portant le même nom

L’exemple suivant tente de copier un élément de fichier identifié par {item-id} dans un dossier identifié par les valeurs de propriété driveId et id . Dans cet exemple, la destination a déjà un fichier portant le même nom. Toutefois, étant donné que la requête ne spécifie pas de @microsoft.graph.conflictBehavior valeur de paramètre de requête de replace ou rename, l’opération est acceptée mais échoue pendant le traitement.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

L’exemple suivant montre un exemple status rapport obtenu en visitant l’URL dans la Location valeur du champ dans la réponse à la demande initiale.

{
  "id": "46cf980a-28e1-4623-b8d0-11fc5278efe6",
  "createdDateTime": "0001-01-01T00:00:00Z",
  "lastActionDateTime": "0001-01-01T00:00:00Z",
  "status": "failed",
  "error": {
    "code": "nameAlreadyExists",
    "message": "Name already exists"
  }
}

Pour résoudre cette erreur, utilisez le paramètre de requête facultatif @microsoft.graph.conflictBehavior , comme indiqué dans l’exemple suivant.

Exemple 4 : Copier un élément de fichier dans un dossier avec un élément préexistant portant le même nom en spécifiant le paramètre de @microsoft.graph.conflictBehavior requête

L’exemple suivant copie un élément de fichier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . Dans cet exemple, la destination a déjà un fichier portant le même nom. Le paramètre @microsoft.graph.conflictBehavior de requête est défini pour remplacer. Les valeurs possibles sont replace, rename ou fail.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy?@microsoft.graph.conflictBehavior=replace
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Exemple 5 : Échec de la copie des éléments enfants qui contiennent un élément de dossier en spécifiant @microsoft.graph.conflictBehavior comme remplacement

L’exemple suivant tente de copier les éléments enfants d’un dossier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . L’un des éléments enfants est un élément de dossier. La destination peut avoir des éléments avec des noms en conflit pour les enfants dans le dossier source. La requête tente de résoudre les conflits de noms potentiels en définissant le paramètre @microsoft.graph.conflictBehavior de requête facultatif à remplacer. La demande est acceptée, mais l’URL de surveillance signale des échecs. Utilisez plutôt rename ou fail si au moins l’un des enfants est un élément de dossier.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy?@microsoft.graph.conflictBehavior=replace
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

La visite de l’URL de surveillance génère un rapport status similaire à l’exemple suivant.

{
  "@odata.context": "https://contoso.sharepoint.com/sites/site2/_api/v2.1/$metadata#drives('driveId')/operations/$entity",
  "id": "e410fb22-fc84-41df-ac9f-e95e5110a5cb",
  "createdDateTime": "0001-01-01T00:00:00Z",
  "lastActionDateTime": "0001-01-01T00:00:00Z",
  "status": "failed",
  "error": {
    "message": "Errors occurred during copy/move operation.",
    "details": [
      {
        "code": "nameAlreadyExists",
        "message": "Name already exists"
      },
      {
        "code": "nameAlreadyExists",
        "message": "Name already exists"
      },
      {
        "code": "nameAlreadyExists",
        "message": "Name already exists",
        "target": "01E4CGZM4FGUVRMKSJWBCLZQTWNFGHOTXG"
      },
      {
        "code": "nameAlreadyExists",
        "message": "Name already exists",
        "target": "01E4CGZM2XRHETBOUOYVA2OKZFMGGBQ6VU"
      }
    ]
  }
}

Exemple 6 : Copier l’élément dans un dossier de destination et conserver son historique des versions

L’exemple suivant copie l’élément identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . Il copie également l’historique des versions dans le dossier cible. Si le fichier source contient plus de versions que le paramètre de limite de version de destination, la copie transfère uniquement le nombre maximal de versions autorisées par le site de destination.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "includeAllVersionHistory": true
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 202 Accepted
Location: https://contoso.sharepoint.com/_api/v2.0/monitor/4A3407B5-88FC-4504-8B21-0AABD3412717

Exemple 7 : Échec de la copie des éléments enfants dans un dossier racine sans spécifier le paramètre childreOnly sur true

L’exemple suivant tente de copier les éléments enfants dans le dossier identifié par {item-id}, également appelé « racine », dans un dossier identifié par les driveId valeurs et id . Le childrenOnly paramètre n’est pas défini sur true. La requête échoue, car l’opération de copie ne peut pas être effectuée sur le dossier racine.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/root/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  }
}

Réponse

La visite de l’URL de surveillance génère un rapport status similaire à l’exemple suivant.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 283

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot copy the root folder.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

Pour résoudre cette erreur, définissez le paramètre sur childrenOnly true.

Exemple 8 : Échec de copie de plus de 150 éléments enfants directs

L’exemple suivant tente de copier les enfants d’un dossier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . Le childrenOnly paramètre est défini sur true. L’élément de dossier source identifié par {item-id} contient plus de 150 enfants directs. La demande échoue, car la limite est de 150 enfants directs.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Réponse

La visite de l’URL de surveillance génère un rapport status similaire à l’exemple suivant.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 341

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Direct child count limit exceeded. Cannot copy children only when there are more than 150 direct children.",
    "innerError":
    {
      "code": "directChildrenLimitExceeded",
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe"
    }
  }
}

Pour résoudre cette erreur, réorganisez la structure de dossiers source uniquement pour avoir 150 enfants.

Exemple 9 : Échec de copie des éléments enfants d’un élément de fichier

L’exemple suivant tente de copier les enfants d’un élément source identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . fait {item-id} référence à un fichier, et non à un dossier. Le childrenOnly paramètre est défini sur true. La requête échoue, car est {item-id} un élément driveItem non dossier.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "childrenOnly": true
}

Réponse

La visite de l’URL de surveillance génère un rapport status similaire à l’exemple suivant.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 290

{
  "error":
  {
    "code": "invalidRequest",
    "message": "childrenOnly option is not valid for file items.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

Exemple 10 : Échec de copie des éléments enfants en spécifiant à la fois les paramètres de corps de la demande childrenOnly et name

L’exemple suivant tente de copier les éléments enfants d’un dossier identifié par {item-id} dans un dossier identifié par les driveId valeurs et id . Le corps de la demande définit le childrenOnly paramètre sur true et spécifie également une name valeur. La demande échoue, car les paramètres et s’excluent childrenOnlyname mutuellement.

Demande

POST https://graph.microsoft.com/beta/me/drive/items/{item-id}/copy
Content-Type: application/json

{
  "parentReference": {
    "driveId": "b!s8RqPCGh0ESQS2EYnKM0IKS3lM7GxjdAviiob7oc5pXv_0LiL-62Qq3IXyrXnEop",
    "id": "DCD0D3AD-8989-4F23-A5A2-2C086050513F"
  },
  "name": "contoso plan (copy).txt",
  "childrenOnly": true
}

Réponse

L’exemple suivant illustre la réponse.

HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 285

{
  "error":
  {
    "code": "invalidRequest",
    "message": "Cannot use name parameter alongside childrenOnly.",
    "innerError":
    {
      "date": "2023-12-11T04:26:35",
      "request-id": "8f897345980-f6f3-49dd-83a8-a3064eeecdf8",
      "client-request-id": "50a0er33-4567-3f6c-01bf-04d144fc8bbe""
    }
  }
}

Pour plus d’informations sur l’erreur, consultez Réponses aux erreurs.