Réponse Assembly Status
Transloadit utilise un format de réponse unique pour créer et interroger des Assemblies, ajouter des réponses aux formulaires de téléversement et envoyer des Notifications.
Voici un exemple complet de réponse Transloadit. Les fichiers étant traités en parallèle,
l’ordre des éléments de results ne suit pas nécessairement celui des éléments de uploads. Il peut
aussi y avoir plusieurs résultats pour un seul téléversement. Pour associer les résultats aux téléversements, vous pouvez utiliser le
champ original_id, présent dans les deux éléments.
Exemple de réponse
{
"assembly_id": "7828446e5acd4aa996dce3455ec914e9",
"ok": "ASSEMBLY_COMPLETED",
"message": "The Assembly was successfully completed.",
"warnings": [],
"account_id": "4ce4fb3d9d1842b6ba5d6f3ccee4b066",
"assembly_ssl_url": "https://api2-morven.transloadit.com/assemblies/7828446e5acd4aa996dce3455ec914e9",
"assembly_url": "http://api2-morven.transloadit.com/assemblies/7828446e5acd4aa996dce3455ec914e9",
"build_id": "339",
"bytes_expected": 486608,
"bytes_received": 486608,
"bytes_usage": 1097155,
"client_agent": null,
"client_ip": null,
"client_referer": null,
"companion_url": "https://api2-morven.transloadit.com/companion/",
"executing_jobs": [],
"execution_duration": 5.281,
"execution_start": "2020/01/09 12:02:08 GMT",
"expected_tus_uploads": 1,
"fields": {},
"finished_tus_uploads": 1,
"has_dupe_jobs": false,
"instance": "morven.transloadit.com",
"is_infinite": false,
"jobs_queue_duration": 0.01,
"last_job_completed": "2020/01/09 12:02:14 GMT",
"merged_params": "{\"steps\":{\":original\":{\"robot\":\"/upload/handle\"},\"faces_detected\":{\"use\":\":original\",\"robot\":\"/image/facedetect\",\"crop\":true,\"faces\":\"max-confidence\",\"format\":\"preserve\",\"crop_padding\":\"10%\"},\"exported\":{\"use\":[\"faces_detected\",\":original\"],\"robot\":\"/s3/store\",\"credentials\":\"demo_s3_credentials\"}},\"auth\":{\"key\":\"****\",\"expires\":\"2020-01-10T12:02:05.826Z\"}}",
"notify_duration": null,
"notify_response_code": null,
"notify_start": null,
"notify_status": null,
"notify_url": null,
"params": "{\"steps\":{\":original\":{\"robot\":\"/upload/handle\"},\"faces_detected\":{\"use\":\":original\",\"robot\":\"/image/facedetect\",\"crop\":true,\"faces\":\"max-confidence\",\"format\":\"preserve\",\"crop_padding\":\"10%\"},\"exported\":{\"use\":[\"faces_detected\",\":original\"],\"robot\":\"/s3/store\",\"credentials\":\"demo_s3_credentials\"}},\"auth\":{\"key\":\"****\",\"expires\":\"2020-01-10T12:02:05.826Z\"}}",
"parent_assembly_status": null,
"parent_id": null,
"queue_duration": 0.184,
"running_jobs": [],
"start_date": "2020/01/09 12:02:06 GMT",
"started_jobs": [
":original:::original",
"faces_detected:::original",
"exported:::original",
"exported::faces_detected"
],
"started_tus_uploads": 1,
"template": null,
"template_id": null,
"transloadit_client": "node-sdk:2.0.8",
"tus_url": "https://api2-morven.transloadit.com/resumable/files/",
"upload_duration": 2.814,
"upload_meta_data_extracted": true,
"uppyserver_url": "https://api2-morven.transloadit.com/companion/",
"update_stream_url": "https://api2-morven.transloadit.com/ws20074?assembly=7828446e5acd4aa996dce3455ec914e9",
"websocket_url": "https://api2-morven.transloadit.com/ws20074",
"uploads": [
{
"id": "a30bd0776e7f4ac3817b056d102e8219",
"basename": "joe-gardner-149699",
"ext": "jpg",
"field": "file",
"from_batch_import": false,
"is_tus_file": true,
"md5hash": "fb205cb04b6998fe7ba364f70227cfa1",
"mime": "image/jpeg",
"name": "joe-gardner-149699.jpg",
"original_basename": "joe-gardner-149699",
"original_id": "a30bd0776e7f4ac3817b056d102e8219",
"original_md5hash": "fb205cb04b6998fe7ba364f70227cfa1",
"original_name": "joe-gardner-149699.jpg",
"original_path": "/",
"size": 485784,
"ssl_url": "https://s3.amazonaws.com/demos.transloadit.com/a3/0bd0776e7f4ac3817b056d102e8219/joe-gardner-149699.jpg",
"tus_upload_url": "https://api2-morven.transloadit.com/resumable/files/UPLOAD_ID+CAPABILITY_TOKEN",
"type": "image",
"url": "http://demos.transloadit.com.s3.amazonaws.com/a3/0bd0776e7f4ac3817b056d102e8219/joe-gardner-149699.jpg",
"meta": {
"aspect_ratio": "1.500",
"average_color": "#b09d96",
"colorspace": "RGB",
"date_file_modified": "2020/01/09 12:02:08 GMT",
"frame_count": 1,
"has_clipping_path": false,
"has_transparency": false,
"height": 1667,
"width": 2500
}
}
],
"results": {
":original": [
{
"id": "a30bd0776e7f4ac3817b056d102e8219",
"basename": "joe-gardner-149699",
"cost": 97157,
"execTime": 0.81,
"ext": "jpg",
"field": "file",
"from_batch_import": false,
"is_tus_file": false,
"md5hash": "fb205cb04b6998fe7ba364f70227cfa1",
"mime": "image/jpeg",
"name": "joe-gardner-149699.jpg",
"original_basename": "joe-gardner-149699",
"original_id": "a30bd0776e7f4ac3817b056d102e8219",
"original_md5hash": "fb205cb04b6998fe7ba364f70227cfa1",
"original_name": "joe-gardner-149699.jpg",
"original_path": "/",
"queue": "live",
"queueTime": 0.01,
"size": 485784,
"ssl_url": "https://s3.amazonaws.com/demos.transloadit.com/a3/0bd0776e7f4ac3817b056d102e8219/joe-gardner-149699.jpg",
"tus_upload_url": null,
"type": "image",
"url": "http://demos.transloadit.com.s3.amazonaws.com/a3/0bd0776e7f4ac3817b056d102e8219/joe-gardner-149699.jpg",
"meta": {
"aspect_ratio": "1.500",
"average_color": "#b09d96",
"colorspace": "RGB",
"date_file_modified": "2020/01/09 12:02:08 GMT",
"frame_count": 1,
"has_clipping_path": false,
"has_transparency": false,
"height": 1667,
"width": 2500
}
}
],
"faces_detected": [
{
"id": "b8d12f6c517541ca86bf50c537cedb27",
"basename": "joe-gardner-149699",
"cost": 627606,
"execTime": 0.83,
"ext": "jpg",
"field": "file",
"from_batch_import": false,
"is_tus_file": false,
"md5hash": "2a5cd917f4281b9438956e489c63dfd2",
"mime": "image/jpeg",
"name": "joe-gardner-149699.jpg",
"original_basename": "joe-gardner-149699",
"original_id": "a30bd0776e7f4ac3817b056d102e8219",
"original_md5hash": "fb205cb04b6998fe7ba364f70227cfa1",
"original_name": "joe-gardner-149699.jpg",
"original_path": "/",
"queue": "live",
"queueTime": 0,
"size": 141822,
"ssl_url": "https://s3.amazonaws.com/demos.transloadit.com/b8/d12f6c517541ca86bf50c537cedb27/joe-gardner-149699.jpg",
"tus_upload_url": null,
"type": "image",
"url": "http://demos.transloadit.com.s3.amazonaws.com/b8/d12f6c517541ca86bf50c537cedb27/joe-gardner-149699.jpg",
"meta": {
"aspect_ratio": "0.739",
"average_color": "#8d654d",
"colorspace": "RGB",
"date_file_created": "2020/01/09 12:02:09 GMT",
"date_file_modified": "2020/01/09 12:02:12 GMT",
"faces": [
{
"confidence": 99.99,
"height": 840,
"width": 621,
"x1": 981,
"x2": 1550,
"y1": 121,
"y2": 891
}
],
"frame_count": 1,
"has_clipping_path": false,
"has_transparency": false,
"height": 840,
"width": 621
}
}
]
}
}
Explication des champs
ok-
Indique un état du cycle de vie sans erreur, notamment les états de téléversement, d’exécution, d’interruption et d’annulation. La réussite du traitement est indiquée par
ASSEMBLY_COMPLETED. Si l’Assembly a rencontré une erreur, la cléerrorci-dessous est utilisée à la place de cette clé. error-
Indique un état d’erreur. Cette clé n’est présente que si l’Assembly a échoué.
message-
Un message lisible par un humain expliquant l’état de cette Assembly. Il n’est pas toujours présent.
assembly_id-
L’ID unique de cette Assembly. Vous pouvez le conserver dans une base de données lors de la création d’une Assembly et l’utiliser pour lui associer les Notifications reçues.
assembly_url-
L’URL unique utilisée pour interroger l’état actuel de cette Assembly.
assembly_ssl_url-
L’URL unique utilisée pour interroger l’état actuel de cette Assembly, mais prête à être utilisée via SSL/HTTPS. Toutes les requêtes API envoyées à
assembly_urlpeuvent également être envoyées àassembly_ssl_url. companion_url-
L’URL du serveur Companion avec lequel cette Assembly peut communiquer.
websocket_url-
L’URL d’un serveur Websocket (utilisant Socket.IO) à partir duquel vous pouvez obtenir des mises à jour en temps réel de l’état de cette Assembly.
update_stream_url-
L’URL d’un flux d’événements envoyés par le serveur à partir duquel vous pouvez obtenir des mises à jour en temps réel de l’état de cette Assembly.
tus_url-
L’URL du serveur tus utilisé par cette Assembly pour les téléversements avec reprise.
bytes_received-
Le nombre d’octets téléversés vers cette Assembly jusqu’à présent. Il est principalement utilisé par les clients pour afficher la progression du téléversement.
bytes_expected-
Le nombre d’octets que cette Assembly s’attend à recevoir par téléversement.
bytes_usage-
Le nombre total d’octets traités par cette Assembly qui sont comptabilisés dans votre facturation à l’usage. La somme des valeurs de
bytes_usagede toutes vos Assemblies correspond à votre utilisation mensuelle totale. client_agent-
L’agent utilisateur du client de téléversement n’est pas exposé ; ce champ obsolète vaut toujours
null. client_ip-
L’adresse IP du client de téléversement n’est pas exposée ; ce champ obsolète vaut toujours
null. client_referer-
L’URL de provenance du client de téléversement n’est pas exposée ; ce champ obsolète vaut toujours
null. start_date-
La date et l’heure auxquelles le téléversement a commencé pour cette Assembly.
upload_duration-
Le temps nécessaire au client de téléversement pour téléverser les fichiers, en secondes.
execution_duration-
Le temps nécessaire à Transloadit pour exécuter cette Assembly, en secondes.
fields-
Une table de correspondance clé/valeur des champs de formulaire supplémentaires pour les intégrations qui ne peuvent pas utiliser l’encapsulation dans
<form>, telles qu’Uppy. uploads-
Un tableau des fichiers téléversés pour cette Assembly. Pour plus d’informations, consultez la documentation sur les métadonnées.
results-
Les fichiers de résultat produits par Transloadit jusqu’à présent. Chaque clé est le nom du Step qui a produit un fichier. Les Robots de stockage ne produisent pas de fichiers, leurs noms de Step sont donc omis. Lorsqu’une
errorsurvient, cet objet peut contenir des résultats partiels.
Métadonnées de fichier personnalisées
Les objets fichier dans uploads et results peuvent contenir un objet user_meta avec des valeurs JSON personnalisées,
y compris des objets et des tableaux imbriqués. Lors de la lecture des réponses, traitez-le comme facultatif ; il peut être vide ({}).
La table de correspondance contient les valeurs provenant des téléversements tus, des Instructions des Steps et de toutes les métadonnées héritées par le Robot.
Les valeurs définies par le Step actuel remplacent les clés correspondantes au premier niveau. Ces données sont distinctes des métadonnées de fichier
détectées dans meta et des valeurs de requête au niveau de l’Assembly dans fields.
Par exemple, un fichier peut contenir "user_meta": { "stage": "resized", "approved": false }. Les Steps en aval
lisent ${file.user_meta.stage} et ${file.user_meta.approved}. Consultez
Métadonnées personnalisées (English) pour connaître le moment de l’évaluation, les règles d’héritage et un flux de travail complet.