Xodera Plugins · Bubble Native
Xodera B2 Files Native
Gardez les pièces jointes de votre app dans votre propre stockage Backblaze B2. Les utilisateurs autorisés ajoutent, parcourent et téléchargent les fichiers ; le partage public reste un choix explicite.
Guides bêta publics · instructions Haptics dans sa fiche Bubble
Offre bêta publique : installation Bubble gratuite · essai de 7 jours avec carte, puis 1,50 USD/mois par plugin/projet.
Documentation révisée 6 novembre 2026
Exemples pratiques
Conserver une pièce jointe dans votre propre bucket privé
Une Intervention Bubble a besoin d’une référence durable ; une URL de lecture expirante ne doit pas devenir l’identité du fichier.
`bucket_binding_id = an allowed binding to your own private bucket` ; les `local_uri`, `display_name`, `mime_type` et `expected_size` dynamiques décrivent le fichier local sélectionné.
Prévu : Check local source → Upload file → attendre `upload_verified`. Votre flux de travail stocke ensuite `asset_ref` et les métadonnées sur l’enregistrement de tâche possédé.
Utilisez `asset_ref`, `size_bytes`, `mime_type` et `upload_status`. Resolve private read peut ensuite fournir une URL temporaire pour un usage autorisé.
Si la base échoue après `upload_verified`, reprenez sa mise à jour avec la même référence, sans nouveau PUT. Réconciliez `upload_pending` avec Check or recover upload status et le même ID d’envoi.
Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.
Créer une galerie de pièces jointes avec des références durables
Une galerie a besoin de noms, types, pagination et d’un accès fiable à l’élément choisi.
Après un envoi vérifié, le Fichier de votre app conserve `asset_ref`, nom, MIME et relation propriétaire/intervention. Une URI locale n’est pas son identité cloud.
Prévu : List my B2 files fournit les fichiers à afficher. Utilisez asset_refs pour les références et les valeurs de même index pour les noms et types. La sélection fournit asset_ref à Get asset metadata ou Download accepted version.
`has_more` et `next_cursor` appartiennent à la requête courante. Un téléchargement achevé retourne `local_output_uri`, copie sur l’appareil et non lien public permanent.
Réinitialisez la pagination après changement de liaison, compte ou requête. Sur `transfer_error`, conservez le Fichier existant et affichez `error_code` sans substituer une autre version fournisseur.
Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.
Confirmer la publication et la suppression d’une version précise
Le personnel ne doit pas exposer une pièce privée par erreur ni supprimer toutes les versions lors d’un remplacement.
`asset_ref = the selected accepted version` ; la liaison du seau et les permissions de fichiers de l’application doivent autoriser l’opération demandée.
Affichez la visibilité courante, demandez confirmation, puis appelez Change public sharing. Pour supprimer, utilisez Delete accepted version avec confirmation ; gardez les métadonnées métier tant que le résultat n’est pas confirmé.
Après `share_changed`, utilisez `visibility` et `public_url` uniquement si le partage public a été autorisé. Après `delete_completed`, mettez à jour le Fichier ; `delete_pending` n’est pas une suppression définitive.
Réconciliez un résultat incertain au lieu de supposer la réussite. Une URL fournisseur déjà émise peut rester valide jusqu’à expiration ; supprimer une ligne ou désactiver le partage ne rappelle pas les octets téléchargés.
Prévu. Votre compte B2 prend en charge le stockage et les téléchargements.
Ce qui fonctionne maintenant
Plugin prévu. Il n’est pas encore installé ni disponible à l’usage. Le guide ci-dessous décrit le parcours de fichiers prévu.
Construire le workflow
Prévu
Parcours prévu. Pas encore disponible dans la bêta actuelle.
Les exemples utilisent des fiches comme Lesson, Message et Order. Remplacez-les par vos types de données et noms d’éléments. Utilisez vos propres fichiers à la place des adresses d’exemple.
Prévu : choisissez votre stockage B2 et le bucket autorisé dans les réglages du projet. Définissez confidentialité, préfixe de dossier, types et tailles acceptés.
List B2 bindings affiche les emplacements autorisés. List my B2 files affiche les fichiers de l’utilisateur ; Get my B2 file info donne les détails.
Choisissez un fichier. Renseignez bucket_binding_id, local_uri, display_name, mime_type et expected_size, puis Upload file. Montrez la progression, mais attendez upload_verified avant de considérer le fichier enregistré.
Gardez asset_ref dans votre fiche. Utilisez-le pour Get asset metadata, Resolve private read ou Download accepted version. Change public sharing et Delete accepted version demandent une confirmation distincte.
Configurer une fois
L’activation par clé est prévue pour ce plugin. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins. Choisissez Xodera B2 Files Native, copiez sa clé, puis ouvrez Bubble → Plugins → Xodera B2 Files Native et collez-la dans project_api_key. Enregistrez une fois, puis utilisez les actions ci-dessous. Chaque plugin de chaque projet possède sa propre clé.
Utilisez votre compte Backblaze B2 et choisissez le bucket de cette app. Décidez qui peut lire et ajouter des fichiers. Indiquez les noms des champs User yes/no dans b2_reader_permission_field et b2_writer_permission_field ; défauts b2_files_reader et b2_files_writer. Seul un administrateur autorisé doit modifier ces permissions.
Configurer une fois
- Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
- Choisissez ce plugin et copiez sa clé de projet.
- Prévu: Ouvrez Bubble → Plugins → Xodera B2 Files Native ; collez la clé dans project_api_key et enregistrez.
- Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
- Accès bêta privée uniquement pour le moment. Installation publique et activation payante non ouvertes.
Installation et abonnement
Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.
Enregistrer le résultat dans votre app
Exemple Attachment : asset_ref, rapport ou commande, owner, display_name, mime_type et size_bytes. Enregistrez après upload_verified. asset_ref permet de rouvrir le fichier ; une adresse de lecture temporaire ou un chemin d’appareil n’est pas une référence permanente. Si la sauvegarde de la fiche échoue, recommencez cette sauvegarde, pas l’envoi du fichier.
Échec, annulation et reprise
Si le résultat d’un envoi est inconnu, gardez upload_id et utilisez Check or recover upload status. Ne renvoyez pas une copie automatiquement. Cancel concerne le transfert inachevé, pas un fichier déjà enregistré. Si l’accès expire, redemandez le fichier au lieu de réutiliser une ancienne adresse temporaire.
Fonctions et limites
Taille maximale de fichier prévue : 256 MiB, ou une limite de bucket inférieure que vous choisissez. Les frais de stockage et de téléchargement Backblaze appartiennent à votre compte B2. Les fichiers dans un bucket public sont publics même lorsque l'enregistrement d'application associé est privé. Aucune promesse de scan antivirus, de téléchargement multipart, de pause ou de récupération après la terminaison de l'application.
Réglages, actions et résultats
Utilisez ces noms dans Bubble. Les fonctionnalités prévues sont marquées séparément.
Paramètres bêta disponibles
Réglages de l’élément
bucket_binding_id · textlocal_uri · textdisplay_name · textmime_type · textexpected_size · numbermetadata_json · textasset_ref · textis_active · yes_nodisabled · yes_nolanguage · textui_text_json · texttitle · textshow_preview · yes_noshow_provider_browse · yes_noÉtats
status · textis_busy · yes_noupload_id · textupload_status · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numberbytes_sent · numberprogress · numberprogress_indeterminate · yes_notemporary_read_url · textread_expires_at · textlocal_output_uri · textpublic_url · textvisibility · textnext_cursor · texthas_more · yes_noquery_revision · textfiles_json · textbuckets_json · textremote_files_json · textremote_next_cursor · textremote_has_more · yes_noremote_query_revision · textbucket_binding_id · textcleanup_pending · yes_noerror_code · texterror_message · textÉvénements
file_selectedupload_startedupload_transport_completedupload_verifiedupload_pendingbuckets_loadedbucket_selectedlist_loadedmetadata_loadedread_resolveddownload_completedshare_changeddelete_completeddelete_pendingbrowse_loadedtransfer_cancelledcleanup_pendingtransfer_errorsession_clearedActions et paramètres
List allowed bucketsSelect bucket bindingCheck local sourceUpload fileCheck or recover upload statusCancel owned transferClear local sessionList application filesRefresh application filesLoad more application filesSelect asset referenceGet asset metadataResolve private readDownload accepted versionBrowse provider filesChange public sharingDelete accepted versionRéglages de l’élément · 14
Parcours prévu. Pas encore disponible dans la bêta actuelle.
bucket_binding_idtext · Défaut: ""- Valeur exemple
<binding returned by List B2 bindings> - Expression Bubble exemple
Selected Binding's binding_id - Emplacement fourni par List B2 bindings. Utilisez son ID pour ce fichier.
local_uritext · Défaut: ""- Valeur exemple
file:///app-cache/attachment.jpg - Expression Bubble exemple
Offline Files' local_uri - Emplacement lisible sur cet appareil. Ce n’est pas un lien de téléchargement en ligne.
display_nametext · Défaut: ""- Valeur exemple
report-photo.jpg - Expression Bubble exemple
Selected Attachment's display_name - Utilisez la valeur de la fiche courante et les limites ci-dessous.
mime_typetext · Défaut: ""- Valeur exemple
image/jpeg - Expression Bubble exemple
Photo Editor's output_mime - Utilisez la valeur de la fiche courante et les limites ci-dessous.
expected_sizenumber · Défaut: 0- Valeur exemple
246975 - Expression Bubble exemple
Offline Files' size_bytes - Utilisez la valeur de la fiche courante et les limites ci-dessous.
metadata_jsontext · Défaut: ""- Valeur exemple
{"label":"field-report"} - Expression Bubble exemple
Selected Attachment's safe_metadata_json - JSON facultatif, par exemple le libellé d’un rapport. Gardez-le court et sans données personnelles.
asset_reftext · Défaut: ""- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
is_activeyes_no · Défaut: true- Valeur exemple
yes - Expression Bubble exemple
GuideHost's view_is_active (your yes/no custom state) - yes tant que cette vue est ouverte ; no en la quittant pour arrêter la lecture ou l’action en cours.
disabledyes_no · Défaut: false- Valeur exemple
no - Expression Bubble exemple
GuideHost's is_busy (your yes/no custom state) - Désactivez l’élément si l’app est occupée ou l’action indisponible.
languagetext · Défaut: "auto"- Valeur exemple
uk - Expression Bubble exemple
Current User's preferred_language - Utilisez language=auto pour suivre une langue prise en charge sur l’appareil ou dans le navigateur. Saisissez un code de langue pris en charge pour la choisir explicitement.
ui_text_jsontext · Défaut: ""- Valeur exemple
{} - Expression Bubble exemple
App Settings' player_labels_json (supported keys only) - JSON facultatif avec les libellés de boutons pris en charge. Laissez vide pour les textes intégrés.
titletext · Défaut: ""- Valeur exemple
Lesson 4 — review - Expression Bubble exemple
Selected Lesson's name - Texte visible ; vide utilise le texte localisé prévu. Aucun identifiant secret.
show_previewyes_no · Défaut: false- Valeur exemple
yes - Expression Bubble exemple
App Settings' b2_preview - Afficher ou masquer l’aperçu du fichier.
show_provider_browseyes_no · Défaut: false- Valeur exemple
no - Expression Bubble exemple
Current User's authorized_browse_UI (presentation only) - Afficher ou masquer les commandes de navigation du stockage pour les utilisateurs autorisés.
Actions et paramètres · 20
Parcours prévu. Pas encore disponible dans la bêta actuelle.
List allowed buckets
Aucun paramètre d’action
Select bucket binding
binding_idtext · Défaut: —- Valeur exemple
<returned allowed binding ID> - Expression Bubble exemple
Selected Binding's binding_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Check local source
Aucun paramètre d’action
Upload file
acknowledge_public_bytesyes_no · Défaut: —- Valeur exemple
no - Expression Bubble exemple
Public bucket disclosure Checkbox is checked (private bucket: no) - Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirm_retryyes_no · Défaut: —- Valeur exemple
no - Expression Bubble exemple
Retry Checkbox is checked after confirmed clean pending status - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Check or recover upload status
upload_idtext · Défaut: —- Valeur exemple
<original returned upload_id> - Expression Bubble exemple
Current UploadIntent's upload_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Cancel owned transfer
Aucun paramètre d’action
Clear local session
Aucun paramètre d’action
List application files
Aucun paramètre d’action
Refresh application files
Aucun paramètre d’action
Load more application files
Aucun paramètre d’action
Select asset reference
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Get asset metadata
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Resolve private read
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Download accepted version
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Browse provider files
prefixtext · Défaut: —- Valeur exemple
"" - Expression Bubble exemple
Authorized Browse Settings' prefix - Utilisez la valeur de la fiche courante et les limites ci-dessous.
load_moreyes_no · Défaut: —- Valeur exemple
no - Expression Bubble exemple
Load More button only, for unchanged query - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Change public sharing
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
enabledyes_no · Défaut: —- Valeur exemple
no - Expression Bubble exemple
Public Share Checkbox is checked after separate confirmation - Utilisez la valeur de la fiche courante et les limites ci-dessous.
confirmyes_no · Défaut: —- Valeur exemple
yes — explicit confirmation only - Expression Bubble exemple
Confirm Checkbox is checked - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Delete accepted version
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
confirmyes_no · Défaut: —- Valeur exemple
yes — explicit confirmation only - Expression Bubble exemple
Confirm Checkbox is checked - Utilisez la valeur de la fiche courante et les limites ci-dessous.
List B2 bindings
environmenttext · Défaut: —- Valeur exemple
development - Expression Bubble exemple
App Settings' selected_environment - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Retours
ok · yes/nostatus · texterror_code · textbinding_ids · text listlabels · text listprivacy · text listmax_size_bytes · number listList my B2 files
environmenttext · Défaut: —- Valeur exemple
development - Expression Bubble exemple
App Settings' selected_environment - Utilisez la valeur de la fiche courante et les limites ci-dessous.
binding_idtext · Défaut: —- Valeur exemple
<returned allowed binding ID> - Expression Bubble exemple
Selected Binding's binding_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
limitnumber · Défaut: —- Valeur exemple
50 - Expression Bubble exemple
Gallery Settings' page_size - Utilisez la valeur de la fiche courante et les limites ci-dessous.
cursortext · Défaut: —- Valeur exemple
"" - Expression Bubble exemple
Previous List my B2 files result's next_cursor; empty on first page - Utilisez la valeur de la fiche courante et les limites ci-dessous.
Retours
ok · yes/nostatus · texterror_code · textasset_refs · text listdisplay_names · text listmime_types · text listsize_bytes · number listcreated_ats · text listvisibility · text listpublic_urls · text listprovider_status · text listinspection_status · text listmetadata_labels · text listhas_more · yes/nonext_cursor · textquery_revision · textGet my B2 file info
environmenttext · Défaut: —- Valeur exemple
development - Expression Bubble exemple
App Settings' selected_environment - Utilisez la valeur de la fiche courante et les limites ci-dessous.
binding_idtext · Défaut: —- Valeur exemple
<returned allowed binding ID> - Expression Bubble exemple
Selected Binding's binding_id - Utilisez la valeur de la fiche courante et les limites ci-dessous.
asset_reftext · Défaut: —- Valeur exemple
<returned asset_ref> - Expression Bubble exemple
Selected B2Asset's asset_ref - Identifiant opaque stable de l’asset accepté. La sélection ne contourne jamais l’autorisation.
Retours
ok · yes/nostatus · texterror_code · textasset_ref · textdisplay_name · textmime_type · textsize_bytes · numbercreated_at · textvisibility · textpublic_url · textprovider_status · textinspection_status · textmetadata_label · textÉtats et événements
Parcours prévu. Pas encore disponible dans la bêta actuelle.
États
status · textRésultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.
is_busy · yes_noUne action est en cours. Attendez avant d’en lancer une autre.
upload_id · textIdentifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.
upload_status · textRésultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.
asset_ref · textIdentifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.
display_name · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
mime_type · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
size_bytes · numberValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
bytes_sent · numberValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
progress · numberValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
progress_indeterminate · yes_noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
temporary_read_url · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
read_expires_at · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
local_output_uri · textEmplacement du fichier sur cet appareil. Sauvegardez ou envoyez-le séparément pour le conserver en ligne.
public_url · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
visibility · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
next_cursor · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
has_more · yes_noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
query_revision · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
files_json · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
buckets_json · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
remote_files_json · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
remote_next_cursor · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
remote_has_more · yes_noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
remote_query_revision · textValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
bucket_binding_id · textIdentifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.
cleanup_pending · yes_noValeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.
error_code · textInformation sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.
error_message · textInformation sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.
Événements
file_selectedÀ cet événement, lisez les états correspondants du même élément.
upload_startedÀ cet événement, lisez les états correspondants du même élément.
upload_transport_completedÀ cet événement, lisez les états correspondants du même élément.
upload_verifiedÀ cet événement, lisez les états correspondants du même élément.
upload_pendingÀ cet événement, lisez les états correspondants du même élément.
buckets_loadedÀ cet événement, lisez les états correspondants du même élément.
bucket_selectedÀ cet événement, lisez les états correspondants du même élément.
list_loadedÀ cet événement, lisez les états correspondants du même élément.
metadata_loadedÀ cet événement, lisez les états correspondants du même élément.
read_resolvedÀ cet événement, lisez les états correspondants du même élément.
download_completedÀ cet événement, lisez les états correspondants du même élément.
share_changedÀ cet événement, lisez les états correspondants du même élément.
delete_completedÀ cet événement, lisez les états correspondants du même élément.
delete_pendingÀ cet événement, lisez les états correspondants du même élément.
browse_loadedÀ cet événement, lisez les états correspondants du même élément.
transfer_cancelledÀ cet événement, lisez les états correspondants du même élément.
cleanup_pendingÀ cet événement, lisez les états correspondants du même élément.
transfer_errorÀ cet événement, lisez les états correspondants du même élément.
session_clearedÀ cet événement, lisez les états correspondants du même élément.
Questions des développeurs
Puis-je garder l’URL temporaire comme fichier ?
Non. Gardez asset_ref et métadonnées canoniques. Réautorisez les lectures ; un chemin appareil n’est pas un Bubble File.
Comment fonctionne l’abonnement ?
Tarification prévue : l'installation du plugin dans Bubble est gratuite. L'accès BestPlugins est un abonnement séparé pour chaque plugin dans chaque projet d'application Bubble : 7 jours gratuits, puis US$1.50 par mois. Development et Live sont inclus. Il n'y a pas de limite fixe au nombre d'opérations ; les limites de taille de fichier et de fonctionnalités restent applicables. Le paiement n'est pas encore ouvert. L'écran d'activation affichera la première date de facturation et les conditions d'annulation.
Guides associés
Marketplace publication en attente
Guide du forum non publié
Pour obtenir de l’aide, indiquez le plugin, l’appareil, l’action essayée et le résultat. Utilisez un exemple sans données personnelles. Ne partagez jamais votre clé ni vos fichiers privés.