Skip to content

feat: iconik connector, metadata collections, and source metadata search (API v0.7.11) - #105

Merged
kdr merged 1 commit into
mainfrom
kdr-metamore
Jul 22, 2026
Merged

feat: iconik connector, metadata collections, and source metadata search (API v0.7.11)#105
kdr merged 1 commit into
mainfrom
kdr-metamore

Conversation

@kdr

@kdr kdr commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Bumps the spec to v0.7.11. Three related themes: a new Iconik data connector, a new metadata collection type that indexes connector metadata without processing media, and search/refresh support for connector source metadata.

Iconik connector

  • New IconikSourceMetadata schema — source_type + iconik_asset_id required; title, media_type, date_created/date_modified, duration_ms, ingested_rendition, iconik_url, external_id, created_by_user, and iconik_metadata (custom metadata-view fields) optional
  • SourceMetadata oneOf + discriminator mapping extended to seven connectors
  • iconik added to the DataConnector.type and File.source enums

Metadata collections

  • New metadata value for collection_type on Collection / NewCollection: indexes connector source metadata + user metadata into file-level search documents without downloading or processing the media. Free to index, takes no processing configs, and supports google-drive, dropbox, zoom, gong, recall, grain, and iconik URLs
  • CreateDeepSearchRequest.scope documents how metadata collections affect result scope

Source metadata search + refresh

  • SearchFilter gains source_metadata: filter on connector-provided fields via JSON path expressions (file scope), e.g. source_metadata.topic (zoom), source_metadata.parties.email (gong), source_metadata.iconik_metadata.<FieldName> (iconik custom fields)
  • New doc_lexical search modality
  • New POST /files/{file_id}/sync — re-fetches a file's source_metadata live from its connector and re-indexes any metadata collections the file belongs to. Works for metadata-only and fully ingested connector files; free, no media downloaded

Describe / transcribe

  • Describe and Transcribe responses gain a file object (its metadata/source_metadata populated only when include_metadata is true)
  • New include_metadata query parameter on the describe, transcribe, and collection media-description/rich-transcript listing endpoints

Test plan

  • openapi.json parses as valid JSON (62 paths, 159 schemas)
  • IconikSourceMetadata follows the established source-metadata contract: only source_type + the provider's primary id required, everything else optional
  • Discriminator mapping covers every oneOf variant; connector enums consistent across DataConnector.type and File.source

Note

Medium Risk
Large contract expansion (new connector, collection type, search filters, and sync endpoint) affects client integrations and knowledge-base behavior even though the diff is spec-only.

Overview
Bumps the public API spec to v0.7.11 with Iconik integration, metadata-only collections, and richer metadata in search and read APIs.

