Qu’est ce qu’une API

Pour simplifier, une API REST est un langage/protocole qui permet d’interroger (ou de modifier) les données de votre application web directement, sans passer par l’interface utilisateur.

C’est ce qui permet dans le développement web moderne de séparer le backend (accès aux données) du frontend (restitution des données dans une interface utilisateur)

Cela permet entre également de relier entre elles différentes applications web, ou bien de mettre en place des automatisations externes (telles que des mises à jour de la donnée ou bien des sauvegardes).

Code ou No-Code ?

Si on parle d’API, c’est que l’on commence à ouvrir le capot de la machine. On est donc plutôt dans le domaine obscur du code. Toutefois, même un no-coder qui se respecte se doit de comprendre comment fonctionne une API (de manière générale c’est bien de comprendre comment fonctionnent les choses 😊)

Néanmoins il existe des solution pour manipuler les API des principales applications web sans devoir mettre les mains dans le cambouis. La solution la plus connue est très probablement Zapier qui permet de construire des Workflows faisant intervenir plusieurs applications :

Lorsqu’une donnée est créé sur App AFaire quelque chose sur App B avec les données de App A

Par exemple : Lorsqu’une nouvelle ligne entre dans mon tableau Airtable je veux créer un évènement dans mon calendrier Google à partir des données de cette ligne.

Pour ce type d’usage, Zapier est simple et complètement adapté (attention à la tarification si vous multipliez les workflow Zapier).

Mais dans de nombreux cas de figure, Zapier n’est plus du tout adapté ⛔, par exemple, si je veux :

  • Extraire ou importer des données en masse
  • Transformer la donnée (par exemple faire des jointures entre les tables)
  • Convertir dans divers formats (CSV, Excel, JSON ou même vers une autre API)
  • Exporter vers différents supports (en local, sur un FTP, sur un stockage cloud, etc.)

Pour ces usages, il faut souvent mélanger plusieurs compétences et en revenir au bon vieux script👨‍💻 (python dans mon cas).

API des applications Bubble.io

Chaque application mise en ligne sur Bubble.io est une instance “autonome” et dispose de sa propre API. L’API doit au préalable être activée dans les paramètres de l’application (Settings > API > Enable Data API).

De plus, un **API Token doit être généré : il sera la clé d’authentification pour accéder à l’API (Settings > API > API Token)

Paramètre de l’app Bubble

La documentation de l’API est disponible ici : https://manual.bubble.io/core-resources/api/data-api

Implémentation Python

Souvent, il est inutile de refaire ce qui a déjà été fait et des modules open-source existent. Par exemple pour manipuler l’API de Airtable, j’utilise le module Airtable Python Wrapper qui a évolué et changé de nom récemment : PyAirtable.

Pour Bubble.io, n’ayant pas trouvé de librairie existante j’ai donc commencé à écrire mon propre module, partagé ici en open-source sur Pypi, et Github. La documentation est ici.

Exemple:

>>> from bubbleio import Bubbleio
>>> API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
>>> API_ROOT = "https://appname.bubbleapps.io/api/1.1/obj"
>>> bbio = Bubbleio(API_KEY, API_ROOT)
>>> bbio.get_results("fooType")
[
    {
        "foo_field_1": "value",
        "foo_field_2": "value",
        "_id": "item1_bubble_id"
    },
    {
        "foo_field_1": "value",
        "foo_field_2": "value",
        "_id": "item2_bubble_id"
    },
    ...
]

⚠️ Work In Progress

Le développement de cette librairie est jeune et peut être amené à évoluer fortement. A utiliser à vos risques et périls, mais toute contribution est bienvenue. A date, la librairie ne permet pas l’écriture via l’API (lecture seulement).