docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/sdk/README.md
new file +45
−0
1
+
# SDK для JSON-RPC API
2
+
3
+
SDK UFO-Tech генерує типізований клієнт для будь-якого JSON-RPC сервера з його документації [OpenRPC](https://spec.open-rpc.org/): класи процедур з методами, DTO і enum. Замість ручного складання JSON ви викликаєте звичайні PHP-методи й отримуєте об'єкти.
4
+
5
+
Найкраще SDK працює з серверами на [JsonRpcBundle](/docs/api/json-rpc-bundle): `GET /rpc` уже віддає документацію, з якої будується клієнт, а спеціальні параметри `$rpc` (callback, timeout, rayId, обхід кешу) і асинхронні транспорти підтримуються з обох боків.
6
+
7
+
## Як це працює
8
+
9
+
```
10
+
сервер (JsonRpcBundle) ваш застосунок
11
+
────────────────────── ─────────────────────────────────────────
12
+
GET /rpc → OpenRPC ──── генерація ───► App\Sdk\Orders\UserSDK, DTO\UserDto, Enums\...
13
+
POST /rpc ◄─── виклик ─────── $userSdk->get(5) → UserDto
14
+
черга (AMQP) ◄─── async ──────── $asyncUserSdk->get(5) → true
15
+
```
16
+
17
+
1. **Генерація.** SDK читає документ OpenRPC (за URL або з файлу) і створює класи процедур, DTO, enum та файл з адресами серверів `sdk_config.yaml.dist`.
18
+
2. **Виклик.** Метод згенерованого класу валідує параметри, надсилає JSON-RPC запит і перетворює результат на DTO, enum чи колекції.
19
+
3. **Помилки** сервера перетворюються на винятки з кодами JSON-RPC.
20
+
21
+
## Пакети
22
+
23
+
| Пакет | Що це | Коли потрібен |
24
+
| --- | --- | --- |
25
+
| [JSON-RPC Client SDK](/docs/api/sdk/client) (`ufo-tech/json-rpc-client-sdk`) | Бібліотека: генератор і базові класи процедур | Будь-який PHP-проєкт; основа для SDK Bundle |
26
+
| [JSON-RPC SDK Bundle](/docs/api/sdk/bundle) (`ufo-tech/json-rpc-sdk-bundle`) | Інтеграція в Symfony: конфіг постачальників API, консольні команди, автовайринг згенерованих класів і токенів | Symfony-застосунок, що викликає один чи кілька JSON-RPC API |
27
+
| `ufo-tech/component-transport-contracts`, `ufo-tech/component-transport-amqp` | Контракти й AMQP-реалізація асинхронних викликів | [Асинхронні виклики](/docs/api/sdk/client/async) через черги |
28
+
| [RPC TS SDK](/docs/api/sdk/ts) (`@ufotech/rpc-ts-sdk`) | TypeScript-інтерфейси зі схем OpenRPC | Фронтенд і Node.js-клієнти |
29
+
30
+
## Сумісність версій
31
+
32
+
Станом на 2026-10-19:
33
+
34
+
| SDK Bundle | Client SDK | PHP | Symfony |
35
+
| --- | --- | --- | --- |
36
+
| 4.0 | ^5.0 | >= 8.4 | ^7.3 \| ^8.0 |
37
+
| 3.2 | ^4.3 | >= 8.3 | ^7.3 |
38
+
| 3.1 | ^4.1 | >= 8.3 | ^7.3 |
39
+
40
+
Client SDK 5.x сам по собі потребує PHP >= 8.3 і Symfony ^7.2 | ^8.0. З сервером зв'язок іде через документ OpenRPC, тож жорсткої прив'язки до версії JsonRpcBundle немає; асинхронні виклики потребують на сервері транспорт з назвою, що починається з `rpc_async`, і `docs.async_dsn_info: true`.
41
+
42
+
## З чого почати
43
+
44
+
* Symfony-застосунок — [SDK Bundle: встановлення](/docs/api/sdk/bundle/installation): конфіг постачальника і одна команда `bin/console ufo:sdk:generate`.
45
+
* Інший PHP-проєкт — [Client SDK: генерація](/docs/api/sdk/client/generation).