Skip to content

Conversation

harisarang
Copy link
Contributor

Change Summary

  • Added: Curation Sets API (requires Typesense server v30+)

    • New client entrypoints: client.curationSets() and client.curationSets(name)
    • Endpoints supported:
      • List all: curationSets().retrieve()
      • Upsert: curationSets(name).upsert({ items: [...] })
      • Retrieve: curationSets(name).retrieve()
      • Delete: curationSets(name).delete()
      • Items:
        • List: curationSets(name).items().retrieve()
        • Get: curationSets(name).items(id).retrieve()
        • Upsert: curationSets(name).items(id).upsert({...})
        • Delete: curationSets(name).items(id).delete()
    • Notes:
      • Tests are gated with a version check and run only on Typesense v30+.
      • No breaking changes.
  • Added: Synonym Set Items sub-API

    • List items: synonymSets(name).items().retrieve()
    • Get/Upsert/Delete single item: synonymSets(name).items(id).{retrieve,upsert,delete}()

Usage examples

// Curation Sets (Typesense v30+)
const typesense = new Typesense.Client({
  nodes: [{ host: "localhost", port: 8108, protocol: "http" }],
  apiKey: "xyz",
});

// Upsert a curation set
await typesense.curationSets("promotions").upsert({
  items: [
    {
      id: "rule-1",
      rule: { query: "test", match: "exact" },
      includes: [{ id: "123", position: 1 }],
    },
  ],
});

// Retrieve a curation set
const curation = await typesense.curationSets("promotions").retrieve();

// List all curation sets
const all = await typesense.curationSets().retrieve();

// List items in a set
const items = await typesense.curationSets("promotions").items().retrieve();

// Upsert a single item
await typesense
  .curationSets("promotions")
  .items("rule-1")
  .upsert({ id: "rule-1", rule: { query: "test", match: "exact" }, includes: [{ id: "999", position: 1 }] });

// Get a single item
const item = await typesense.curationSets("promotions").items("rule-1").retrieve();

// Delete a single item
await typesense.curationSets("promotions").items("rule-1").delete();

// Delete the curation set
await typesense.curationSets("promotions").delete();
// Synonym Set Items
// List items
await typesense.synonymSets("colors").items().retrieve();

// Upsert one item
await typesense
  .synonymSets("colors")
  .items("color-item")
  .upsert({ synonyms: ["blue", "azure"] });

// Get one item
await typesense.synonymSets("colors").items("color-item").retrieve();

// Delete one item
await typesense.synonymSets("colors").items("color-item").delete();

PR Checklist

@jasonbosco jasonbosco merged commit 2b8f7fd into typesense:master Sep 25, 2025
1 check passed
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