← Files WixARCHIVED FILE

skills/wix-headless-templates/cms/seed/read-site.mjs

1.33 KB · Oct 9, 2026 · 12:02 UTC

↓ Download file

// What the CMS holds: collections, their fields, item counts, a few sample items each.
//   node <SKILL_ROOT>/templates/cms/seed/read-site.mjs [--site <siteId>] [--limit <n>]
import { runReader } from "../../shared/seed/read-site.mjs";

const D = "https://dev.wix.com/docs/api-reference/business-solutions/cms";

await runReader({
  vertical: "cms",
  async read(api, { limit }) {
    const r = await api.call({ method: "GET", path: "/wix-data/v2/collections", docs: `${D}/collection-management/data-collections/list-data-collections` });
    const all = r.collections ?? r.dataCollections ?? [];
    const own = all.filter((c) => c.collectionType !== "WIX_APP");
    const collections = [];
    for (const c of own.slice(0, limit)) {
      const items = await api.tryCall({ path: "/wix-data/v2/items/query", body: { dataCollectionId: c.id, query: { paging: { limit: 3 } }, returnTotalCount: true }, docs: `${D}/data-items/query-data-items` });
      collections.push({ id: c.id, displayName: c.displayName, fields: (c.fields ?? []).map((f) => `${f.key}:${f.type}`), itemCount: items?.pagingMetadata?.total ?? null, sample: (items?.dataItems ?? []).map((i) => i.data?.title ?? i.data?.name ?? i.id) });
    }
    return { collectionCount: own.length, collections, appCollections: all.filter((c) => c.collectionType === "WIX_APP").map((c) => c.id) };
  },
});

SHA-256: e1984514f7e849f09fe48ef20c54b69ae47a0c51bc02d069f3d9bf3358996def