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. Comme les fichiers sont traités en parallèle,
l’ordre de results ne correspond pas nécessairement à celui de uploads. Il peut
également y avoir plusieurs résultats pour un seul téléversement. Pour faire correspondre 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é. De nouveaux codes d’erreur peuvent être ajoutés. Traitez les codes non reconnus comme des échecs et conservez leurs valeurs pour permettre leur inspection par programme.
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 stocker dans une base de données lorsqu’une Assembly est créée, et l’utiliser pour faire la correspondance avec 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. Cette valeur est principalement utilisée 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 pris en compte dans la facturation de votre utilisation. La somme des valeurs de
bytes_usagede toutes vos Assemblies est égale à 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 mis par le client de téléversement pour téléverser les fichiers, en secondes.
execution_duration-
Le temps mis par 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
<form>, comme 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
errorse produit, 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 imbriqués et des tableaux. Considérez cet objet comme facultatif lors de la lecture des réponses ; il peut être vide ({}).
Cette table de correspondance contient des valeurs issues 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 de 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 pour connaître le moment de l’évaluation, les règles d’héritage et un flux de travail complet.