← Files WixARCHIVED FILE
skills/wix-headless-templates/cms/app/wix/cms/collections.ts
1.54 KB · Oct 8, 2026 · 12:02 UTC
// Collection schema reads (@wix/data `collections`) over the SDK — field types, reference targets,
// and permissions at runtime. The mapper lives in ./collections-core (shared with the REST twin in
// templates/cms/rest/collections.ts); this file is the transport only.
// SDK: collections.getDataCollection(dataCollectionId) → DataCollection
// (com.wixpress.cloud.data.api.collectionservice.DataCollectionService.GetDataCollection)
import { collections as collectionsModule } from "@wix/data";
import { wixModule } from "../sdk";
import { toCollectionSchema, type RawCollection } from "./collections-core";
import type { CmsCollectionSchema } from "./types";
const collections = wixModule(collectionsModule);
/**
* A collection's schema — the source of truth for a field's type when the seed plan isn't at
* hand (an imported site), and for which fields are MULTI_REFERENCEs to link after an insert.
* Null when the collection can't be read: it doesn't exist, or the caller may not read schemas
* (Wix's own headless CMS components read it client-side as the visitor and tolerate a null the
* same way — confirm once on a live site that a visitor token is allowed; if it isn't, read the
* schema server-side in the page's frontmatter and pass what the island needs).
*/
export async function getCollectionSchema(collectionId: string): Promise<CmsCollectionSchema | null> {
try {
const raw = await collections.getDataCollection(collectionId);
return raw ? toCollectionSchema(raw as RawCollection) : null;
} catch {
return null;
}
}
SHA-256: 2ebf8f286a883b7ed7891b38d1761374ec1a082f6a55933c6fe94aac63f4eae4