
# gRPC {/* #grpc */}

[API 経由で接続](/docs/ja/connect-api)に従い、Platform API トークンを作成します。gRPC-Web クライアントは `https://reconstruct.dev` を使います。ネイティブ gRPC は TLS 経由で `reconstruct.dev:443` に接続し、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/ja/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)は、サーバー契約とサービス、メッセージ、フィールド番号が同じです。クライアント生成時に Google API アノテーションの proto が不要になるよう、HTTP アノテーションは省略しています。

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

一覧の続きを取得するには、次の呼び出しの `page_token` に `next_page_token` を渡します。カタログ ID は `ListCatalogs` から取得します。

契約には、`GetCatalogFile`（バイト列とコンテンツタイプ、任意の `version`）、`CreateRequest`、`ListRequests`、`GetRequest`、および [REST ガイド](/docs/ja/api/rest)にあるアカウント、外観、アバター、個人トークンの操作も含まれます。どちらの API 方式にも同じアカウントアクセス要件が適用されます。`ListCatalogs` は、そこで説明する Platform の検索、並べ替え、繰り返し指定するフィルターに対応します。

`WatchCatalogs` は `changed` と `revision` をストリーミングします。単一カタログでは `catalog_id` を渡し、一覧では省略します。再接続時には最後の `revision` を再使用してください。`WatchRequests` は呼び出し元のリクエストの無効化通知をストリーミングします。`changed` が true の場合に対応するデータを更新します。これらは gRPC/gRPC-Web のストリームであり、HTTP アノテーションはありません。

## クライアントを生成する {/* #generate-a-client */}

- [Python](/docs/ja/api/grpc/python)
- [C#](/docs/ja/api/grpc/csharp)
- [TypeScript](/docs/ja/api/grpc/typescript)
- [Go](/docs/ja/api/grpc/go)
- [Rust](/docs/ja/api/grpc/rust)
- [Java](/docs/ja/api/grpc/java)
- [C++](/docs/ja/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 */}

Platform のアカウント設定でサブスクリプションを管理し、使用量を確認できます。個人 API トークンと MCP トークンはカタログ・リクエスト操作へのアクセス用であり、アカウントの請求管理には使用できません。

## 正規化されたインターフェースデータ {/* #normalized-interface-data */}

[Scene データ形式](/docs/ja/data-format)は、状態、リソース、根拠など、プラットフォームに依存しないインターフェースの成果物を定義します。現在の正規化エクスポートは MCP の `get_interface_scene` から取得します。このカタログ API に個別の Scene 操作は定義されていません。
