Déplacer des ressources DAM en masse
Déplace plusieurs ressources DAM dans un même dossier de manière atomique.
https://api2.transloadit.com/ dam/ assets/ bulk/ moveCe point de terminaison est en phase alpha. Son URL, ses paramètres, ses réponses et son comportement peuvent changer considérablement et rendre les intégrations existantes inopérantes.
Avant d’appeler ce point de terminaison, obtenez les ID de ressources existantes dans le même Workspace que l’Auth Key utilisée pour la requête.
Pour les fichiers stockés avec /transloadit/store, récupérez leur Assembly Status et attendez ASSEMBLY_COMPLETED. Dans les tableaux results[stepName] renvoyés, conservez les valeurs workspace, asset_id, version_id et path renvoyées pour chaque fichier stocké. L’id ordinaire du fichier n’est pas son ID de ressource de stockage. Utilisez asset_id pour ASSET_ID ou params.asset_ids dans les exemples ci-dessous.
Utilisez asset_id pour suivre une ressource lors des déplacements et renommages natifs. Ajoutez version_id lors de l’importation pour sélectionner les mêmes octets conservés après un écrasement. Un chemin enregistré est un emplacement modifiable, pas une référence immuable. Les règles d’accès et de conservation des versions continuent de s’appliquer.
Pour une destination autre que la racine, vous devez déjà connaître l’ID du dossier existant dans le même Workspace. Une réponse de déplacement ou de renommage précédemment enregistrée peut fournir cet ID : folder_id dans une réponse concernant une seule ressource, ou assets[].folder_id dans une réponse de déplacement en masse. Ces réponses décrivent le dossier après cette opération ; elles ne constituent pas une API de découverte des dossiers.
Si vous connaissez les chemins plutôt que les ID des dossiers, utilisez Déplacer un fichier ou un dossier de stockage. Le dossier parent de destination doit déjà exister. Pour déplacer une ressource vers la racine avec ce point de terminaison fondé sur les ID, utilisez destination_folder_id: null.
Envoyez les ID des ressources et le dossier de destination ensemble dans params. L’exemple de requête
ci-dessous déplace deux ressources vers la racine avec un jeton porteur.
Remplacez les ID de l’exemple par les ID de vos ressources ; chaque ID ne doit apparaître qu’une seule fois. Contrairement au renommage d’une seule ressource, le déplacement en masse nécessite une destination explicite. Si l’une des ressources sélectionnées ne peut pas être déplacée, l’opération entière échoue.
Exemple de requête
Exécutez cette requête dans un shell côté serveur avec curl et un jeton porteur approprié dans TRANSLOADIT_TOKEN. Si vous avez besoin d’un jeton, développez la section de configuration ci-dessous.
Besoin d’un jeton porteur ?
Dans un shell de confiance côté serveur disposant de curl et de jq, définissez TRANSLOADIT_KEY et TRANSLOADIT_SECRET avec votre Auth Key et votre Auth Secret. Gardez ces deux informations d’identification ainsi que le jeton obtenu secrets ; n’exécutez jamais cette configuration dans du code de navigateur.
Commencez par créer un jeton avec les portées requises par ce point de terminaison. Votre Auth Key doit déjà accorder ces portées.
if ! TOKEN_RESPONSE="$(curl --fail-with-body -sS \
--request POST \
--url 'https://api2.transloadit.com/token' \
--user "${TRANSLOADIT_KEY:?Set TRANSLOADIT_KEY}:${TRANSLOADIT_SECRET:?Set TRANSLOADIT_SECRET}" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'aud=api2' \
--data-urlencode 'scope=dam:write')"; then
printf '%s\n' "$TOKEN_RESPONSE" >&2
exit 1
fi
TRANSLOADIT_TOKEN="$(printf '%s' "$TOKEN_RESPONSE" |
jq -er '.access_token | strings | select(length > 0)')" || exit 1
Gardez ce shell ouvert et exécutez la requête ci-dessous. Réutilisez le jeton tant qu’il reste valide.
curl --fail-with-body -sS --request POST \
--url "https://api2.transloadit.com/dam/assets/bulk/move" \
--header "Authorization: Bearer ${TRANSLOADIT_TOKEN:?Set TRANSLOADIT_TOKEN}" \
--data-urlencode 'params={"asset_ids":["AAAAAAAAAAAAAAAAAAAAAA","AAAAAAAAAAAAAAAAAAAAAQ"],"destination_folder_id":null}'
Authentification
Ce point de terminaison accepte des params signés ou un jeton porteur. Consultez la section Authentification pour les instructions de configuration.
Portée requise pour l’Auth Key ou le jeton porteur : dam:write.
Les requêtes signées nécessitent à la fois une signature et un horodatage params.auth.expires situé dans le futur. Les jetons porteurs ne nécessitent ni l’un ni l’autre.
Champs de formulaire
Type de contenu : application/x-www-form-urlencoded
params(Chaîne JSON), obligatoire. Un objet encodé en JSON dont les clés prises en charge sont répertoriées ci-dessous.signature(chaîne de caractères). Obligatoire pour les requêtes signées. Omettez ce champ lorsque vous utilisez un jeton porteur.
Clés prises en charge dans le champ params
Les champs d’authentification de cette liste s’appliquent aux requêtes signées. Avec un jeton porteur, vous pouvez omettre params.auth et le champ distinct signature. Comparez les paramètres de requête spécifiques à l’authentification ci-dessous.
Schéma JSON complet
params: Seuls les champs répertoriés pour cet objet sont acceptés.
| Champ | Type et description |
|---|---|
params.obligatoire | Array<string> (nombre minimal d’éléments : 1, nombre maximal d’éléments : 100, aucun élément en double)Schéma d’un élément de tableaustringIdentifiant DAM canonique de 22 caractères au format Base64URL, sensible à la casse. Motif de validation (expression régulière)^[A-Za-z0-9_-]{21}[AQgw]$ |
params.obligatoire pour les requêtes signées ; facultatif avec un jeton porteur | Contient la clé API Transloadit et les métadonnées de Signature Authentication pour une mutation DAM.
|
params.obligatoire | stringHorodatage d’expiration au format ISO 8601 situé dans le futur. Obligatoire lorsqu’une requête est signée ou nécessite Signature Authentication ; les requêtes authentifiées par jeton porteur peuvent l’omettre. |
params.obligatoire | stringClé API Transloadit utilisée pour authentifier les requêtes |
params.obligatoire | string | nullID du dossier de destination pour toutes les ressources sélectionnées. Définissez ce champ sur N’importe lequel des schémas suivants peut s’appliquer : stringstringIdentifiant DAM canonique de 22 caractères au format Base64URL, sensible à la casse. Motif de validation (expression régulière)^[A-Za-z0-9_-]{21}[AQgw]$null |
params. | string | integerValeur unique et aléatoire incluse dans les paramètres de la requête signée pour rendre chaque signature unique et empêcher la réutilisation accidentelle d’une signature. |
Paramètres de requête par méthode d’authentification
Avec des paramètres signés
Incluez votre Auth Key dans params.auth.key. Lors de la signature de la requête, incluez un horodatage futur dans params.auth.expires et envoyez la signature dans le champ distinct signature. Les définitions des champs ci-dessous utilisent des chemins à l’intérieur de params.
Schéma JSON complet
params: Seuls les champs répertoriés pour cet objet sont acceptés.
Utilise les définitions des champs ci-dessus : params.asset_ids, params.auth, params.destination_folder_id, params.nonce
Avec un jeton porteur
Envoyez le jeton porteur dans l’en-tête Authorization. Vous pouvez omettre params.auth et le champ distinct signature. Les autres paramètres obligatoires restent requis. Les définitions des champs ci-dessous utilisent des chemins à l’intérieur de params.
Schéma JSON complet
params: Seuls les champs répertoriés pour cet objet sont acceptés.
Utilise les définitions des champs ci-dessus : params.asset_ids, params.destination_folder_id, params.nonce
| Champ | Type et description |
|---|---|
params. | Contient la clé API Transloadit et les métadonnées de Signature Authentication pour une mutation DAM.
|
params. | stringHorodatage d’expiration au format ISO 8601 situé dans le futur. Obligatoire lorsqu’une requête est signée ou nécessite Signature Authentication ; les requêtes authentifiées par jeton porteur peuvent l’omettre. |
params. | stringClé API Transloadit utilisée pour authentifier les requêtes |
Réponse
Voici un exemple de corps de réponse :
{
"assets": [
{
"asset": {
"asset_id": "AAAAAAAAAAAAAAAAAAAAAA",
"height": 600,
"mime": "image/jpeg",
"path": "renamed.jpg",
"size": 12345,
"version_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"width": 800,
"workspace": "example-workspace"
},
"asset_id": "AAAAAAAAAAAAAAAAAAAAAA",
"deleted_at": null,
"filename": "renamed.jpg",
"folder_id": null,
"path": "renamed.jpg",
"updated_at": "2026-09-12T10:00:00.000Z"
},
{
"asset": {
"asset_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"height": 600,
"mime": "image/jpeg",
"path": "second.jpg",
"size": 12345,
"version_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"width": 800,
"workspace": "example-workspace"
},
"asset_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"deleted_at": null,
"filename": "second.jpg",
"folder_id": null,
"path": "second.jpg",
"updated_at": "2026-09-12T10:00:00.000Z"
}
],
"message": "The DAM assets were successfully moved.",
"ok": "DAM_ASSETS_MOVED"
}Succès 2xx
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
La réponse contient uniquement les champs répertoriés pour cet objet.
| Champ | Type et description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
assetsobligatoire | Array<object>Schéma d’un élément de tableau
| ||||||||||||||||
messageobligatoire | string (longueur minimale : 1) | ||||||||||||||||
okobligatoire | string (toujours : "DAM_ASSETS_MOVED") |
Réponse d’erreur
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
La réponse peut contenir des champs supplémentaires.
| Champ | Type et description |
|---|---|
assembly_id | string |
error | string (longueur minimale : 1) |
http_code | number | string
|
message | stringExplication de l’erreur destinée à être lue par un humain. Sa formulation peut varier ; utilisez le code |
reason | null | string | number | boolean | Array<n’importe quelle valeur> | objectN’importe lequel des schémas suivants peut s’appliquer : nullstringnumberbooleanArray<n’importe quelle valeur>Array<n’importe quelle valeur>Schéma d’un élément de tableaun’importe quelle valeurobjectobjectSchéma de la propriété supplémentairen’importe quelle valeur |
HTTP 400
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
Erreurs nommées et format général des erreurs
error: "DAM_INVALID_REQUEST"
Les paramètres de la requête de stockage ne sont pas valides.
La réponse peut contenir des champs supplémentaires.
Format général des erreurs
HTTP 404
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
Erreurs nommées et format général des erreurs
error: "DAM_RESOURCE_NOT_FOUND"
La ressource DAM demandée n’a pas été trouvée.
La réponse peut contenir des champs supplémentaires.
Format général des erreurs
HTTP 409
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
Erreurs nommées et format général des erreurs
error: "DAM_MUTATION_CONFLICT"
La mutation DAM entre en conflit avec une ressource existante.
La réponse peut contenir des champs supplémentaires.
Format général des erreurs
HTTP 500
Corps de la réponse JSON. application/json text/plain; charset=utf-8
Schéma du corps de la réponse
Schéma JSON complet
Erreurs nommées et format général des erreurs
error: "DAM_MUTATION_FAILED"
La modification du DAM n’a pas pu être effectuée. Veuillez réessayer.
La réponse peut contenir des champs supplémentaires.