---
url: https://docs.ogmabox.com/fr/plugins/backend-sdk.md
description: >-
  Référence des API backend des plugins Ogma, de l'exécution en bac à sable, des
  chemins de stockage, de l'accès à l'historique HTTP, des constats, des
  commandes et de l'intégration avec l'application hôte.
---

# Référence du SDK backend des plugins {#plugin-backend-sdk-reference}

Le code backend des plugins s'exécute dans le bac à sable JavaScript d'Ogma et reçoit un objet `sdk` de l'application hôte.

Pour connaître le format complet des paquets de plugins, les champs du manifeste, les permissions et les exemples, commencez par le [guide du système de plugins](./README.md).

## Point d'entrée {#entry-point}

Les plugins backend exposent une fonction `init` :

```js
async function init(sdk) {
  sdk.console.log("plugin started");
}
```

Ogma appelle `init(sdk)` lorsque le plugin est activé.

## Espaces de noms principaux {#core-namespaces}

| Espace de noms | Fonction |
| --- | --- |
| `sdk.console` | Écrire des messages dans le tampon des journaux du plugin. |
| `sdk.meta` | Lire les métadonnées du plugin et les chemins de ses données. |
| `sdk.events` | Enregistrer des fonctions de rappel pour les événements Ogma. |
| `sdk.requests` | Interroger l'historique HTTP et les données des requêtes. |
| `sdk.findings` | Consulter ou créer des constats de sécurité lorsque les permissions le permettent. |
| `sdk.scope` | Lire les informations sur le périmètre actif. |
| `sdk.storage` | Conserver l'état du plugin sous forme de paires clé/valeur. |
| `sdk.fs` | Effectuer des opérations sur les fichiers dans le répertoire de données privé du plugin. |
| `sdk.path` | Utiliser des fonctions utilitaires pour construire des chemins dans le répertoire de données du plugin. |
| `sdk.api` | Exposer des gestionnaires backend au frontend du plugin. |

## Journalisation {#logging}

```js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")
```

Les messages sont visibles dans l'interface des journaux du plugin. Gardez les journaux concis et évitez d'y écrire des secrets.

## Métadonnées {#metadata}

```js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()
```

Utilisez `sdk.meta.path()` pour les données propres au plugin. Ne présumez pas que le code du plugin exécuté en bac à sable peut accéder à des chemins arbitraires du système de fichiers.

```js
sdk.storage.set("key", "value")
sdk.storage.get("key")
sdk.storage.keys()
sdk.storage.delete("key")
sdk.storage.clear()
```

```js
sdk.fs.readFile("relative/file.txt")
sdk.fs.writeFile("relative/file.txt", "text")
sdk.fs.appendFile("relative/file.txt", "more")
sdk.fs.exists("relative/file.txt")
sdk.fs.existsSync("relative/file.txt")
sdk.fs.mkdir("relative/dir")
sdk.path.join("a", "b", "c")
```

## Événements {#events}

```js
sdk.events.onInterceptRequest(function(req) {
  return req
})

sdk.events.onInterceptResponse(function(req, res) {
  sdk.console.log(res.getCode())
})

sdk.events.onProjectChange(function() {
  sdk.console.log("project changed")
})
```

Les fonctions de rappel doivent être rapides. Les traitements longs doivent être déclenchés par des actions explicites de l'utilisateur ou par des gestionnaires de l'API backend.

## Gestionnaires de la passerelle frontend {#frontend-bridge-handlers}

Les plugins backend peuvent exposer des gestionnaires destinés aux panneaux frontend des plugins :

```js
sdk.api.register("ping", async function(input) {
  return { ok: true, input: input };
});
```

Le frontend appelle le gestionnaire via le SDK frontend d'Ogma. Voir la [référence du SDK frontend](./frontend-sdk.md).

## Exigences de sécurité {#security-expectations}

* Considérez le trafic HTTP, les constats, les journaux et les exports comme des données sensibles.
* Ne demandez que les permissions nécessaires à votre plugin.
* Ne journalisez jamais par défaut les identifiants d'authentification, les cookies, les jetons porteurs ou le trafic privé.
* Veillez à ce que le comportement du plugin soit explicite et compréhensible pour l'utilisateur.
