
# gRPC {/* #grpc */}

Начните с [Подключения через API](/docs/ru/connect-api), чтобы создать токен API платформы. Клиенты gRPC-Web используют `https://reconstruct.dev`. Нативный gRPC подключается к `reconstruct.dev:443` по TLS и использует путь метода, сгенерированный из имени proto-сервиса. Каждый вызов требует метаданные `authorization: Bearer <token>`.

`GetCaptureOptions` возвращает поддерживаемые ID типов и окружения; клиентам не следует хранить фиксированный список. `CatalogPlatform.view` — тип платформы (`desktop`/`mobile`), а `CatalogPlatform.implementation` — окружение. Настольная платформа поддерживает `web/web-extension/macos/windows/linux`, мобильная — `web/ios/android`. `captured` указывает наличие сохранённых данных. MCP использует `platform`/`environment` для того же выбора; `view` страницы обозначает сохранённый профиль. См. [каталог MCP](/docs/ru/mcp-tools).

## Скачивание контракта {/* #download-the-contract */}

```bash
curl -fsSL https://reconstruct.dev/docs/proto/platform.proto -o platform.proto
```

[Клиентский контракт](https://reconstruct.dev/docs/proto/platform.proto) содержит те же сервис, сообщения и номера полей, что и серверный. HTTP-аннотации опущены, поэтому генерация клиента не требует proto-файлов аннотаций API Google.

| RPC | Запрос | Результат |
|---|---|---|
| `ListCatalogs` | `page_size`, необязательный `page_token` | `catalogs[]`, необязательный `next_page_token` |
| `GetCaptureOptions` | Пустой запрос | Поддерживаемые ID платформ/окружений, значения по умолчанию и варианты платформ для запросов; без аутентификации и учёта использования. |
| `GetCatalog` | `catalog_id`, необязательный `version` | Метаданные, выбранный `version`, опубликованные `versions[]`, `screens[]`, варианты платформ/языков |
| `GetCatalogInsights` | `catalog_id`, необязательные `locale`, `view`, `implementation`, `section`, `version` | `version`, `technologies[]`, `rendering`, `fonts[]`, `text_styles[]`, `assets[]`, `color_themes[]`, `page_count` |

Передайте `next_page_token` как `page_token` следующего вызова для продолжения списка. ID каталогов получайте из `ListCatalogs`.

Контракт также включает `GetCatalogFile` (байты и тип содержимого, необязательный `version`), `CreateRequest`, `ListRequests`, `GetRequest` и операции учётной записи, оформления, аватара и персональных токенов из [руководства REST](/docs/ru/api/rest). Для обоих видов API действуют одинаковые требования доступа. `ListCatalogs` поддерживает описанные там поиск, сортировку и повторяющиеся фильтры платформы.

`WatchCatalogs` передаёт поток `changed` и `revision`; укажите `catalog_id` для одного каталога или опустите его для списка и повторно используйте последнюю `revision` при переподключении. `WatchRequests` передаёт уведомления об изменениях запросов вызывающего пользователя. При `changed: true` обновляйте соответствующие данные. Потоки используют gRPC/gRPC-Web и не имеют HTTP-аннотации.

## Генерация клиента {/* #generate-a-client */}

- [Python](/docs/ru/api/grpc/python)
- [C#](/docs/ru/api/grpc/csharp)
- [TypeScript](/docs/ru/api/grpc/typescript)
- [Go](/docs/ru/api/grpc/go)
- [Rust](/docs/ru/api/grpc/rust)
- [Java](/docs/ru/api/grpc/java)
- [C++](/docs/ru/api/grpc/cpp)

## Пробный вызов через grpcurl {/* #try-a-call-with-grpcurl */}

В каталоге с `platform.proto`, задав `CR_RECONSTRUCT_API_TOKEN`:

```bash
grpcurl \
  -import-path . -proto platform.proto \
  -H "authorization: Bearer ${CR_RECONSTRUCT_API_TOKEN}" \
  -d '{"pageSize":10}' \
  reconstruct.dev:443 \
  reconstruct.platform.v1.PlatformService/ListCatalogs
```

Для нативной цели gRPC используйте имя хоста и порт без URL-пути.

## Использование и оплата учётной записи {/* #account-usage-and-billing */}

Управляйте подпиской и проверяйте использование в настройках учётной записи платформы. Персональные токены API и MCP дают доступ к операциям каталогов и запросов; управлять оплатой учётной записи ими нельзя.

## Нормализованные данные интерфейса {/* #normalized-interface-data */}

[Формат данных Scene](/docs/ru/data-format) определяет независимые от платформы артефакты интерфейса, включая состояния, ресурсы и свидетельства. Текущий нормализованный экспорт получается через MCP `get_interface_scene`; API каталогов не определяет отдельную операцию Scene.
