
# gRPC {/* #grpc */}

Mulai dari [hubungkan melalui API](/docs/id/connect-api) untuk membuat token Platform API. Klien gRPC-Web memakai `https://reconstruct.dev`. gRPC native terhubung ke `reconstruct.dev:443` melalui TLS dan memakai jalur metode yang dihasilkan dari nama layanan proto. Setiap panggilan memerlukan metadata `authorization: Bearer <token>`.

`GetCaptureOptions` mengembalikan ID jenis dan lingkungan yang didukung; klien tidak semestinya menyimpan daftar tetap sendiri. `CatalogPlatform.view` adalah jenis platform (`desktop`/`mobile`), dan `CatalogPlatform.implementation` adalah lingkungan. Desktop mendukung `web/web-extension/macos/windows/linux`; mobile mendukung `web/ios/android`. `captured` menunjukkan ketersediaan tersimpan. MCP memakai `platform`/`environment` untuk pilihan yang sama; `view` halaman mengidentifikasi profil tersimpan. Lihat [katalog MCP](/docs/id/mcp-tools).

## Unduh kontrak {/* #download-the-contract */}

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

[Kontrak untuk klien](https://reconstruct.dev/docs/proto/platform.proto) memiliki layanan, pesan, dan nomor kolom yang sama dengan kontrak server. Anotasi HTTP dihilangkan agar pembuatan klien tidak memerlukan proto anotasi API Google.

| RPC | Permintaan | Hasil |
|---|---|---|
| `ListCatalogs` | `page_size`, `page_token` opsional | `catalogs[]`, `next_page_token` opsional |
| `GetCaptureOptions` | Permintaan kosong | ID platform/lingkungan yang didukung, default, dan opsi platform permintaan; tanpa autentikasi atau pengukuran penggunaan. |
| `GetCatalog` | `catalog_id`, `version` opsional | Metadata, `version` terpilih, `versions[]` terbitan, `screens[]`, opsi platform/bahasa |
| `GetCatalogInsights` | `catalog_id`, `locale` opsional, `view`, `implementation`, `section`, `version` | `version`, `technologies[]`, `rendering`, `fonts[]`, `text_styles[]`, `assets[]`, `color_themes[]`, `page_count` |

Gunakan `next_page_token` sebagai `page_token` panggilan berikutnya untuk melanjutkan daftar. Dapatkan ID katalog dari `ListCatalogs`.

Kontrak juga mencakup `GetCatalogFile` (byte dan tipe konten, `version` opsional), `CreateRequest`, `ListRequests`, `GetRequest`, serta operasi akun, tampilan, avatar, dan token pribadi pada [panduan REST](/docs/id/api/rest). Persyaratan akses akun yang sama berlaku untuk kedua gaya API. `ListCatalogs` mendukung pencarian, pengurutan, dan filter berulang platform yang didokumentasikan di sana.

`WatchCatalogs` mengalirkan `changed` dan `revision`; berikan `catalog_id` untuk satu katalog atau hilangkan untuk daftar, lalu gunakan ulang `revision` terakhir saat menghubungkan ulang. `WatchRequests` mengalirkan invalidasi permintaan milik pemanggil. Segarkan data terkait ketika `changed` bernilai true. Aliran ini memakai gRPC/gRPC-Web dan tidak memiliki anotasi HTTP.

## Hasilkan klien {/* #generate-a-client */}

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

## Coba panggilan dengan grpcurl {/* #try-a-call-with-grpcurl */}

Dari direktori berisi `platform.proto`, dengan `CR_RECONSTRUCT_API_TOKEN` ditetapkan:

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

Gunakan hostname dan port untuk target gRPC native, tanpa jalur URL.

## Penggunaan akun dan penagihan {/* #account-usage-and-billing */}

Kelola langganan dan tinjau penggunaan dalam pengaturan akun Platform. Token API dan MCP pribadi memberi akses ke operasi katalog dan permintaan; tidak dapat dipakai mengelola penagihan akun.

## Data antarmuka ternormalisasi {/* #normalized-interface-data */}

[Format data Scene](/docs/id/data-format) menentukan artefak antarmuka netral platform, termasuk status, sumber daya, dan bukti. Ekspor ternormalisasi saat ini diperoleh melalui MCP `get_interface_scene`; API katalog ini tidak mendefinisikan operasi Scene terpisah.
