
# gRPC {/* #grpc */}

Platform API 토큰을 만들려면 [API로 연결](/docs/ko/connect-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/ko/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` |

목록을 계속 읽으려면 `next_page_token`을 다음 호출의 `page_token`으로 사용하세요. 카탈로그 ID는 `ListCatalogs`에서 가져오세요.

계약에는 `GetCatalogFile`(바이트와 콘텐츠 유형, 선택적 `version`), `CreateRequest`, `ListRequests`, `GetRequest` 및 [REST 가이드](/docs/ko/api/rest)에 나열된 계정, 모양, 아바타, 개인 토큰 작업도 포함됩니다. 두 API 방식에 같은 계정 액세스 요건이 적용됩니다. `ListCatalogs`는 해당 문서의 플랫폼 검색, 정렬 및 반복 필터를 지원합니다.

`WatchCatalogs`는 `changed`와 `revision`을 스트리밍합니다. 단일 카탈로그에는 `catalog_id`를 전달하고 목록에는 생략하며 재연결 시 마지막 `revision`을 재사용하세요. `WatchRequests`는 호출자의 요청에 대한 무효화 알림을 스트리밍합니다. `changed`가 true이면 해당 데이터를 새로고침하세요. 이 스트림은 gRPC/gRPC-Web을 사용하며 HTTP 주석이 없습니다.

## 클라이언트 생성 {/* #generate-a-client */}

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

## grpcurl로 호출 테스트 {/* #try-a-call-with-grpcurl */}

`CR_RECONSTRUCT_API_TOKEN`을 설정하고 `platform.proto`가 있는 디렉터리에서 실행하세요:

```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/ko/data-format)은 상태, 리소스 및 증거를 포함하는 플랫폼 중립 인터페이스 아티팩트를 정의합니다. 현재 정규화된 내보내기는 MCP `get_interface_scene`으로 얻으며 이 카탈로그 API는 별도 Scene 작업을 정의하지 않습니다.