Iconik is added as a connector (iconik://asset/<id> sync URLs, listing filters for date_created and title search) with a new IconikSourceMetadata shape and iconik on File.source / DataConnector.type.

A new metadata collection type indexes connector source_metadata plus optional user metadata into file-level search documents without ingesting media. Adding files to metadata collections can pass inline metadata; nimbus-002-preview can use these collections in knowledge bases (nimbus-001 rejects them).

Search gains source_metadata JSON-path filters (file scope) and a doc_lexical modality for file-level metadata/summary text. Deep search with metadata collections requires scope=file.

POST /files/{file_id}/sync refreshes stored connector metadata and re-indexes related metadata collections at no media cost.

Describe/transcribe and several collection listing endpoints add optional include_metadata and a nested file object on responses when enabled.

Reviewed by Cursor Bugbot for commit 849181c. Bugbot is set up for automated code reviews on this repo. Configure here.

…rch (API v0.7.11)

Iconik data connector:
- New IconikSourceMetadata schema (source_type + iconik_asset_id
  required; title, media_type, timestamps, duration, rendition, urls,
  and iconik_metadata custom fields optional)
- SourceMetadata oneOf + discriminator mapping now covers iconik
- 'iconik' added to the DataConnector type and File source enums

Metadata collections:
- New 'metadata' collection_type on Collection and NewCollection: indexes
  connector source metadata and user metadata into file-level search
  documents without downloading or processing media, free to index,
  supported for google-drive, dropbox, zoom, gong, recall, grain, and
  iconik URLs (no processing configs)
- Deep search scope documents metadata-collection behavior

Source metadata search and refresh:
- SearchFilter gains source_metadata, filtering on connector-provided
  fields via JSON path expressions (file scope)
- New doc_lexical search modality
- New POST /files/{file_id}/sync re-fetches a file's source_metadata
  live from its connector and re-indexes any metadata collections it
  belongs to; free, no media downloaded

Describe and transcribe:
- Describe and Transcribe responses gain a 'file' object
- include_metadata query parameter on the describe, transcribe, and
  collection media-description listing endpoints
@kdr
kdr requested a review from amyxst July 22, 2026 21:38

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 849181c. Configure here.

Comment thread spec/openapi.json
"tag_semantic",
"tag_lexical"
"tag_lexical",
"doc_lexical"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search modalities maxItems too low

Medium Severity

The SearchModalities schema's maxItems is 5, but the enum now lists six values, including the newly added doc_lexical. This prevents clients from using all available modalities in a single hybrid search, a capability that previously existed.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 849181c. Configure here.

@kdr
kdr merged commit f48a744 into main Jul 22, 2026
1 check passed
@kdr
kdr deleted the kdr-metamore branch July 22, 2026 22:51
kdr added a commit to cloudglue/cloudglue-js that referenced this pull request Jul 22, 2026
…rch (spec v0.7.11) (#145)

## Summary

Syncs the SDK to spec **v0.7.11** (cloudglue/cloudglue-api-spec#105) and
bumps the package to **0.7.21**.

> **Branch note:** the local working checkout this started from was
based 14 commits behind main (it predated the v0.7.9/v0.7.10 wrapper
work and the fixed `generate.js`), so this branch was rebuilt from
`origin/main` and the regen re-run with main's generator. The version is
0.7.21 (next after the released 0.7.20), not the 0.7.12 the stale base
implied.

### Generated
- `IconikSourceMetadata`; the `SourceMetadata` discriminated union and
the `DataConnector.type`/`File.source` enums now cover **iconik**
- New `syncFileSourceMetadata` endpoint (`POST /files/{file_id}/sync`)
- `include_metadata` on describe/transcribe get+list, collection
media-description/rich-transcript listings, and segmentation describes;
`Describe`/`Transcribe` responses gain a `file` object
- `SearchFilter.source_metadata` + the `doc_lexical` search modality
- `metadata` collection type

### generate.js — TS7056 fix
Describe/Transcribe responses now embed `File`, whose seven-variant
`source_metadata` union pushed the structurally inferred types of the
big `common.ts` consts past the compiler's declaration-emit limit
(`error TS7056` in Segmentations/Files clients). Fixed at the root:
`SourceMetadata`, `File`, `Describe`, and `DescribeList` consts are now
annotated `z.ZodType<T>` (same pattern as the existing
`ResponseKnowledgeBase` annotation), so downstream inference references
named types.

### Wrapper (src/)
- `files.syncSourceMetadata(fileId)` — new endpoint, unreachable without
a wrapper method
- `include_metadata` plumbed through the hand-written param literals in
describe/transcribe/segmentations/collections (9 endpoints)
- `'metadata'` added to `ListCollectionParams.collection_type` (create
flows automatically via `z.infer`)
- `IconikSourceMetadata` re-exported from `types.ts`
- `url-utils`: `iconik://asset/<id>` grammar + classification, with unit
tests
- Data-connector filter/support docs updated for iconik

## Test plan

- [x] `npm run build` clean (TS7056 resolved), `npm test` **107/107**
- [x] Live battery — **14/14** (full evidence in
`~/Downloads/cloudglue-v0.7.11-sdk-test-results.md`): iconik
listing/per-file metadata/source-metadata narrowing/native title_search;
metadata collection created + grain & iconik **URLs** indexed without
processing (then deleted); `syncSourceMetadata` refreshes both
providers; `doc_lexical` search with a `source_metadata.title` filter
finds exactly the grain file and a negative filter excludes it;
`include_metadata` toggles file metadata on describe get/list

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Large generated-client sync plus new search/collection behaviors; risk
is mainly API contract drift and TypeScript emit fixes rather than
runtime auth or payment logic.
> 
> **Overview**
> Bumps **@cloudglue/cloudglue-js** to **0.7.21** and regenerates
clients from OpenAPI **v0.7.11**.
> 
> **Iconik & connector metadata:** Adds **`IconikSourceMetadata`** and
**`iconik`** across data-connector types, file `source`, and the
`SourceMetadata` union. **`url-utils`** recognizes
**`iconik://asset/<id>`** (with tests).
> 
> **Metadata collections & search:** New **`metadata`**
`collection_type`; **`AddCollectionFile`** can pass optional
**`metadata`**. Search gains **`doc_lexical`** and
**`SearchFilter.source_metadata`** for filtering on connector fields.
> 
> **API surface:** New **`POST /files/:file_id/sync`**
(`syncFileSourceMetadata`) to refresh stored **`source_metadata`** and
re-index metadata collections. **`include_metadata`** is wired on
describe/transcribe (create + list/get), collection
media-description/rich-transcript routes, and segmentation describes;
related responses can include an optional embedded **`file`**.
> 
> **Build fix:** **`generate.js`** annotates large **`common.ts`**
schemas (`SourceMetadata`, `File`, `Describe`, `DescribeList`) as
**`z.ZodType<T>`** to avoid **TS7056** when responses embed `File`.
> 
> **Hand-written `src/`:** Exposes **`files.syncSourceMetadata`**,
documents/plumbs **`include_metadata`**, extends collection listing for
**`metadata`**, re-exports **`IconikSourceMetadata`**, and updates
data-connector docs for Iconik.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
0f5f26a. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
kdr added a commit to cloudglue/cloudglue-python that referenced this pull request Jul 22, 2026
…rch (sync spec v0.7.11) (#71)

## Summary

Syncs the SDK to spec **v0.7.11** (cloudglue/cloudglue-api-spec#105) and
bumps the package to **0.7.18**.

> **Branch note:** the local working checkout this started from was
based 9 commits behind main (it predated the v0.7.9/v0.7.10 syncs), so
this branch was rebuilt from `origin/main` with the regenerated
`cloudglue/sdk` tree carried over intact. The version is 0.7.18 (next
after the released 0.7.17).

### Generated (cloudglue/sdk)
- `IconikSourceMetadata`; the `SourceMetadata` oneOf and
connector/source enums now cover **iconik**
- New `sync_file_source_metadata` endpoint (`POST
/files/{file_id}/sync`)
- `include_metadata` on describe/transcribe get+list, collection
media-description/rich-transcript listings, and segmentation describes;
`Describe`/`Transcribe` responses gain a `file` object
- `SearchFilter.source_metadata` + the `doc_lexical` search modality
- `metadata` collection type

### Wrapper (cloudglue/client + package)
- `files.sync_source_metadata(file_id)` — new endpoint, unreachable
without a wrapper method
- `include_metadata` plumbed through
describe/transcribe/segmentations/collections methods (9 endpoints —
these pass kwargs explicitly, so new params need plumbing)
- `Search.create_filter` gains `source_metadata_filters` (builds
`SearchFilterCriteria` entries; documented JSON-path examples per
connector)
- `collection_type` docstrings cover `'metadata'` (and fix a stale
filter-enum doc)
- `IconikSourceMetadata` re-exported at the package top level
- Data-connector docstrings: per-connector `from`/`to` + `title_search`
matrices and sync/lookup support updated for iconik

## Test plan

- [x] Package imports clean; signature smoke-tests for all 9
`include_metadata` methods + `sync_source_metadata`;
`create_filter(source_metadata_filters=…)` serializes to the correct
wire shape
- [x] Live battery — **14/14** (full evidence in
`~/Downloads/cloudglue-v0.7.11-sdk-test-results.md`): iconik
listing/per-file metadata/`isinstance(IconikSourceMetadata)`
lookup/native title_search; metadata collection created + grain & iconik
**URLs** indexed without processing (then deleted);
`sync_source_metadata` refreshes both providers with typed variants;
`doc_lexical` search with a `source_metadata.title` filter finds exactly
the grain file and a negative filter excludes it; `include_metadata`
toggles file metadata on describe get/list

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Large generated SDK surface plus new search/indexing and connector
sync paths; behavior is additive and documented, but touches search
filters and file metadata refresh used across integrations.
> 
> **Overview**
> Syncs the Python client to **OpenAPI v0.7.11**, adding **Iconik** as a
data connector and expanding metadata-only indexing and search over
connector `source_metadata`.
> 
> **Iconik & connectors:** New `IconikSourceMetadata` is exported at the
package root. Data-connector docs and listing filters now treat Iconik
like other OAuth sources (`from`/`to`, full-text `title_search`,
`iconik://asset/<id>` URIs, populated `source_metadata` on sync/lookup).
> 
> **Metadata collections & refresh:** Collection docs describe a new
**`metadata`** type that indexes connector/user metadata without media
processing. **`files.sync_source_metadata(file_id)`** (`POST
/files/{file_id}/sync`) re-fetches live connector metadata and
re-indexes metadata collections when applicable.
> 
> **Search & responses:** `Search.create_filter` accepts
**`source_metadata_filters`** (JSON paths on connector metadata, file
scope). Describe/transcribe/collection transcript & media-description
APIs gain optional **`include_metadata`** on get/list (and segmentation
describe lists), wired through the high-level client where kwargs are
explicit.
> 
> The bulk of the diff is regenerated **`cloudglue/sdk`** (models, query
params, `SearchFilter.source_metadata`, version bump 0.7.10 → 0.7.11).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
6c1617a. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants