
# gRPC {/* #grpc */}

Bắt đầu với [Kết nối qua API](/docs/vi/connect-api) để tạo token API. gRPC-Web dùng `https://reconstruct.dev`. gRPC gốc kết nối `reconstruct.dev:443` qua TLS và dùng đường dẫn phương thức sinh từ tên dịch vụ proto. Mỗi lần gọi cần siêu dữ liệu `authorization: Bearer <token>`.

`GetCaptureOptions` trả ID loại và môi trường hỗ trợ; máy khách không nên duy trì danh sách cố định. `CatalogPlatform.view` là loại (`desktop`/`mobile`), `CatalogPlatform.implementation` là môi trường. Desktop hỗ trợ `web/web-extension/macos/windows/linux`; mobile hỗ trợ `web/ios/android`. `captured` cho biết dữ liệu đã lưu. MCP dùng `platform`/`environment` cho cùng lựa chọn; `view` trang xác định hồ sơ lưu. Xem [danh mục MCP](/docs/vi/mcp-tools).

## Tải hợp đồng {/* #download-the-contract */}

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

[Hợp đồng phía máy khách](https://reconstruct.dev/docs/proto/platform.proto) có cùng dịch vụ, thông điệp và số trường với máy chủ. Bỏ chú thích HTTP để tạo máy khách không cần proto chú thích API Google.

| RPC | Yêu cầu | Kết quả |
|---|---|---|
| `ListCatalogs` | `page_size`, `page_token` tùy chọn | `catalogs[]`, `next_page_token` tùy chọn |
| `GetCaptureOptions` | Yêu cầu rỗng | ID nền tảng/môi trường hỗ trợ, giá trị mặc định và tùy chọn gửi yêu cầu; không xác thực hay đo sử dụng. |
| `GetCatalog` | `catalog_id`, `version` tùy chọn | Siêu dữ liệu, `version` chọn, `versions[]` công bố, `screens[]`, tùy chọn nền tảng/ngôn ngữ |
| `GetCatalogInsights` | `catalog_id`, các trường tùy chọn `locale`, `view`, `implementation`, `section`, `version` | `version`, `technologies[]`, `rendering`, `fonts[]`, `text_styles[]`, `assets[]`, `color_themes[]`, `page_count` |

Dùng `next_page_token` làm `page_token` lần gọi tiếp để tiếp tục danh sách. Lấy ID từ `ListCatalogs`.

Hợp đồng còn có `GetCatalogFile` (byte, loại nội dung, `version` tùy chọn), `CreateRequest`, `ListRequests`, `GetRequest` và thao tác tài khoản, giao diện, ảnh đại diện, token trong [hướng dẫn REST](/docs/vi/api/rest). Hai kiểu API dùng cùng yêu cầu quyền tài khoản. `ListCatalogs` hỗ trợ tìm kiếm, sắp xếp và bộ lọc lặp được mô tả tại đó.

`WatchCatalogs` truyền `changed`, `revision`; truyền `catalog_id` cho một danh mục hoặc bỏ để theo dõi danh sách, tái dùng `revision` cuối khi kết nối lại. `WatchRequests` truyền thông báo dữ liệu yêu cầu đã mất hiệu lực. Làm mới dữ liệu khi `changed` là true. Các luồng dùng gRPC/gRPC-Web, không có chú thích HTTP.

## Tạo máy khách {/* #generate-a-client */}

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

## Thử gọi bằng grpcurl {/* #try-a-call-with-grpcurl */}

Từ thư mục chứa `platform.proto`, với `CR_RECONSTRUCT_API_TOKEN` đã đặt:

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

Dùng host và cổng cho đích gRPC gốc, không có đường dẫn URL.

## Mức sử dụng và thanh toán tài khoản {/* #account-usage-and-billing */}

Quản lý đăng ký và xem sử dụng trong cài đặt nền tảng. Token API/MCP cá nhân cho phép thao tác danh mục/yêu cầu, không quản lý thanh toán.

## Dữ liệu giao diện chuẩn hóa {/* #normalized-interface-data */}

[Định dạng Scene](/docs/vi/data-format) quy định hiện vật giao diện trung lập nền tảng, gồm trạng thái, tài nguyên, bằng chứng. Hiện lấy xuất chuẩn hóa qua MCP `get_interface_scene`; API danh mục không có thao tác Scene riêng.
