---
url: https://docs.ogmabox.com/uk/plugins/backend-sdk.md
description: >-
  Довідник серверних API плагінів Ogma, ізольованого виконання, шляхів сховища,
  доступу до історії HTTP, знахідок, команд та інтеграції з хостом.
---

# Довідник SDK серверної частини плагінів {#plugin-backend-sdk-reference}

Серверний код плагіна виконується в ізольованому середовищі JavaScript Ogma й отримує об’єкт `sdk` від головного застосунку.

Повний формат пакета, поля маніфеста, дозволи й приклади наведено в [посібнику системи плагінів](./README.md).

## Точка входу {#entry-point}

Серверні плагіни надають функцію `init`:

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

Ogma викликає `init(sdk)` під час увімкнення плагіна.

## Основні простори імен {#core-namespaces}

| Простір імен | Призначення |
| --- | --- |
| `sdk.console` | Запис повідомлень до буфера журналу плагіна. |
| `sdk.meta` | Читання метаданих плагіна й шляхів даних. |
| `sdk.events` | Реєстрація обробників подій Ogma. |
| `sdk.requests` | Запити до історії HTTP й даних запитів. |
| `sdk.findings` | Пошук або створення знахідок, якщо дозволи це допускають. |
| `sdk.scope` | Читання відомостей про активну область. |
| `sdk.storage` | Постійне зберігання стану плагіна як ключів і значень. |
| `sdk.fs` | Файлові операції в приватному каталозі даних плагіна. |
| `sdk.path` | Допоміжні функції складання шляхів у каталозі даних плагіна. |
| `sdk.api` | Надання серверних обробників інтерфейсу плагіна. |

## Журналювання {#logging}

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

Повідомлення видимі в інтерфейсі журналів плагіна. Пишіть стисло й не записуйте секретів.

## Метадані {#metadata}

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

Використовуйте `sdk.meta.path()` для даних конкретного плагіна. Не припускайте доступу до довільних шляхів файлової системи з ізольованого коду плагіна.

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

## Події {#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")
})
```

Обробники мають бути швидкими. Тривалу роботу слід переносити до явних дій користувача або серверних обробників API.

## Обробники мосту інтерфейсу {#frontend-bridge-handlers}

Серверні плагіни можуть надавати обробники панелям інтерфейсу плагіна:

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

Інтерфейс викликає обробник через SDK інтерфейсу Ogma. Див. [довідник SDK інтерфейсу](./frontend-sdk.md).

## Вимоги безпеки {#security-expectations}

* Вважайте HTTP-трафік, знахідки, журнали й експорти конфіденційними.
* Запитуйте лише потрібні плагіну дозволи.
* Ніколи не записуйте облікові дані, cookie, bearer-токени або приватний трафік за замовчуванням.
* Робіть поведінку плагіна явною й зрозумілою користувачу.
