Grain source metadata + data-connector sync/source-metadata endpoints#60
Conversation
Regenerate the low-level SDK from the latest OpenAPI spec (adds grain source metadata models and two new data-connector endpoints), bump the package version, and surface the new endpoints in the high-level wrapper: - data_connectors.get_source_metadata(connector_id, url) - data_connectors.sync_file(connector_id, url)
|
Important Review skippedToo many files! This PR contains 273 files, which is 123 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (273)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…#62) ## Summary Regenerates the low-level SDK from [cloudglue-api-spec#98](cloudglue/cloudglue-api-spec#98) (API v0.7.4). The only substantive change is in `GrainSourceMetadata`: include-gated fields (`participants`, `highlights`, `ai_summary`, `ai_action_items`, `ai_template_sections`, `hubspot`) are now nullable, with serializer hooks so an explicit `null` round-trips instead of being dropped. Everything else in the diff is the `0.7.3 → 0.7.4` version bump churn. ## Wrapper changes None needed. The data-connector sync and source-metadata endpoints landed previously (#60) and are already exposed via `DataConnectors.get_source_metadata()` / `sync_file()`. The source-metadata endpoint takes only `id`/`url` (no new params in #98), so the lightweight wrapper is already complete. ## Verification Built (`make build` → `cloudglue-0.7.11`) and ran a throwaway script end-to-end against a live Grain connector: - connector discovery, `list_files()`, and `get_source_metadata()` all work - nullable fields deserialize cleanly — `calendar_event`/`hubspot` come back as `None` and round-trip through `to_dict()` as explicit `null` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Summary
Regenerates the low-level SDK from the latest OpenAPI spec (adds grain source metadata and two new data-connector endpoints), bumps the package version, and surfaces the new endpoints in the high-level
DataConnectorswrapper.Changes
cloudglue/sdk/from the latest spec submodule — new grainsource_metadatamodels (GrainSourceMetadata+ sub-models,SourceMetadata,SourceMetadataResponse) andSyncDataConnectorFileRequest.cloudglue/client/resources/data_connectors.py:get_source_metadata(connector_id, url)→GET /data-connectors/:id/source-metadata(returnsSourceMetadataResponse). Currently Grain-only; other connector types raiseCloudglueErrorwith status 501 (Not Implemented).sync_file(connector_id, url)→POST /data-connectors/:id/sync(returnsFile; idempotent). Connector-agnostic — works for any connector type;source_metadatais only populated for Grain.pyproject.toml(0.7.8 → 0.7.9) and spec submodule update.Test plan
Verified live against real connectors:
data_connectors.list()returns the grain connectorlist_files(...)returns grain files withsource_metadata(nullablemeeting_type/calendar_eventdeserialize correctly)get_source_metadata(...)returns the recording's source metadata for Grain; returns 501 for a Google Drive connector as expectedsync_file(...)materializes the recording into a Cloudglue file (idempotent); also verified on a Google Drive connector (source_metadata: null)