---
url: https://docs.ogmabox.com/id/plugins/backend-sdk.md
description: >-
  Referensi API plugin backend Ogma, eksekusi sandbox, path penyimpanan, akses
  riwayat HTTP, temuan, perintah, dan integrasi host.
---

# Referensi SDK Backend Plugin {#plugin-backend-sdk-reference}

Kode plugin backend berjalan dalam sandbox JavaScript Ogma dan menerima objek `sdk` dari aplikasi host.

Untuk format paket plugin lengkap, kolom manifes, izin, dan contoh, mulailah dengan [Panduan sistem plugin](./README.md).

## Titik masuk {#entry-point}

Plugin backend menyediakan fungsi `init`:

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

Ogma memanggil `init(sdk)` ketika plugin diaktifkan.

## Namespace utama {#core-namespaces}

| Namespace | Tujuan |
| --- | --- |
| `sdk.console` | Menulis pesan ke buffer log plugin. |
| `sdk.meta` | Membaca metadata plugin dan path data. |
| `sdk.events` | Mendaftarkan callback untuk peristiwa Ogma. |
| `sdk.requests` | Mengueri riwayat HTTP dan data permintaan. |
| `sdk.findings` | Mengueri atau membuat temuan ketika izin mengizinkannya. |
| `sdk.scope` | Membaca informasi cakupan aktif. |
| `sdk.storage` | Persistensi kunci/nilai untuk status plugin. |
| `sdk.fs` | Operasi file dalam direktori data privat plugin. |
| `sdk.path` | Helper path untuk menyusun path dalam direktori data plugin. |
| `sdk.api` | Menyediakan handler backend kepada frontend plugin. |

## Pencatatan Log {#logging}

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

Pesan terlihat dalam UI log plugin. Jaga log tetap ringkas dan hindari menulis rahasia.

## Metadata {#metadata}

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

Gunakan `sdk.meta.path()` untuk data khusus plugin. Jangan menganggap kode plugin dalam sandbox dapat mengakses path sistem file sembarang.

```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")
```

## Peristiwa {#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")
})
```

Callback sebaiknya cepat. Pekerjaan yang berlangsung lama sebaiknya dipindahkan ke tindakan pengguna eksplisit atau handler API backend.

## Handler bridge frontend {#frontend-bridge-handlers}

Plugin backend dapat menyediakan handler untuk panel plugin frontend:

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

Frontend memanggil handler melalui SDK frontend Ogma. Lihat [Referensi SDK frontend](./frontend-sdk.md).

## Ekspektasi keamanan {#security-expectations}

* Perlakukan lalu lintas HTTP, temuan, log, dan ekspor sebagai sensitif.
* Minta hanya izin yang diperlukan plugin Anda.
* Jangan pernah mencatat kredensial, cookie, token bearer, atau lalu lintas privat secara default.
* Jaga perilaku plugin tetap eksplisit dan dapat dipahami pengguna.
