diff --git a/package.json b/package.json
index a97f774..9c9fb26 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,7 @@
"@iconify/svelte": "^5.2.1",
"@tailwindcss/vite": "^4.1.18",
"astro": "^6.1.1",
+ "blurhash": "^2.0.5",
"json5": "^2.2.3",
"marked": "^17.0.2",
"react": "^19.2.4",
diff --git a/src/components/PostCard.svelte b/src/components/PostCard.svelte
index 2ce6d8f..a7c011d 100644
--- a/src/components/PostCard.svelte
+++ b/src/components/PostCard.svelte
@@ -1,9 +1,13 @@
{#if showBanner}
{#if hasImage}
-
-

+
+ {#if hasResponsive && responsive}
+
+ {#each responsive.sources as s (s.type)}
+
+ {/each}
+
+
+ {:else}
+

+ {/if}
{#if hasPageTitle}
diff --git a/src/components/blocks/ImageBlock.svelte b/src/components/blocks/ImageBlock.svelte
index 029dfc5..809db3e 100644
--- a/src/components/blocks/ImageBlock.svelte
+++ b/src/components/blocks/ImageBlock.svelte
@@ -45,12 +45,29 @@
{#if imageUrl}
-
+ {#if block.resolvedResponsive}
+
+ {#each block.resolvedResponsive.sources as s (s.type)}
+
+ {/each}
+
+
+ {:else}
+
+ {/if}
{#if block.caption}
{block.caption}
{/if}
diff --git a/src/components/blocks/ImageGalleryBlock.svelte b/src/components/blocks/ImageGalleryBlock.svelte
index 69603f8..b5beb06 100644
--- a/src/components/blocks/ImageGalleryBlock.svelte
+++ b/src/components/blocks/ImageGalleryBlock.svelte
@@ -150,12 +150,29 @@
{t(T.image_gallery_empty)}
{:else if withUrl.length === 1}
-
+ {#if withUrl[0].img.resolvedResponsive}
+
+ {#each withUrl[0].img.resolvedResponsive.sources as s (s.type)}
+
+ {/each}
+
+
+ {:else}
+
+ {/if}
{#if withUrl[0].img.description}
{withUrl[0].img.description}
{/if}
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
index 6d8ba3a..374964f 100644
--- a/src/layouts/Layout.astro
+++ b/src/layouts/Layout.astro
@@ -16,7 +16,13 @@ import {
getPageConfigBySlug,
} from "../lib/cms";
import type { NavLinkEntry, FullwidthBannerEntry } from "../lib/cms";
-import { resolveImageUrls, ensureTransformedImage } from "../lib/rusty-image";
+import {
+ resolveImageUrls,
+ ensureTransformedImage,
+ ensureResponsiveImage,
+ type ResponsiveImage,
+} from "../lib/rusty-image";
+import { extractCmsImageField } from "../lib/cms-media-url";
import {
DEFAULT_SOCIAL_IMAGE_URL,
ROW_RESOLVE,
@@ -390,6 +396,10 @@ const siteName =
// Top-Banner nur laden, wenn die Seite einen Banner anzeigen soll (showBannerInLayout + topFullwidthBanner)
let topBanner: FullwidthBannerEntry | null = null;
let topBannerResolvedImages: string[] = [];
+let topBannerResponsive: ResponsiveImage | null = null;
+let topBannerFocalCss: string | null = null;
+/** Responsive Banner-Breiten: mobile (640) bis Retina-Desktop (2400). */
+const BANNER_WIDTHS = [640, 960, 1280, 1600, 1920, 2400];
if (
showBannerInLayout &&
topFullwidthBanner != null &&
@@ -398,19 +408,6 @@ if (
try {
if (isResolvedBanner(topFullwidthBanner)) {
topBanner = topFullwidthBanner;
- const bannerImages = Array.isArray(topBanner.image)
- ? topBanner.image
- : topBanner.image != null
- ? [topBanner.image]
- : [];
- if (bannerImages.length > 0) {
- topBannerResolvedImages = await resolveImageUrls(bannerImages, {
- width: 2000,
- height: 750,
- fit: "cover",
- format: "webp",
- });
- }
} else if (
typeof topFullwidthBanner === "string" &&
topFullwidthBanner !== ""
@@ -418,18 +415,43 @@ if (
topBanner = await getFullwidthBannerBySlug(topFullwidthBanner, {
locale: "de",
});
- const bannerImages = Array.isArray(topBanner?.image)
- ? topBanner.image
- : topBanner?.image != null
- ? [topBanner.image]
- : [];
- if (bannerImages.length > 0) {
- topBannerResolvedImages = await resolveImageUrls(bannerImages, {
- width: 2000,
- height: 750,
- fit: "cover",
- format: "webp",
- });
+ }
+
+ const bannerImages = Array.isArray(topBanner?.image)
+ ? topBanner.image
+ : topBanner?.image != null
+ ? [topBanner.image]
+ : [];
+ if (bannerImages.length > 0) {
+ const primary = extractCmsImageField(bannerImages[0]);
+ if (primary) {
+ // Responsives `` fürs erste Banner-Bild: original Seitenverhältnis,
+ // Mehr-Breiten-srcset + WebP/JPEG-Fallback, Focal-Point durchgereicht.
+ // AVIF bewusst weggelassen — Encoder ist server-seitig 5-10× langsamer als
+ // WebP, der Bandbreitengewinn rechtfertigt die Build-Zeit hier nicht.
+ // CSS `object-cover` (siehe TopBanner) kümmert sich um den Viewport-Crop;
+ // Focal landet zusätzlich als `object-position`, damit mobile (square) das Motiv trifft.
+ try {
+ topBannerResponsive = await ensureResponsiveImage(primary.url, {
+ widths: BANNER_WIDTHS,
+ fit: "contain",
+ formats: ["webp", "jpeg"],
+ quality: 78,
+ focal: primary.focal,
+ });
+ topBannerResolvedImages = [topBannerResponsive.fallback];
+ } catch {
+ // Fallback: klassisches Einzelbild
+ topBannerResolvedImages = await resolveImageUrls(bannerImages, {
+ width: 2000,
+ height: 750,
+ fit: "cover",
+ format: "webp",
+ });
+ }
+ if (primary.focal) {
+ topBannerFocalCss = `${(primary.focal.x * 100).toFixed(2)}% ${(primary.focal.y * 100).toFixed(2)}%`;
+ }
}
}
} catch {
@@ -676,6 +698,9 @@ const cmsFromCache = getCmsFromCache();
diff --git a/src/lib/block-types.ts b/src/lib/block-types.ts
index 09a049a..c228f8e 100644
--- a/src/lib/block-types.ts
+++ b/src/lib/block-types.ts
@@ -6,6 +6,7 @@
import type { BlockLayout } from "./block-layout";
import type { components } from "./cms-api.generated";
+import type { ResponsiveImage } from "./rusty-image-types";
/** Aufgelöster Block vom CMS (mit _type, _slug + typ-spezifische Felder). */
export type ResolvedBlock = {
@@ -104,6 +105,8 @@ export interface ImageBlockData {
};
/** Nach resolveContentImages: lokaler Pfad (public) zum transformierten Bild. */
resolvedImageSrc?: string;
+ /** Nach resolveContentImages: responsive ``-Quelle (multi-width × multi-format). */
+ resolvedResponsive?: ResponsiveImage;
caption?: string;
aspectRatio?: number;
layout?: BlockLayout;
@@ -118,6 +121,8 @@ export interface ImageGalleryImage {
file?: { url?: string };
/** Nach resolveContentImages: lokaler Pfad zum transformierten Bild (max. Breite, Ratio erhalten). */
resolvedSrc?: string;
+ /** Nach resolveContentImages: responsive ``-Quelle. */
+ resolvedResponsive?: ResponsiveImage;
}
/** Bildergalerie (_type: "image_gallery"). images: Array von img-Objekten (src, description). */
diff --git a/src/lib/blog-utils.ts b/src/lib/blog-utils.ts
index f6f3756..629f826 100644
--- a/src/lib/blog-utils.ts
+++ b/src/lib/blog-utils.ts
@@ -9,6 +9,7 @@ import {
} from "./cms";
import type { RowContentLayout } from "./block-types";
import type { CalendarItemData } from "./block-types";
+import type { ResponsiveImage } from "./rusty-image-types";
/** rusty-image nur dynamisch importieren, damit client-seitige Importe (z. B. PostOverviewBlock) nicht node:crypto in den Browser ziehen. */
/** Aus der Tag-API: Anzeigename plus optionales Icon und Farbe (CMS-Felder icon / color). */
@@ -138,6 +139,33 @@ export function getPostImageUrl(
: null;
}
+/**
+ * Wie `getPostImageUrl`, gibt zusätzlich focal + alt zurück (wenn im CMS gesetzt).
+ * Focal-Point steuert den Crop bei aspect-ratio-/cover-Transforms.
+ */
+export function getPostImageField(
+ postImage: PostEntry["postImage"],
+): { url: string; focal?: { x: number; y: number }; alt?: string } | null {
+ const url = getPostImageUrl(postImage);
+ if (!url) return null;
+ if (!postImage || typeof postImage === "string") return { url };
+ const obj = postImage as {
+ focal?: { x?: unknown; y?: unknown };
+ alt?: unknown;
+ };
+ const fx =
+ typeof obj.focal?.x === "number" && Number.isFinite(obj.focal.x)
+ ? Math.max(0, Math.min(1, obj.focal.x))
+ : undefined;
+ const fy =
+ typeof obj.focal?.y === "number" && Number.isFinite(obj.focal.y)
+ ? Math.max(0, Math.min(1, obj.focal.y))
+ : undefined;
+ const focal = fx != null && fy != null ? { x: fx, y: fy } : undefined;
+ const alt = typeof obj.alt === "string" ? obj.alt : undefined;
+ return { url, ...(focal ? { focal } : {}), ...(alt ? { alt } : {}) };
+}
+
/** Filtert Posts: behält nur solche, die mindestens einen der Tag-Slugs haben. */
export function filterPostsByTagSlugs(
posts: PostEntry[],
@@ -187,6 +215,7 @@ type PostWithEvent = PostEntry & {
isEvent?: boolean;
eventDate?: string;
_resolvedImageUrl?: string;
+ _resolvedResponsive?: ResponsiveImage;
};
export function buildPostSearchIndex(posts: PostEntry[]): PostSearchIndexEntry[] {
@@ -325,19 +354,17 @@ export async function resolvePostOverviewBlocks(
for (const post of posts) resolvePostTagsInPost(post, tagsMap);
}
for (const post of item.postsResolved as PostEntry[]) {
- const raw = getPostImageUrl(post.postImage);
- if (raw && import.meta.env.SSR) {
+ const field = getPostImageField(post.postImage);
+ if (field && import.meta.env.SSR) {
try {
- const { ensureTransformedImage } = await import("./rusty-image");
- const url = await ensureTransformedImage(raw, {
- width: 400,
- height: 267,
- fit: "cover",
- format: "webp",
- });
- (
- post as PostEntry & { _resolvedImageUrl?: string }
- )._resolvedImageUrl = url;
+ const { resolvePostCardResponsive } = await import("./server-image");
+ const responsive = await resolvePostCardResponsive(field);
+ const target = post as PostEntry & {
+ _resolvedImageUrl?: string;
+ _resolvedResponsive?: ResponsiveImage;
+ };
+ target._resolvedResponsive = responsive;
+ target._resolvedImageUrl = responsive.fallback;
} catch {
// Bild optional
}
diff --git a/src/lib/cms-api.generated.ts b/src/lib/cms-api.generated.ts
index 7fde6df..b54bba1 100644
--- a/src/lib/cms-api.generated.ts
+++ b/src/lib/cms-api.generated.ts
@@ -69,15 +69,15 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/api/collections/badge": {
+ "/api/collections/note": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
- /** Get schema definition for 'badge' */
- get: operations["getBadgeSchema"];
+ /** Get schema definition for 'note' */
+ get: operations["getNoteSchema"];
put?: never;
post?: never;
delete?: never;
@@ -86,656 +86,44 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/api/collections/calendar": {
+ "/api/content/note": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
- /** Get schema definition for 'calendar' */
- get: operations["getCalendarSchema"];
+ /** List 'note' entries */
+ get: operations["listNote"];
put?: never;
- post?: never;
+ /** Create a new 'note' entry */
+ post: operations["createNote"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
- "/api/collections/calendar_item": {
+ "/api/content/note/{slug}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
- /** Get schema definition for 'calendar_item' */
- get: operations["getCalendarItemSchema"];
- put?: never;
+ /** Get 'note' entry by slug */
+ get: operations["getNote"];
+ /** Update 'note' entry */
+ put: operations["updateNote"];
post?: never;
- delete?: never;
+ /** Delete 'note' entry */
+ delete: operations["deleteNote"];
options?: never;
head?: never;
patch?: never;
trace?: never;
};
- "/api/collections/campaign": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'campaign' */
- get: operations["getCampaignSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/campaigns": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'campaigns' */
- get: operations["getCampaignsSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/content_layout": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'content_layout' */
- get: operations["getContentLayoutSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/demo": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'demo' */
- get: operations["getDemoSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/footer": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'footer' */
- get: operations["getFooterSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/fullwidth_banner": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'fullwidth_banner' */
- get: operations["getFullwidthBannerSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/headline": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'headline' */
- get: operations["getHeadlineSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/html": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'html' */
- get: operations["getHtmlSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/iframe": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'iframe' */
- get: operations["getIframeSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/image": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'image' */
- get: operations["getImageSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/image_gallery": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'image_gallery' */
- get: operations["getImageGallerySchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/img": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'img' */
- get: operations["getImgSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/link": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'link' */
- get: operations["getLinkSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/link_list": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'link_list' */
- get: operations["getLinkListSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/list": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'list' */
- get: operations["getListSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/markdown": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'markdown' */
- get: operations["getMarkdownSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/navgroup": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'navgroup' */
- get: operations["getNavgroupSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/navigation": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'navigation' */
- get: operations["getNavigationSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/opnform": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'opnform' */
- get: operations["getOpnformSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/organisation": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'organisation' */
- get: operations["getOrganisationSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/organisations": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'organisations' */
- get: operations["getOrganisationsSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/page": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'page' */
- get: operations["getPageSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/page_config": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'page_config' */
- get: operations["getPageConfigSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/post": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'post' */
- get: operations["getPostSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/post_overview": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'post_overview' */
- get: operations["getPostOverviewSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/product": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'product' */
- get: operations["getProductSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/quote": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'quote' */
- get: operations["getQuoteSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/searchable_text": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'searchable_text' */
- get: operations["getSearchableTextSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/seo": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'seo' */
- get: operations["getSeoSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/tag": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'tag' */
- get: operations["getTagSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/text_fragment": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'text_fragment' */
- get: operations["getTextFragmentSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/top_banner": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'top_banner' */
- get: operations["getTopBannerSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/translation_bundle": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'translation_bundle' */
- get: operations["getTranslationBundleSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/collections/youtube_video": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get schema definition for 'youtube_video' */
- get: operations["getYoutubeVideoSchema"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/badge": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'badge' entries */
- get: operations["listBadge"];
- put?: never;
- /** Create a new 'badge' entry */
- post: operations["createBadge"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/badge/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'badge' entry by slug */
- get: operations["getBadge"];
- /** Update 'badge' entry */
- put: operations["updateBadge"];
- post?: never;
- /** Delete 'badge' entry */
- delete: operations["deleteBadge"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/badge/{slug}/referrers": {
+ "/api/content/note/{slug}/referrers": {
parameters: {
query?: never;
header?: never;
@@ -743,10 +131,10 @@ export interface paths {
cookie?: never;
};
/**
- * List referrers of 'badge' entry
+ * List referrers of 'note' entry
* @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
*/
- get: operations["getBadgeReferrers"];
+ get: operations["getNoteReferrers"];
put?: never;
post?: never;
delete?: never;
@@ -755,44 +143,7 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/api/content/calendar": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'calendar' entries */
- get: operations["listCalendar"];
- put?: never;
- /** Create a new 'calendar' entry */
- post: operations["createCalendar"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/calendar/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'calendar' entry by slug */
- get: operations["getCalendar"];
- /** Update 'calendar' entry */
- put: operations["updateCalendar"];
- post?: never;
- /** Delete 'calendar' entry */
- delete: operations["deleteCalendar"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/calendar/{slug}/referrers": {
+ "/api/environments": {
parameters: {
query?: never;
header?: never;
@@ -800,56 +151,58 @@ export interface paths {
cookie?: never;
};
/**
- * List referrers of 'calendar' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
+ * List content spaces
+ * @description Returns the active environment list. Empty when multi-environment mode is off (no `RUSTYCMS_ENVIRONMENTS`).
*/
- get: operations["getCalendarReferrers"];
+ get: operations["listEnvironments"];
put?: never;
- post?: never;
+ /**
+ * Create a new space
+ * @description Creates a new environment. Body accepts optional `locales` array — when omitted, the space inherits the global locale list; `[]` disables i18n for this space only.
+ */
+ post: operations["createEnvironment"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
- "/api/content/calendar_item": {
+ "/api/environments/{name}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
- /** List 'calendar_item' entries */
- get: operations["listCalendarItem"];
+ get?: never;
put?: never;
- /** Create a new 'calendar_item' entry */
- post: operations["createCalendarItem"];
+ post?: never;
+ /** Delete a space (including all content) */
+ delete: operations["deleteEnvironment"];
+ options?: never;
+ head?: never;
+ /** Rename a space */
+ patch: operations["renameEnvironment"];
+ trace?: never;
+ };
+ "/api/environments/{name}/duplicate": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Deep-copy a space */
+ post: operations["duplicateEnvironment"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
- "/api/content/calendar_item/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'calendar_item' entry by slug */
- get: operations["getCalendarItem"];
- /** Update 'calendar_item' entry */
- put: operations["updateCalendarItem"];
- post?: never;
- /** Delete 'calendar_item' entry */
- delete: operations["deleteCalendarItem"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/calendar_item/{slug}/referrers": {
+ "/api/environments/{name}/locales": {
parameters: {
query?: never;
header?: never;
@@ -857,11 +210,15 @@ export interface paths {
cookie?: never;
};
/**
- * List referrers of 'calendar_item' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
+ * Get a space's locale configuration
+ * @description Returns the active locale list (per-env override or global fallback), plus the on-disk locale folders for orphan detection ("Karteileichen").
*/
- get: operations["getCalendarItemReferrers"];
- put?: never;
+ get: operations["getEnvironmentLocales"];
+ /**
+ * Set or clear per-space locale override
+ * @description Body `{ locales: [..] }` sets an explicit override, `{ locales: null }` clears it (follow global). `[]` disables i18n for this space only. First array element becomes the default locale. Content in removed locales is kept on disk.
+ */
+ put: operations["putEnvironmentLocales"];
post?: never;
delete?: never;
options?: never;
@@ -869,44 +226,7 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/api/content/campaign": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'campaign' entries */
- get: operations["listCampaign"];
- put?: never;
- /** Create a new 'campaign' entry */
- post: operations["createCampaign"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/campaign/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'campaign' entry by slug */
- get: operations["getCampaign"];
- /** Update 'campaign' entry */
- put: operations["updateCampaign"];
- post?: never;
- /** Delete 'campaign' entry */
- delete: operations["deleteCampaign"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/campaign/{slug}/referrers": {
+ "/api/locales": {
parameters: {
query?: never;
header?: never;
@@ -914,10 +234,10 @@ export interface paths {
cookie?: never;
};
/**
- * List referrers of 'campaign' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
+ * Effective locale list for a space
+ * @description Resolves the active locale list for the environment passed via `_environment` (falls back to the default space / global list).
*/
- get: operations["getCampaignReferrers"];
+ get: operations["listLocales"];
put?: never;
post?: never;
delete?: never;
@@ -926,1881 +246,20 @@ export interface paths {
patch?: never;
trace?: never;
};
- "/api/content/campaigns": {
+ "/api/preview-tokens": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
- /** List 'campaigns' entries */
- get: operations["listCampaigns"];
+ get?: never;
put?: never;
- /** Create a new 'campaigns' entry */
- post: operations["createCampaigns"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/campaigns/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'campaigns' entry by slug */
- get: operations["getCampaigns"];
- /** Update 'campaigns' entry */
- put: operations["updateCampaigns"];
- post?: never;
- /** Delete 'campaigns' entry */
- delete: operations["deleteCampaigns"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/campaigns/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
/**
- * List referrers of 'campaigns' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
+ * Mint a signed preview token
+ * @description Returns an HMAC-signed token that, when passed as `?preview=` on a GET /api/content/... request, unlocks draft visibility for the targeted entry. Requires content-write authorization. RUSTYCMS_SESSION_SECRET must be configured.
*/
- get: operations["getCampaignsReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/content_layout": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'content_layout' entries */
- get: operations["listContentLayout"];
- put?: never;
- /** Create a new 'content_layout' entry */
- post: operations["createContentLayout"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/content_layout/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'content_layout' entry by slug */
- get: operations["getContentLayout"];
- /** Update 'content_layout' entry */
- put: operations["updateContentLayout"];
- post?: never;
- /** Delete 'content_layout' entry */
- delete: operations["deleteContentLayout"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/content_layout/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'content_layout' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getContentLayoutReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/demo": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'demo' entries */
- get: operations["listDemo"];
- put?: never;
- /** Create a new 'demo' entry */
- post: operations["createDemo"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/demo/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'demo' entry by slug */
- get: operations["getDemo"];
- /** Update 'demo' entry */
- put: operations["updateDemo"];
- post?: never;
- /** Delete 'demo' entry */
- delete: operations["deleteDemo"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/demo/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'demo' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getDemoReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/footer": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'footer' entries */
- get: operations["listFooter"];
- put?: never;
- /** Create a new 'footer' entry */
- post: operations["createFooter"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/footer/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'footer' entry by slug */
- get: operations["getFooter"];
- /** Update 'footer' entry */
- put: operations["updateFooter"];
- post?: never;
- /** Delete 'footer' entry */
- delete: operations["deleteFooter"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/footer/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'footer' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getFooterReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/fullwidth_banner": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'fullwidth_banner' entries */
- get: operations["listFullwidthBanner"];
- put?: never;
- /** Create a new 'fullwidth_banner' entry */
- post: operations["createFullwidthBanner"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/fullwidth_banner/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'fullwidth_banner' entry by slug */
- get: operations["getFullwidthBanner"];
- /** Update 'fullwidth_banner' entry */
- put: operations["updateFullwidthBanner"];
- post?: never;
- /** Delete 'fullwidth_banner' entry */
- delete: operations["deleteFullwidthBanner"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/fullwidth_banner/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'fullwidth_banner' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getFullwidthBannerReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/headline": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'headline' entries */
- get: operations["listHeadline"];
- put?: never;
- /** Create a new 'headline' entry */
- post: operations["createHeadline"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/headline/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'headline' entry by slug */
- get: operations["getHeadline"];
- /** Update 'headline' entry */
- put: operations["updateHeadline"];
- post?: never;
- /** Delete 'headline' entry */
- delete: operations["deleteHeadline"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/headline/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'headline' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getHeadlineReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/html": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'html' entries */
- get: operations["listHtml"];
- put?: never;
- /** Create a new 'html' entry */
- post: operations["createHtml"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/html/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'html' entry by slug */
- get: operations["getHtml"];
- /** Update 'html' entry */
- put: operations["updateHtml"];
- post?: never;
- /** Delete 'html' entry */
- delete: operations["deleteHtml"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/html/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'html' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getHtmlReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/iframe": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'iframe' entries */
- get: operations["listIframe"];
- put?: never;
- /** Create a new 'iframe' entry */
- post: operations["createIframe"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/iframe/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'iframe' entry by slug */
- get: operations["getIframe"];
- /** Update 'iframe' entry */
- put: operations["updateIframe"];
- post?: never;
- /** Delete 'iframe' entry */
- delete: operations["deleteIframe"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/iframe/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'iframe' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getIframeReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'image' entries */
- get: operations["listImage"];
- put?: never;
- /** Create a new 'image' entry */
- post: operations["createImage"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'image' entry by slug */
- get: operations["getImage"];
- /** Update 'image' entry */
- put: operations["updateImage"];
- post?: never;
- /** Delete 'image' entry */
- delete: operations["deleteImage"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'image' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getImageReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image_gallery": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'image_gallery' entries */
- get: operations["listImageGallery"];
- put?: never;
- /** Create a new 'image_gallery' entry */
- post: operations["createImageGallery"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image_gallery/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'image_gallery' entry by slug */
- get: operations["getImageGallery"];
- /** Update 'image_gallery' entry */
- put: operations["updateImageGallery"];
- post?: never;
- /** Delete 'image_gallery' entry */
- delete: operations["deleteImageGallery"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/image_gallery/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'image_gallery' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getImageGalleryReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/img": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'img' entries */
- get: operations["listImg"];
- put?: never;
- /** Create a new 'img' entry */
- post: operations["createImg"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/img/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'img' entry by slug */
- get: operations["getImg"];
- /** Update 'img' entry */
- put: operations["updateImg"];
- post?: never;
- /** Delete 'img' entry */
- delete: operations["deleteImg"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/img/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'img' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getImgReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'link' entries */
- get: operations["listLink"];
- put?: never;
- /** Create a new 'link' entry */
- post: operations["createLink"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'link' entry by slug */
- get: operations["getLink"];
- /** Update 'link' entry */
- put: operations["updateLink"];
- post?: never;
- /** Delete 'link' entry */
- delete: operations["deleteLink"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'link' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getLinkReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link_list": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'link_list' entries */
- get: operations["listLinkList"];
- put?: never;
- /** Create a new 'link_list' entry */
- post: operations["createLinkList"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link_list/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'link_list' entry by slug */
- get: operations["getLinkList"];
- /** Update 'link_list' entry */
- put: operations["updateLinkList"];
- post?: never;
- /** Delete 'link_list' entry */
- delete: operations["deleteLinkList"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/link_list/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'link_list' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getLinkListReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/list": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'list' entries */
- get: operations["listList"];
- put?: never;
- /** Create a new 'list' entry */
- post: operations["createList"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/list/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'list' entry by slug */
- get: operations["getList"];
- /** Update 'list' entry */
- put: operations["updateList"];
- post?: never;
- /** Delete 'list' entry */
- delete: operations["deleteList"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/list/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'list' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getListReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/markdown": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'markdown' entries */
- get: operations["listMarkdown"];
- put?: never;
- /** Create a new 'markdown' entry */
- post: operations["createMarkdown"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/markdown/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'markdown' entry by slug */
- get: operations["getMarkdown"];
- /** Update 'markdown' entry */
- put: operations["updateMarkdown"];
- post?: never;
- /** Delete 'markdown' entry */
- delete: operations["deleteMarkdown"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/markdown/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'markdown' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getMarkdownReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navgroup": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'navgroup' entries */
- get: operations["listNavgroup"];
- put?: never;
- /** Create a new 'navgroup' entry */
- post: operations["createNavgroup"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navgroup/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'navgroup' entry by slug */
- get: operations["getNavgroup"];
- /** Update 'navgroup' entry */
- put: operations["updateNavgroup"];
- post?: never;
- /** Delete 'navgroup' entry */
- delete: operations["deleteNavgroup"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navgroup/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'navgroup' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getNavgroupReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navigation": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'navigation' entries */
- get: operations["listNavigation"];
- put?: never;
- /** Create a new 'navigation' entry */
- post: operations["createNavigation"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navigation/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'navigation' entry by slug */
- get: operations["getNavigation"];
- /** Update 'navigation' entry */
- put: operations["updateNavigation"];
- post?: never;
- /** Delete 'navigation' entry */
- delete: operations["deleteNavigation"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/navigation/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'navigation' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getNavigationReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/opnform": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'opnform' entries */
- get: operations["listOpnform"];
- put?: never;
- /** Create a new 'opnform' entry */
- post: operations["createOpnform"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/opnform/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'opnform' entry by slug */
- get: operations["getOpnform"];
- /** Update 'opnform' entry */
- put: operations["updateOpnform"];
- post?: never;
- /** Delete 'opnform' entry */
- delete: operations["deleteOpnform"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/opnform/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'opnform' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getOpnformReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisation": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'organisation' entries */
- get: operations["listOrganisation"];
- put?: never;
- /** Create a new 'organisation' entry */
- post: operations["createOrganisation"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisation/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'organisation' entry by slug */
- get: operations["getOrganisation"];
- /** Update 'organisation' entry */
- put: operations["updateOrganisation"];
- post?: never;
- /** Delete 'organisation' entry */
- delete: operations["deleteOrganisation"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisation/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'organisation' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getOrganisationReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisations": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'organisations' entries */
- get: operations["listOrganisations"];
- put?: never;
- /** Create a new 'organisations' entry */
- post: operations["createOrganisations"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisations/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'organisations' entry by slug */
- get: operations["getOrganisations"];
- /** Update 'organisations' entry */
- put: operations["updateOrganisations"];
- post?: never;
- /** Delete 'organisations' entry */
- delete: operations["deleteOrganisations"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/organisations/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'organisations' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getOrganisationsReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'page' entries */
- get: operations["listPage"];
- put?: never;
- /** Create a new 'page' entry */
- post: operations["createPage"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'page' entry by slug */
- get: operations["getPage"];
- /** Update 'page' entry */
- put: operations["updatePage"];
- post?: never;
- /** Delete 'page' entry */
- delete: operations["deletePage"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'page' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getPageReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page_config": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'page_config' entries */
- get: operations["listPageConfig"];
- put?: never;
- /** Create a new 'page_config' entry */
- post: operations["createPageConfig"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page_config/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'page_config' entry by slug */
- get: operations["getPageConfig"];
- /** Update 'page_config' entry */
- put: operations["updatePageConfig"];
- post?: never;
- /** Delete 'page_config' entry */
- delete: operations["deletePageConfig"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/page_config/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'page_config' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getPageConfigReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'post' entries */
- get: operations["listPost"];
- put?: never;
- /** Create a new 'post' entry */
- post: operations["createPost"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'post' entry by slug */
- get: operations["getPost"];
- /** Update 'post' entry */
- put: operations["updatePost"];
- post?: never;
- /** Delete 'post' entry */
- delete: operations["deletePost"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'post' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getPostReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post_overview": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'post_overview' entries */
- get: operations["listPostOverview"];
- put?: never;
- /** Create a new 'post_overview' entry */
- post: operations["createPostOverview"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post_overview/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'post_overview' entry by slug */
- get: operations["getPostOverview"];
- /** Update 'post_overview' entry */
- put: operations["updatePostOverview"];
- post?: never;
- /** Delete 'post_overview' entry */
- delete: operations["deletePostOverview"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/post_overview/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'post_overview' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getPostOverviewReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/product": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'product' entries */
- get: operations["listProduct"];
- put?: never;
- /** Create a new 'product' entry */
- post: operations["createProduct"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/product/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'product' entry by slug */
- get: operations["getProduct"];
- /** Update 'product' entry */
- put: operations["updateProduct"];
- post?: never;
- /** Delete 'product' entry */
- delete: operations["deleteProduct"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/product/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'product' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getProductReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/quote": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'quote' entries */
- get: operations["listQuote"];
- put?: never;
- /** Create a new 'quote' entry */
- post: operations["createQuote"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/quote/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'quote' entry by slug */
- get: operations["getQuote"];
- /** Update 'quote' entry */
- put: operations["updateQuote"];
- post?: never;
- /** Delete 'quote' entry */
- delete: operations["deleteQuote"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/quote/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'quote' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getQuoteReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/searchable_text": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'searchable_text' entries */
- get: operations["listSearchableText"];
- put?: never;
- /** Create a new 'searchable_text' entry */
- post: operations["createSearchableText"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/searchable_text/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'searchable_text' entry by slug */
- get: operations["getSearchableText"];
- /** Update 'searchable_text' entry */
- put: operations["updateSearchableText"];
- post?: never;
- /** Delete 'searchable_text' entry */
- delete: operations["deleteSearchableText"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/searchable_text/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'searchable_text' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getSearchableTextReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/seo": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'seo' entries */
- get: operations["listSeo"];
- put?: never;
- /** Create a new 'seo' entry */
- post: operations["createSeo"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/seo/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'seo' entry by slug */
- get: operations["getSeo"];
- /** Update 'seo' entry */
- put: operations["updateSeo"];
- post?: never;
- /** Delete 'seo' entry */
- delete: operations["deleteSeo"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/seo/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'seo' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getSeoReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/tag": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'tag' entries */
- get: operations["listTag"];
- put?: never;
- /** Create a new 'tag' entry */
- post: operations["createTag"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/tag/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'tag' entry by slug */
- get: operations["getTag"];
- /** Update 'tag' entry */
- put: operations["updateTag"];
- post?: never;
- /** Delete 'tag' entry */
- delete: operations["deleteTag"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/tag/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'tag' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getTagReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/text_fragment": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'text_fragment' entries */
- get: operations["listTextFragment"];
- put?: never;
- /** Create a new 'text_fragment' entry */
- post: operations["createTextFragment"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/text_fragment/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'text_fragment' entry by slug */
- get: operations["getTextFragment"];
- /** Update 'text_fragment' entry */
- put: operations["updateTextFragment"];
- post?: never;
- /** Delete 'text_fragment' entry */
- delete: operations["deleteTextFragment"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/text_fragment/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'text_fragment' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getTextFragmentReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/top_banner": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'top_banner' entries */
- get: operations["listTopBanner"];
- put?: never;
- /** Create a new 'top_banner' entry */
- post: operations["createTopBanner"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/top_banner/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'top_banner' entry by slug */
- get: operations["getTopBanner"];
- /** Update 'top_banner' entry */
- put: operations["updateTopBanner"];
- post?: never;
- /** Delete 'top_banner' entry */
- delete: operations["deleteTopBanner"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/top_banner/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'top_banner' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getTopBannerReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/translation_bundle": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'translation_bundle' entries */
- get: operations["listTranslationBundle"];
- put?: never;
- /** Create a new 'translation_bundle' entry */
- post: operations["createTranslationBundle"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/translation_bundle/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'translation_bundle' entry by slug */
- get: operations["getTranslationBundle"];
- /** Update 'translation_bundle' entry */
- put: operations["updateTranslationBundle"];
- post?: never;
- /** Delete 'translation_bundle' entry */
- delete: operations["deleteTranslationBundle"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/translation_bundle/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'translation_bundle' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getTranslationBundleReferrers"];
- put?: never;
- post?: never;
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/youtube_video": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** List 'youtube_video' entries */
- get: operations["listYoutubeVideo"];
- put?: never;
- /** Create a new 'youtube_video' entry */
- post: operations["createYoutubeVideo"];
- delete?: never;
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/youtube_video/{slug}": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /** Get 'youtube_video' entry by slug */
- get: operations["getYoutubeVideo"];
- /** Update 'youtube_video' entry */
- put: operations["updateYoutubeVideo"];
- post?: never;
- /** Delete 'youtube_video' entry */
- delete: operations["deleteYoutubeVideo"];
- options?: never;
- head?: never;
- patch?: never;
- trace?: never;
- };
- "/api/content/youtube_video/{slug}/referrers": {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- /**
- * List referrers of 'youtube_video' entry
- * @description Returns all entries that reference this entry (reverse index). Empty when not using referrer index (e.g. with RUSTYCMS_ENVIRONMENTS).
- */
- get: operations["getYoutubeVideoReferrers"];
- put?: never;
- post?: never;
+ post: operations["mintPreviewToken"];
delete?: never;
options?: never;
head?: never;
@@ -2815,8 +274,8 @@ export interface paths {
cookie?: never;
};
/**
- * Transform image from external URL
- * @description Fetches an image from the given URL and returns it resized/cropped. Supports JPEG, PNG, WebP, AVIF output.
+ * Transform an image
+ * @description Fetches an image and returns it resized/cropped/reformatted. Source can be an absolute URL (allowlist-gated) or a relative /api/assets/... path (served directly from the asset store, no HTTP roundtrip). EXIF orientation is applied before any geometry op. Supports JPEG, PNG, WebP, AVIF.
*/
get: operations["transformImage"];
put?: never;
@@ -2827,6 +286,66 @@ export interface paths {
patch?: never;
trace?: never;
};
+ "/api/transform/lqip": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Decode blurhash to tiny JPEG placeholder
+ * @description Returns a small JPEG rendered from a blurhash string. Immutable cache headers — hashes are content-addressed.
+ */
+ get: operations["transformLqip"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/transform/metadata": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Image metadata + blurhash
+ * @description Returns width, height, aspect ratio, alpha flag, dominant color and blurhash for an image. Same URL resolution rules as /api/transform (asset-shortcut + allowlist).
+ */
+ get: operations["transformMetadata"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/api/transform/srcset": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Precomputed srcset URLs (no image fetched)
+ * @description Composes ready-to-use sources + fallback URL for each (format × width). The source image is not fetched — this endpoint just builds URLs.
+ */
+ get: operations["transformSrcset"];
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
}
export type webhooks = Record;
export interface components {
@@ -2841,2581 +360,34 @@ export interface components {
/** @description URL path to serve the asset (e.g. /api/assets/hero.jpg) */
url?: string;
};
- badge: {
+ EnvironmentLocales: {
+ /** @description First entry in `locales`, or null when i18n is off */
+ default?: string | null;
+ /** @description Global fallback list for UI diffing / reset */
+ global?: string[];
+ /** @description Active locale list (override if present, otherwise global fallback) */
+ locales?: string[];
+ /** @description Locale sub-directories present on disk. Values NOT in `locales` are orphans ("Karteileichen"). */
+ on_disk?: string[];
+ /** @description True when the space has its own `.rustycms.json5` override */
+ override?: boolean;
+ };
+ note: {
/** @description Entry identifier (filename) */
readonly _slug?: string;
- /** @description Optional color hint (e.g. green, #4caf50, CSS class name) */
- color?: string;
- /** @description Display label shown in UI (e.g. Gründungsmitglied) */
- label: string;
- /** @description Internal key (e.g. gruendungsmitglied) */
- name: string;
- };
- badge_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Optional color hint (e.g. green, #4caf50, CSS class name) */
- color?: string;
- /** @description Display label shown in UI (e.g. Gründungsmitglied) */
- label: string;
- /** @description Internal key (e.g. gruendungsmitglied) */
- name: string;
- };
- calendar: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Include entries from post (optional)
- * @default false
- */
- fromPost: boolean;
- /** @description Calendar entries (references to calendar_item) */
- items?: string[];
- };
- calendar_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Include entries from post (optional)
- * @default false
- */
- fromPost: boolean;
- /** @description Calendar entries (references to calendar_item) */
- items?: string[];
- };
- calendar_item: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Event description (optional) */
- description?: string;
- /** @description Optional link (e.g. registration or details page) */
- link?: string;
- /**
- * Format: date-time
- * @description Event date/time
- */
- terminZeit: string;
- /** @description Event title */
+ /** @description Note content as markdown */
+ body?: string;
+ /** @description Title of the note */
title: string;
};
- calendar_item_input: {
+ note_input: {
/** @description URL slug (used as filename) */
_slug: string;
- /** @description Event description (optional) */
- description?: string;
- /** @description Optional link (e.g. registration or details page) */
- link?: string;
- /**
- * Format: date-time
- * @description Event date/time
- */
- terminZeit: string;
- /** @description Event title */
+ /** @description Note content as markdown */
+ body?: string;
+ /** @description Title of the note */
title: string;
};
- campaign: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Optional CSS */
- css?: string;
- /** @description HTML content (optional) */
- html?: string;
- /**
- * @description Position relative to selector
- * @default beforeend
- * @enum {string}
- */
- insertHtml: "afterbegin" | "beforeend" | "afterend" | "beforebegin" | "replace";
- /** @description Optional JavaScript */
- javascript?: string;
- /** @description Media/images (optional) */
- medias?: string[];
- /** @description CSS selector where content is inserted */
- selector: string;
- /**
- * Format: date-time
- * @description Campaign end time (optional)
- */
- timeUntil?: string;
- /** @description URL pattern (e.g. regex) where campaign applies */
- urlPattern: string;
- };
- campaign_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Optional CSS */
- css?: string;
- /** @description HTML content (optional) */
- html?: string;
- /**
- * @description Position relative to selector
- * @default beforeend
- * @enum {string}
- */
- insertHtml: "afterbegin" | "beforeend" | "afterend" | "beforebegin" | "replace";
- /** @description Optional JavaScript */
- javascript?: string;
- /** @description Media/images (optional) */
- medias?: string[];
- /** @description CSS selector where content is inserted */
- selector: string;
- /**
- * Format: date-time
- * @description Campaign end time (optional)
- */
- timeUntil?: string;
- /** @description URL pattern (e.g. regex) where campaign applies */
- urlPattern: string;
- };
- campaigns: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Campaign list (optional) */
- campaigns?: string[];
- /**
- * @description Campaigns enabled
- * @default true
- */
- enable: boolean;
- /** @description Unique ID (e.g. campaigns-global) */
- id: string;
- };
- campaigns_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Campaign list (optional) */
- campaigns?: string[];
- /**
- * @description Campaigns enabled
- * @default true
- */
- enable: boolean;
- /** @description Unique ID (e.g. campaigns-global) */
- id: string;
- };
- content_layout: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- };
- content_layout_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- };
- demo: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description html – HTML content */
- bodyHtml?: string;
- /** @description markdown – Markdown content */
- bodyMarkdown?: string;
- /** @description richtext – rich text editor */
- bodyRichtext?: string;
- /** @description textOrRef – inline text or file:path to load from file */
- bodyTextOrRef?: string;
- /** @description number – floating point */
- count?: number;
- /** @description string + widget: code, codeLanguage: css – code field with syntax highlighting and copy */
- css?: string;
- /** @description boolean – checkbox, true/false */
- isActive?: boolean;
- /** @description array – items type string (list of strings) */
- labels?: string[];
- /** @description object – image asset with src and alt text */
- mainImage?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description object – fixed sub-fields (key, value) */
- meta?: {
- key?: string;
- value?: string;
- };
- /**
- * Format: date-time
- * @description datetime – ISO 8601 date-time
- */
- publishedAt?: string;
- /** @description integer – whole number */
- quantity?: number;
- /** @description referenceOrInline – slug ref or inline object (collection must exist) */
- relatedPage?: string | {
- /** @description Page headline */
- headline: string;
- /** @description Icon identifier (optional) */
- icon?: string;
- /** @description Display name in navigation */
- linkName: string;
- /** @description Internal page name */
- name: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description URL slug */
- slug: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Hero banner at the top */
- topFullwidthBanner?: string;
- };
- /** @description array – items type reference (slugs to page collection) */
- relatedPages?: string[];
- /** @description array – items type number */
- scores?: number[];
- /**
- * @description string + enum – single-value dropdown (Select)
- * @enum {string}
- */
- singleSelect?: "A" | "B" | "C";
- /** @description string – single line, optional */
- summary?: string;
- /**
- * @description multiSelect + enum – checkboxes, value is string[]
- * @enum {string}
- */
- tags?: "news" | "tutorial" | "announcement";
- /** @description string – single line (required) */
- title: string;
- };
- demo_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description html – HTML content */
- bodyHtml?: string;
- /** @description markdown – Markdown content */
- bodyMarkdown?: string;
- /** @description richtext – rich text editor */
- bodyRichtext?: string;
- /** @description textOrRef – inline text or file:path to load from file */
- bodyTextOrRef?: string;
- /** @description number – floating point */
- count?: number;
- /** @description string + widget: code, codeLanguage: css – code field with syntax highlighting and copy */
- css?: string;
- /** @description boolean – checkbox, true/false */
- isActive?: boolean;
- /** @description array – items type string (list of strings) */
- labels?: string[];
- /** @description object – image asset with src and alt text */
- mainImage?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description object – fixed sub-fields (key, value) */
- meta?: {
- key?: string;
- value?: string;
- };
- /**
- * Format: date-time
- * @description datetime – ISO 8601 date-time
- */
- publishedAt?: string;
- /** @description integer – whole number */
- quantity?: number;
- /** @description referenceOrInline – slug ref or inline object (collection must exist) */
- relatedPage?: string | {
- /** @description Page headline */
- headline: string;
- /** @description Icon identifier (optional) */
- icon?: string;
- /** @description Display name in navigation */
- linkName: string;
- /** @description Internal page name */
- name: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description URL slug */
- slug: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Hero banner at the top */
- topFullwidthBanner?: string;
- };
- /** @description array – items type reference (slugs to page collection) */
- relatedPages?: string[];
- /** @description array – items type number */
- scores?: number[];
- /**
- * @description string + enum – single-value dropdown (Select)
- * @enum {string}
- */
- singleSelect?: "A" | "B" | "C";
- /** @description string – single line, optional */
- summary?: string;
- /**
- * @description multiSelect + enum – checkboxes, value is string[]
- * @enum {string}
- */
- tags?: "news" | "tutorial" | "announcement";
- /** @description string – single line (required) */
- title: string;
- };
- footer: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Unique footer ID (e.g. footer-main) */
- id: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- };
- footer_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Unique footer ID (e.g. footer-main) */
- id: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- };
- fullwidth_banner: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Banner headline */
- headline?: string;
- /** @description Banner image (optional) */
- image?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Internal name */
- name: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Banner body text (optional) */
- text?: string;
- /**
- * @description Color variant
- * @default light
- * @enum {string}
- */
- variant: "dark" | "light";
- };
- fullwidth_banner_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Banner headline */
- headline?: string;
- /** @description Banner image (optional) */
- image?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Internal name */
- name: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Banner body text (optional) */
- text?: string;
- /**
- * @description Color variant
- * @default light
- * @enum {string}
- */
- variant: "dark" | "light";
- };
- headline: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Text alignment
- * @default left
- * @enum {string}
- */
- align: "left" | "center" | "right";
- /** @description Internal key (optional) */
- internal?: string;
- /** @description Column width (grid) */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /**
- * @description HTML tag (h1–h6). Default: h2
- * @default h2
- * @enum {string}
- */
- tag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
- /** @description Headline text */
- text: string;
- };
- headline_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Text alignment
- * @default left
- * @enum {string}
- */
- align: "left" | "center" | "right";
- /** @description Internal key (optional) */
- internal?: string;
- /** @description Column width (grid) */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /**
- * @description HTML tag (h1–h6). Default: h2
- * @default h2
- * @enum {string}
- */
- tag: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
- /** @description Headline text */
- text: string;
- };
- html: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description HTML content (safely embedded) */
- html: string;
- /** @description Unique component ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- };
- html_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description HTML content (safely embedded) */
- html: string;
- /** @description Unique component ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- };
- iframe: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Description/content for iframe */
- content: string;
- /** @description Iframe URL or embed code */
- iframe: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal component name */
- name: string;
- /** @description Optional overlay image */
- overlayImage?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- };
- iframe_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Description/content for iframe */
- content: string;
- /** @description Iframe URL or embed code */
- iframe: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal component name */
- name: string;
- /** @description Optional overlay image */
- overlayImage?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- };
- image: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Aspect ratio
- * @default 4:3
- * @enum {string}
- */
- aspectRatio: "1:1" | "4:3" | "3:2" | "16:9" | "21:9" | "2:3" | "3:4";
- /** @description Image caption */
- caption?: string;
- /** @description Image asset */
- img: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Column width (grid) */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Max width in px */
- maxWidth?: number;
- /** @description Internal component name */
- name: string;
- };
- image_gallery: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Gallery description (optional) */
- description?: string;
- /** @description Bilder (Asset-URL + optionale Bildunterschrift) */
- images: {
- /** @description Bildunterschrift / Alt-Text (optional) */
- description?: string;
- /** @description Asset URL */
- src: string;
- }[];
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal gallery name */
- name: string;
- };
- image_gallery_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Gallery description (optional) */
- description?: string;
- /** @description Bilder (Asset-URL + optionale Bildunterschrift) */
- images: {
- /** @description Bildunterschrift / Alt-Text (optional) */
- description?: string;
- /** @description Asset URL */
- src: string;
- }[];
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal gallery name */
- name: string;
- };
- image_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Aspect ratio
- * @default 4:3
- * @enum {string}
- */
- aspectRatio: "1:1" | "4:3" | "3:2" | "16:9" | "21:9" | "2:3" | "3:4";
- /** @description Image caption */
- caption?: string;
- /** @description Image asset */
- img: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Column width (grid) */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Max width in px */
- maxWidth?: number;
- /** @description Internal component name */
- name: string;
- };
- img: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Alt text / description for accessibility */
- description?: string;
- /** @description Image URL (e.g. /api/assets/…). Use widget for picker. */
- src: string;
- };
- img_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Alt text / description for accessibility */
- description?: string;
- /** @description Image URL (e.g. /api/assets/…). Use widget for picker. */
- src: string;
- };
- link: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Alt text (e.g. for icon). Not used in app. */
- alt?: string;
- /** @description Author (e.g. for sources). Not used in app. */
- author?: string;
- /** @description Color (e.g. for buttons). Not used in app. */
- color?: string;
- /** @description Date (e.g. publication). Not used in app. */
- date?: string;
- /** @description Optional description. Not used in app. */
- description?: string;
- /**
- * @description External link. Not used in app.
- * @default false
- */
- external: boolean;
- /** @description Icon identifier (e.g. Iconify). Used for social links; fallback 'mdi:link'. */
- icon?: string;
- /** @description Internal key. Not used in app. */
- internal?: string;
- /** @description Display name/label. Used in navigation and LinkListBlock. */
- linkName: string;
- /** @description Internal link name. Fallback for linkName (e.g. in layout). */
- name?: string;
- /**
- * @description Open in new tab (LinkListBlock: target=_blank, rel=noopener noreferrer).
- * @default false
- */
- newTab: boolean;
- /**
- * @description Show text. Not used in app.
- * @default true
- */
- showText: boolean;
- /** @description Source. Not used in app. */
- source?: string;
- /** @description Target URL (href). Used everywhere: navigation, social, LinkListBlock. */
- url: string;
- };
- link_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Alt text (e.g. for icon). Not used in app. */
- alt?: string;
- /** @description Author (e.g. for sources). Not used in app. */
- author?: string;
- /** @description Color (e.g. for buttons). Not used in app. */
- color?: string;
- /** @description Date (e.g. publication). Not used in app. */
- date?: string;
- /** @description Optional description. Not used in app. */
- description?: string;
- /**
- * @description External link. Not used in app.
- * @default false
- */
- external: boolean;
- /** @description Icon identifier (e.g. Iconify). Used for social links; fallback 'mdi:link'. */
- icon?: string;
- /** @description Internal key. Not used in app. */
- internal?: string;
- /** @description Display name/label. Used in navigation and LinkListBlock. */
- linkName: string;
- /** @description Internal link name. Fallback for linkName (e.g. in layout). */
- name?: string;
- /**
- * @description Open in new tab (LinkListBlock: target=_blank, rel=noopener noreferrer).
- * @default false
- */
- newTab: boolean;
- /**
- * @description Show text. Not used in app.
- * @default true
- */
- showText: boolean;
- /** @description Source. Not used in app. */
- source?: string;
- /** @description Target URL (href). Used everywhere: navigation, social, LinkListBlock. */
- url: string;
- };
- link_list: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Link list headline */
- headline: string;
- /** @description Links (references to link) */
- links: string[];
- };
- link_list_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Link list headline */
- headline: string;
- /** @description Links (references to link) */
- links: string[];
- };
- list: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Internal key (optional) */
- internal?: string;
- /** @description List entries */
- item: string[];
- };
- list_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Internal key (optional) */
- internal?: string;
- /** @description List entries */
- item: string[];
- };
- markdown: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Text alignment
- * @default left
- * @enum {string}
- */
- alignment: "left" | "center" | "right";
- /** @description Markdown/body: inline text or file reference (e.g. file:slug.content.md) */
- content?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal component name */
- name: string;
- };
- markdown_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Text alignment
- * @default left
- * @enum {string}
- */
- alignment: "left" | "center" | "right";
- /** @description Markdown/body: inline text or file reference (e.g. file:slug.content.md) */
- content?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Internal component name */
- name: string;
- };
- navgroup: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Display label of the group */
- label: string;
- /** @description Sub-links shown in the dropdown */
- links: string[];
- /** @description Optional URL for the group label itself */
- url?: string;
- };
- navgroup_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Display label of the group */
- label: string;
- /** @description Sub-links shown in the dropdown */
- links: string[];
- /** @description Optional URL for the group label itself */
- url?: string;
- };
- navigation: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Internal key (e.g. navigation-header, navigation-footer) */
- internal: string;
- /** @description Navigation entries (references to link, page or post) */
- links: string[];
- /** @description Display name of navigation */
- name: string;
- };
- navigation_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Internal key (e.g. navigation-header, navigation-footer) */
- internal: string;
- /** @description Navigation entries (references to link, page or post) */
- links: string[];
- /** @description Display name of navigation */
- name: string;
- };
- opnform: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description OpnForm instance origin without trailing slash (default: https://opnform.pm86.de) */
- baseUrl?: string;
- /** @description Form slug from OpnForm URL path, e.g. contact-form-ojxxgb */
- formId: string;
- /** @description Unique component ID (internal) */
- id: string;
- /** @description Accessible title for the iframe */
- iframeTitle?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- };
- opnform_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description OpnForm instance origin without trailing slash (default: https://opnform.pm86.de) */
- baseUrl?: string;
- /** @description Form slug from OpnForm URL path, e.g. contact-form-ojxxgb */
- formId: string;
- /** @description Unique component ID (internal) */
- id: string;
- /** @description Accessible title for the iframe */
- iframeTitle?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- };
- organisation: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Badge label for this organisation (exactly one) */
- badge?: string;
- /** @description Short description of the organisation (Markdown) */
- description?: string;
- /** @description Optional link (website, contact, etc.) */
- link?: string;
- /** @description Optional logo image */
- logo?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Organisation name */
- name: string;
- };
- organisation_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Badge label for this organisation (exactly one) */
- badge?: string;
- /** @description Short description of the organisation (Markdown) */
- description?: string;
- /** @description Optional link (website, contact, etc.) */
- link?: string;
- /** @description Optional logo image */
- logo?: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Organisation name */
- name: string;
- };
- organisations: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Optional CTA link in the dashed card (label from link.linkName) */
- addOrganisationLink?: string;
- /** @description Optional markdown body for the dashed CTA card (no link here; use addOrganisationLink) */
- addOrganisationMarkdown?: string;
- /** @description Optional section title shown above the organisation list */
- addOrganisationTitle?: string;
- /** @description Restrict which badges may be assigned to organisations in this block */
- allowedBadges?: string[];
- /** @description Optional intro text (Markdown) */
- description?: string;
- /** @description Optional block headline */
- headline?: string;
- /** @description List of organisations */
- organisations?: string[];
- /**
- * @description Darstellung: default (große Karten) oder compact (kompaktere Zeilenkarten)
- * @default default
- * @enum {string}
- */
- presentation: "default" | "compact";
- };
- organisations_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Optional CTA link in the dashed card (label from link.linkName) */
- addOrganisationLink?: string;
- /** @description Optional markdown body for the dashed CTA card (no link here; use addOrganisationLink) */
- addOrganisationMarkdown?: string;
- /** @description Optional section title shown above the organisation list */
- addOrganisationTitle?: string;
- /** @description Restrict which badges may be assigned to organisations in this block */
- allowedBadges?: string[];
- /** @description Optional intro text (Markdown) */
- description?: string;
- /** @description Optional block headline */
- headline?: string;
- /** @description List of organisations */
- organisations?: string[];
- /**
- * @description Darstellung: default (große Karten) oder compact (kompaktere Zeilenkarten)
- * @default default
- * @enum {string}
- */
- presentation: "default" | "compact";
- };
- page: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Page headline */
- headline: string;
- /** @description Icon identifier (optional) */
- icon?: string;
- /** @description Display name in navigation */
- linkName: string;
- /** @description Internal page name */
- name: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description URL slug */
- slug: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Hero banner at the top */
- topFullwidthBanner?: string;
- };
- page_config: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Headline for blog overview page (optional) */
- blogPostsPageHeadline?: string;
- /** @description Subheadline for blog overview page (optional) */
- blogPostsPageSubHeadline?: string;
- /** @description Headline for tag page (optional) */
- blogTagPageHeadline?: string;
- /** @description Footer text (e.g. copyright) */
- footerText1: string;
- /** @description Logo image */
- logo: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description HTML/JS snippet injected below each post. Use {{PAGE_ID}}, {{PAGE_URL}}, {{PAGE_TITLE}} as placeholders. */
- postCommentSlot?: string;
- /** @description Default meta description */
- seoDescription: string;
- /** @description Default SEO title for website */
- seoTitle: string;
- /** @description Site name */
- siteName: string;
- /** @description Website URL */
- website: string;
- };
- page_config_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Headline for blog overview page (optional) */
- blogPostsPageHeadline?: string;
- /** @description Subheadline for blog overview page (optional) */
- blogPostsPageSubHeadline?: string;
- /** @description Headline for tag page (optional) */
- blogTagPageHeadline?: string;
- /** @description Footer text (e.g. copyright) */
- footerText1: string;
- /** @description Logo image */
- logo: {
- /** @description Alt text (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description HTML/JS snippet injected below each post. Use {{PAGE_ID}}, {{PAGE_URL}}, {{PAGE_TITLE}} as placeholders. */
- postCommentSlot?: string;
- /** @description Default meta description */
- seoDescription: string;
- /** @description Default SEO title for website */
- seoTitle: string;
- /** @description Site name */
- siteName: string;
- /** @description Website URL */
- website: string;
- };
- page_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Page headline */
- headline: string;
- /** @description Icon identifier (optional) */
- icon?: string;
- /** @description Display name in navigation */
- linkName: string;
- /** @description Internal page name */
- name: string;
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description URL slug */
- slug: string;
- /** @description Optional subheadline */
- subheadline?: string;
- /** @description Hero banner at the top */
- topFullwidthBanner?: string;
- };
- post: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Post body (Markdown) */
- content: string;
- /** Format: date-time */
- readonly created?: string;
- /**
- * Format: date-time
- * @description Event date and time
- */
- eventDate?: string;
- /** @description Event location */
- eventLocation?: {
- /** @description Latitude (optional, for map) */
- lat?: number;
- /** @description Longitude (optional, for map) */
- lng?: number;
- /** @description Address / description (e.g. Town hall Schleusingen) */
- text?: string;
- };
- /** @description Short summary for previews */
- excerpt?: string;
- /** @description Post headline */
- headline: string;
- /**
- * @description Hide this post from all listing pages (still accessible via direct URL)
- * @default false
- */
- hideFromListing: boolean;
- /** @description Optional icon identifier */
- icon?: string;
- /**
- * @description Mark post as important
- * @default false
- */
- important: boolean;
- /**
- * @description This post is an event
- * @default false
- */
- isEvent: boolean;
- /** @description Display name (e.g. in navigation or link lists) */
- linkName: string;
- /** @description Featured image */
- postImage?: {
- /** @description Alt text / caption (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Associated tags */
- postTag?: string[];
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /**
- * @description Show comment section (default: true)
- * @default true
- */
- showCommentSection: boolean;
- /** @description URL slug (e.g. demo-260325-suhl-regionalplan) */
- slug: string;
- /** @description Optional subheadline below headline */
- subheadline?: string;
- };
- post_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Post body (Markdown) */
- content: string;
- /**
- * Format: date-time
- * @description Event date and time
- */
- eventDate?: string;
- /** @description Event location */
- eventLocation?: {
- /** @description Latitude (optional, for map) */
- lat?: number;
- /** @description Longitude (optional, for map) */
- lng?: number;
- /** @description Address / description (e.g. Town hall Schleusingen) */
- text?: string;
- };
- /** @description Short summary for previews */
- excerpt?: string;
- /** @description Post headline */
- headline: string;
- /**
- * @description Hide this post from all listing pages (still accessible via direct URL)
- * @default false
- */
- hideFromListing: boolean;
- /** @description Optional icon identifier */
- icon?: string;
- /**
- * @description Mark post as important
- * @default false
- */
- important: boolean;
- /**
- * @description This post is an event
- * @default false
- */
- isEvent: boolean;
- /** @description Display name (e.g. in navigation or link lists) */
- linkName: string;
- /** @description Featured image */
- postImage?: {
- /** @description Alt text / caption (optional) */
- description?: string;
- /** @description Asset URL */
- src?: string;
- };
- /** @description Associated tags */
- postTag?: string[];
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /**
- * @description Show comment section (default: true)
- * @default true
- */
- showCommentSection: boolean;
- /** @description URL slug (e.g. demo-260325-suhl-regionalplan) */
- slug: string;
- /** @description Optional subheadline below headline */
- subheadline?: string;
- };
- post_overview: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Show all posts; if false, use filterByTag or posts
- * @default false
- */
- allPosts: boolean;
- /**
- * @description Display as cards or list (optional)
- * @enum {string}
- */
- design?: "cards" | "list";
- /** @description Only posts with these tags (optional) */
- filterByTag?: string[];
- /** @description Headline */
- headline: string;
- /** @description Unique post overview ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Max. number of displayed entries (optional) */
- numberItems?: number;
- /** @description Fixed list of posts when not allPosts (optional) */
- posts?: string[];
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description Intro text (optional) */
- text?: string;
- };
- post_overview_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Show all posts; if false, use filterByTag or posts
- * @default false
- */
- allPosts: boolean;
- /**
- * @description Display as cards or list (optional)
- * @enum {string}
- */
- design?: "cards" | "list";
- /** @description Only posts with these tags (optional) */
- filterByTag?: string[];
- /** @description Headline */
- headline: string;
- /** @description Unique post overview ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Max. number of displayed entries (optional) */
- numberItems?: number;
- /** @description Fixed list of posts when not allPosts (optional) */
- posts?: string[];
- /**
- * @description Align items for row 1
- * @default stretch
- * @enum {string}
- */
- row1AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 1 (references to markdown, headline, image, etc.) */
- row1Content?: string[];
- /**
- * @description Justify content for row 1
- * @default start
- * @enum {string}
- */
- row1JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row2AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 2 */
- row2Content?: string[];
- /**
- * @description Row 2: justify content
- * @default start
- * @enum {string}
- */
- row2JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /**
- * @default stretch
- * @enum {string}
- */
- row3AlignItems: "start" | "end" | "center" | "baseline" | "stretch";
- /** @description Content components for row 3 */
- row3Content?: string[];
- /**
- * @description Row 3: justify content
- * @default start
- * @enum {string}
- */
- row3JustifyContent: "start" | "end" | "center" | "between" | "around" | "evenly";
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- /** @description Intro text (optional) */
- text?: string;
- };
- product: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /**
- * @description Product category
- * @enum {string}
- */
- category: "electronics" | "clothing" | "books" | "food" | "other";
- /**
- * Format: date-time
- * @description Auto-set on create
- */
- readonly created_at?: string;
- /** @description Detailed product description (optional) */
- description?: string;
- /** @description Product image URLs 1–10 (optional) */
- images?: string[];
- /**
- * @description Whether the product is in stock
- * @default true
- */
- in_stock: boolean;
- /** @description Price in EUR */
- price: number;
- /** @description Average customer rating 0–5, null if unrated (optional) */
- rating?: number | null;
- /** @description Stock Keeping Unit (e.g. EL-1234, BOOK-00042) */
- sku: string;
- /** @description Product name */
- title: string;
- };
- product_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /**
- * @description Product category
- * @enum {string}
- */
- category: "electronics" | "clothing" | "books" | "food" | "other";
- /** @description Detailed product description (optional) */
- description?: string;
- /** @description Product image URLs 1–10 (optional) */
- images?: string[];
- /**
- * @description Whether the product is in stock
- * @default true
- */
- in_stock: boolean;
- /** @description Price in EUR */
- price: number;
- /** @description Average customer rating 0–5, null if unrated (optional) */
- rating?: number | null;
- /** @description Stock Keeping Unit (e.g. EL-1234, BOOK-00042) */
- sku: string;
- /** @description Product name */
- title: string;
- };
- quote: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Author or source of quote */
- author: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Quote text */
- quote: string;
- /**
- * @description Quote alignment
- * @default left
- * @enum {string}
- */
- variant: "left" | "right";
- };
- quote_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Author or source of quote */
- author: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Quote text */
- quote: string;
- /**
- * @description Quote alignment
- * @default left
- * @enum {string}
- */
- variant: "left" | "right";
- };
- searchable_text: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Description (optional) */
- description?: string;
- /** @description Unique component ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Only search content with these tags (optional) */
- tagWhitelist?: string[];
- /** @description Searchable text fragments (references to text_fragment) */
- textFragments: string[];
- /** @description Search component title (optional) */
- title?: string;
- };
- searchable_text_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Description (optional) */
- description?: string;
- /** @description Unique component ID */
- id: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description Only search content with these tags (optional) */
- tagWhitelist?: string[];
- /** @description Searchable text fragments (references to text_fragment) */
- textFragments: string[];
- /** @description Search component title (optional) */
- title?: string;
- };
- seo: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- };
- seo_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Meta description for search engines (optional) */
- seoDescription?: string;
- /**
- * @description Robots meta directive
- * @default index, follow
- * @enum {string}
- */
- seoMetaRobots: "index, follow" | "noindex, follow" | "index, nofollow" | "noindex, nofollow";
- /** @description SEO page title (browser tab, search results) */
- seoTitle: string;
- };
- tag: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Optional pill color (CSS, e.g. #2d5a27 or rgb()). Admin: color picker + text field. */
- color?: string;
- /** @description Optional Iconify icon id (e.g. mdi:map-marker, same as link.icon). */
- icon?: string;
- /** @description Tag name (e.g. politik, termin). Must be unique. */
- name: string;
- };
- tag_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Optional pill color (CSS, e.g. #2d5a27 or rgb()). Admin: color picker + text field. */
- color?: string;
- /** @description Optional Iconify icon id (e.g. mdi:map-marker, same as link.icon). */
- icon?: string;
- /** @description Tag name (e.g. politik, termin). Must be unique. */
- name: string;
- };
- text_fragment: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Unique fragment ID */
- id: string;
- /** @description Tags for categorisation (optional) */
- tags?: string[];
- /** @description Searchable text content */
- text: string;
- /** @description Text fragment title */
- title: string;
- };
- text_fragment_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Unique fragment ID */
- id: string;
- /** @description Tags for categorisation (optional) */
- tags?: string[];
- /** @description Searchable text content */
- text: string;
- /** @description Text fragment title */
- title: string;
- };
- top_banner: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Unique ID */
- id: string;
- /** @description Banner text (e.g. notice at top of page) */
- text: string;
- };
- top_banner_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Unique ID */
- id: string;
- /** @description Banner text (e.g. notice at top of page) */
- text: string;
- };
- translation_bundle: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Map: translation key → text (e.g. searchable_text_help, footer_copyright) */
- strings: Record;
- };
- translation_bundle_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Map: translation key → text (e.g. searchable_text_help, footer_copyright) */
- strings: Record;
- };
- youtube_video: {
- /** @description Entry identifier (filename) */
- readonly _slug?: string;
- /** @description Short description (optional) */
- description?: string;
- /** @description Unique ID (optional; otherwise _slug is used) */
- id?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description URL params (e.g. start=30, autoplay=1). Optional. */
- params?: string;
- /** @description Video title (optional) */
- title?: string;
- /** @description YouTube video ID (from URL ?v=VIDEO_ID) */
- youtubeId: string;
- };
- youtube_video_input: {
- /** @description URL slug (used as filename) */
- _slug: string;
- /** @description Short description (optional) */
- description?: string;
- /** @description Unique ID (optional; otherwise _slug is used) */
- id?: string;
- /** @description Column width (grid). Optional. */
- layout?: {
- /**
- * @description Breakout layout (full width)
- * @default false
- */
- breakout: boolean;
- /**
- * @description Width on desktop (optional)
- * @enum {string}
- */
- desktop?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Width on mobile (1–12)
- * @default 12
- * @enum {string}
- */
- mobile: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- /**
- * @description Space below (rem)
- * @default 0
- * @enum {number}
- */
- spaceBottom: 0 | 0.5 | 1 | 1.5 | 2;
- /**
- * @description Width on tablet (optional)
- * @enum {string}
- */
- tablet?: "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
- };
- /** @description URL params (e.g. start=30, autoplay=1). Optional. */
- params?: string;
- /** @description Video title (optional) */
- title?: string;
- /** @description YouTube video ID (from URL ?v=VIDEO_ID) */
- youtubeId: string;
- };
};
responses: never;
parameters: never;
@@ -5602,7 +574,7 @@ export interface operations {
};
};
};
- getBadgeSchema: {
+ getNoteSchema: {
parameters: {
query?: never;
header?: never;
@@ -5627,1395 +599,33 @@ export interface operations {
};
};
};
- getCalendarSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCalendarItemSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCampaignSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCampaignsSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getContentLayoutSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getDemoSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getFooterSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getFullwidthBannerSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHeadlineSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHtmlSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getIframeSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImageSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImageGallerySchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImgSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLinkSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLinkListSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getListSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getMarkdownSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavgroupSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavigationSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOpnformSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisationSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisationsSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPageSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPageConfigSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPostSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPostOverviewSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getProductSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getQuoteSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSearchableTextSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSeoSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTagSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTextFragmentSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTopBannerSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTranslationBundleSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getYoutubeVideoSchema: {
- parameters: {
- query?: never;
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Schema definition */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Collection not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- listBadge: {
+ listNote: {
parameters: {
query?: {
/** @description Field name to sort by */
_sort?: string;
/** @description Sort order (default: asc) */
_order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
+ /** @description Page number (1-indexed). Ignored if _limit/_offset is set. */
_page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by label */
- label?: string;
- /** @description Filter by color */
- color?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["badge"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createBadge: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["badge_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["badge"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getBadge: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["badge"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateBadge: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["badge"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["badge"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteBadge: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getBadgeReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listCalendar: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by items */
- items?: string;
- /** @description Filter by fromPost */
- fromPost?: boolean;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["calendar"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createCalendar: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["calendar_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["calendar"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCalendar: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["calendar"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateCalendar: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["calendar"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["calendar"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteCalendar: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCalendarReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listCalendarItem: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
+ /** @description Items per page (max 1000). Ignored if _limit/_offset is set. */
_per_page?: number;
+ /** @description Maximum number of items to return (max 1000). Takes precedence over _per_page. */
+ _limit?: number;
+ /** @description Number of items to skip. Takes precedence over _page. */
+ _offset?: number;
+ /** @description Full-text query. Splits on whitespace → AND across terms (each term must appear in some string value). When no explicit _sort is given, results are ranked by match frequency (desc). */
+ _q?: string;
+ /** @description Filter by status. Anonymous callers (no API key / session) are forced to "published" unless a valid ?preview= token is attached. */
+ _status?: "published" | "draft" | "all";
/** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
_resolve?: string;
/** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
_locale?: string;
/** @description Filter by title */
title?: string;
- /** @description Filter by terminZeit */
- terminZeit?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by link */
- link?: string;
+ /** @description Filter by body */
+ body?: string;
};
header?: never;
path?: never;
@@ -7030,7 +640,7 @@ export interface operations {
};
content: {
"application/json": {
- items?: components["schemas"]["calendar_item"][];
+ items?: components["schemas"]["note"][];
page?: number;
per_page?: number;
total?: number;
@@ -7040,7 +650,7 @@ export interface operations {
};
};
};
- createCalendarItem: {
+ createNote: {
parameters: {
query?: {
/** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
@@ -7054,7 +664,7 @@ export interface operations {
};
requestBody: {
content: {
- "application/json": components["schemas"]["calendar_item_input"];
+ "application/json": components["schemas"]["note_input"];
};
};
responses: {
@@ -7064,7 +674,7 @@ export interface operations {
[name: string]: unknown;
};
content: {
- "application/json": components["schemas"]["calendar_item"];
+ "application/json": components["schemas"]["note"];
};
};
/** @description Validation error */
@@ -7083,7 +693,7 @@ export interface operations {
};
};
};
- getCalendarItem: {
+ getNote: {
parameters: {
query?: {
/** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
@@ -7106,7 +716,7 @@ export interface operations {
[name: string]: unknown;
};
content: {
- "application/json": components["schemas"]["calendar_item"];
+ "application/json": components["schemas"]["note"];
};
};
/** @description Entry not found */
@@ -7118,7 +728,7 @@ export interface operations {
};
};
};
- updateCalendarItem: {
+ updateNote: {
parameters: {
query?: {
/** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
@@ -7135,7 +745,7 @@ export interface operations {
};
requestBody: {
content: {
- "application/json": components["schemas"]["calendar_item"];
+ "application/json": components["schemas"]["note"];
};
};
responses: {
@@ -7145,7 +755,7 @@ export interface operations {
[name: string]: unknown;
};
content: {
- "application/json": components["schemas"]["calendar_item"];
+ "application/json": components["schemas"]["note"];
};
};
/** @description Validation error */
@@ -7164,7 +774,7 @@ export interface operations {
};
};
};
- deleteCalendarItem: {
+ deleteNote: {
parameters: {
query?: {
/** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
@@ -7197,7 +807,7 @@ export interface operations {
};
};
};
- getCalendarItemReferrers: {
+ getNoteReferrers: {
parameters: {
query?: never;
header?: never;
@@ -7229,96 +839,61 @@ export interface operations {
};
};
};
- listCampaign: {
+ listEnvironments: {
parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by urlPattern */
- urlPattern?: string;
- /** @description Filter by selector */
- selector?: string;
- /** @description Filter by insertHtml */
- insertHtml?: string;
- /** @description Filter by html */
- html?: string;
- /** @description Filter by css */
- css?: string;
- /** @description Filter by javascript */
- javascript?: string;
- /** @description Filter by medias */
- medias?: string;
- /** @description Filter by timeUntil */
- timeUntil?: string;
- };
+ query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
- /** @description Paginated list of entries */
+ /** @description Environment list */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
- items?: components["schemas"]["campaign"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
+ default?: string | null;
+ environments?: string[];
};
};
};
};
};
- createCampaign: {
+ createEnvironment: {
parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
+ query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
- "application/json": components["schemas"]["campaign_input"];
+ "application/json": {
+ /** @description Optional override. Omit to inherit global default. */
+ locales?: string[] | null;
+ name: string;
+ };
};
};
responses: {
- /** @description Entry created */
- 201: {
+ /** @description Space created */
+ 200: {
headers: {
[name: string]: unknown;
};
- content: {
- "application/json": components["schemas"]["campaign"];
- };
+ content?: never;
};
- /** @description Validation error */
+ /** @description Invalid name or locales */
400: {
headers: {
[name: string]: unknown;
};
content?: never;
};
- /** @description Entry already exists */
+ /** @description Space already exists */
409: {
headers: {
[name: string]: unknown;
@@ -7327,232 +902,72 @@ export interface operations {
};
};
};
- getCampaign: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["campaign"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateCampaign: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["campaign"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["campaign"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteCampaign: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCampaignReferrers: {
+ deleteEnvironment: {
parameters: {
query?: never;
header?: never;
path: {
- /** @description Entry slug */
- slug: string;
+ name: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
- /** @description List of referrers (collection, slug, field, locale) */
+ /** @description Space deleted */
200: {
headers: {
[name: string]: unknown;
};
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
+ content?: never;
};
- };
- };
- listCampaigns: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by enable */
- enable?: boolean;
- /** @description Filter by campaigns */
- campaigns?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["campaigns"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createCampaigns: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["campaigns_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["campaigns"];
- };
- };
- /** @description Validation error */
+ /** @description Cannot delete the last remaining space */
400: {
headers: {
[name: string]: unknown;
};
content?: never;
};
- /** @description Entry already exists */
+ /** @description Space not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ renameEnvironment: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ name: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ name: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Space renamed */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Space not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Target name already exists */
409: {
headers: {
[name: string]: unknown;
@@ -7561,244 +976,40 @@ export interface operations {
};
};
};
- getCampaigns: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["campaigns"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateCampaigns: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["campaigns"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["campaigns"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteCampaigns: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getCampaignsReferrers: {
+ duplicateEnvironment: {
parameters: {
query?: never;
header?: never;
path: {
- /** @description Entry slug */
- slug: string;
+ /** @description Source space */
+ name: string;
};
cookie?: never;
};
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listContentLayout: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by row1JustifyContent */
- row1JustifyContent?: string;
- /** @description Filter by row1AlignItems */
- row1AlignItems?: string;
- /** @description Filter by row1Content */
- row1Content?: string;
- /** @description Filter by row2JustifyContent */
- row2JustifyContent?: string;
- /** @description Filter by row2AlignItems */
- row2AlignItems?: string;
- /** @description Filter by row2Content */
- row2Content?: string;
- /** @description Filter by row3JustifyContent */
- row3JustifyContent?: string;
- /** @description Filter by row3AlignItems */
- row3AlignItems?: string;
- /** @description Filter by row3Content */
- row3Content?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["content_layout"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createContentLayout: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
requestBody: {
content: {
- "application/json": components["schemas"]["content_layout_input"];
+ "application/json": {
+ /** @description Target space name */
+ name: string;
+ };
};
};
responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["content_layout"];
- };
- };
- /** @description Validation error */
- 400: {
+ /** @description Space duplicated */
+ 200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
- /** @description Entry already exists */
+ /** @description Source space not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Target name already exists */
409: {
headers: {
[name: string]: unknown;
@@ -7807,33 +1018,27 @@ export interface operations {
};
};
};
- getContentLayout: {
+ getEnvironmentLocales: {
parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
+ query?: never;
header?: never;
path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
+ name: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
- /** @description The entry */
+ /** @description Locale configuration for the space */
200: {
headers: {
[name: string]: unknown;
};
content: {
- "application/json": components["schemas"]["content_layout"];
+ "application/json": components["schemas"]["EnvironmentLocales"];
};
};
- /** @description Entry not found */
+ /** @description Space not found */
404: {
headers: {
[name: string]: unknown;
@@ -7842,170 +1047,57 @@ export interface operations {
};
};
};
- updateContentLayout: {
+ putEnvironmentLocales: {
parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
+ query?: never;
header?: never;
path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
+ name: string;
};
cookie?: never;
};
requestBody: {
content: {
- "application/json": components["schemas"]["content_layout"];
+ "application/json": {
+ locales?: string[] | null;
+ };
};
};
responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["content_layout"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteContentLayout: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getContentLayoutReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
+ /** @description Override applied */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
+ locales?: string[];
+ on_disk?: string[];
+ override?: boolean;
+ updated?: string;
+ };
};
};
+ /** @description Invalid body or locale value */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Space not found */
+ 404: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
};
};
- listDemo: {
+ listLocales: {
parameters: {
query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by title */
- title?: string;
- /** @description Filter by summary */
- summary?: string;
- /** @description Filter by css */
- css?: string;
- /** @description Filter by singleSelect */
- singleSelect?: string;
- /** @description Filter by count */
- count?: number;
- /** @description Filter by quantity */
- quantity?: number;
- /** @description Filter by isActive */
- isActive?: boolean;
- /** @description Filter by publishedAt */
- publishedAt?: string;
- /** @description Filter by bodyRichtext */
- bodyRichtext?: string;
- /** @description Filter by bodyHtml */
- bodyHtml?: string;
- /** @description Filter by bodyMarkdown */
- bodyMarkdown?: string;
- /** @description Filter by bodyTextOrRef */
- bodyTextOrRef?: string;
- /** @description Filter by tags */
- tags?: string;
- /** @description Filter by labels */
- labels?: string;
- /** @description Filter by scores */
- scores?: string;
- /** @description Filter by relatedPages */
- relatedPages?: string;
- /** @description Filter by meta */
- meta?: string;
- /** @description Filter by mainImage */
- mainImage?: string;
- /** @description Filter by relatedPage */
- relatedPage?: string;
+ _environment?: string;
};
header?: never;
path?: never;
@@ -8013,307 +1105,68 @@ export interface operations {
};
requestBody?: never;
responses: {
- /** @description Paginated list of entries */
+ /** @description Locale list */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
- items?: components["schemas"]["demo"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
+ default?: string | null;
+ locales?: string[];
};
};
};
};
};
- createDemo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["demo_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["demo"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getDemo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["demo"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateDemo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["demo"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["demo"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteDemo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getDemoReferrers: {
+ mintPreviewToken: {
parameters: {
query?: never;
header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listFooter: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by row1JustifyContent */
- row1JustifyContent?: string;
- /** @description Filter by row1AlignItems */
- row1AlignItems?: string;
- /** @description Filter by row1Content */
- row1Content?: string;
- /** @description Filter by row2JustifyContent */
- row2JustifyContent?: string;
- /** @description Filter by row2AlignItems */
- row2AlignItems?: string;
- /** @description Filter by row2Content */
- row2Content?: string;
- /** @description Filter by row3JustifyContent */
- row3JustifyContent?: string;
- /** @description Filter by row3AlignItems */
- row3AlignItems?: string;
- /** @description Filter by row3Content */
- row3Content?: string;
- /** @description Filter by id */
- id?: string;
- };
- header?: never;
path?: never;
cookie?: never;
};
- requestBody?: never;
+ requestBody: {
+ content: {
+ "application/json": {
+ /** @description Collection the token unlocks */
+ collection: string;
+ /** @description Restrict to one locale */
+ locale?: string | null;
+ /** @description Restrict to one entry. Omit for collection-wide. */
+ slug?: string | null;
+ /**
+ * @description Token lifetime (seconds). Clamped to [60, 30 days].
+ * @default 86400
+ */
+ ttl_seconds?: number;
+ };
+ };
+ };
responses: {
- /** @description Paginated list of entries */
+ /** @description Token payload */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
- items?: components["schemas"]["footer"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
+ /** Format: date-time */
+ expires_at?: string;
+ token?: string;
+ ttl_seconds?: number;
};
};
};
- };
- };
- createFooter: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["footer_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["footer"];
- };
- };
- /** @description Validation error */
+ /** @description Missing collection or RUSTYCMS_SESSION_SECRET not configured */
400: {
headers: {
[name: string]: unknown;
};
content?: never;
};
- /** @description Entry already exists */
- 409: {
+ /** @description Unauthorized */
+ 401: {
headers: {
[name: string]: unknown;
};
@@ -8321,7166 +1174,44 @@ export interface operations {
};
};
};
- getFooter: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["footer"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateFooter: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["footer"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["footer"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteFooter: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getFooterReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listFullwidthBanner: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by subheadline */
- subheadline?: string;
- /** @description Filter by variant */
- variant?: string;
- /** @description Filter by text */
- text?: string;
- /** @description Filter by image */
- image?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["fullwidth_banner"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createFullwidthBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["fullwidth_banner_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["fullwidth_banner"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getFullwidthBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["fullwidth_banner"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateFullwidthBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["fullwidth_banner"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["fullwidth_banner"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteFullwidthBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getFullwidthBannerReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listHeadline: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by text */
- text?: string;
- /** @description Filter by tag */
- tag?: string;
- /** @description Filter by align */
- align?: string;
- /** @description Filter by layout */
- layout?: string;
- /** @description Filter by internal */
- internal?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["headline"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createHeadline: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["headline_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["headline"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHeadline: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["headline"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateHeadline: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["headline"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["headline"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteHeadline: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHeadlineReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listHtml: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by html */
- html?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["html"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createHtml: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["html_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["html"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHtml: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["html"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateHtml: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["html"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["html"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteHtml: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getHtmlReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listIframe: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by iframe */
- iframe?: string;
- /** @description Filter by content */
- content?: string;
- /** @description Filter by overlayImage */
- overlayImage?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["iframe"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createIframe: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["iframe_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["iframe"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getIframe: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["iframe"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateIframe: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["iframe"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["iframe"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteIframe: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getIframeReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listImage: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by img */
- img?: string;
- /** @description Filter by caption */
- caption?: string;
- /** @description Filter by layout */
- layout?: string;
- /** @description Filter by maxWidth */
- maxWidth?: number;
- /** @description Filter by aspectRatio */
- aspectRatio?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["image"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createImage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["image_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateImage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["image"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteImage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImageReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listImageGallery: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by images */
- images?: string;
- /** @description Filter by layout */
- layout?: string;
- /** @description Filter by description */
- description?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["image_gallery"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createImageGallery: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["image_gallery_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image_gallery"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImageGallery: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image_gallery"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateImageGallery: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["image_gallery"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["image_gallery"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteImageGallery: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImageGalleryReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listImg: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by src */
- src?: string;
- /** @description Filter by description */
- description?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["img"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createImg: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["img_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["img"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImg: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["img"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateImg: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["img"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["img"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteImg: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getImgReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listLink: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by url */
- url?: string;
- /** @description Filter by linkName */
- linkName?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by newTab */
- newTab?: boolean;
- /** @description Filter by icon */
- icon?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by alt */
- alt?: string;
- /** @description Filter by color */
- color?: string;
- /** @description Filter by external */
- external?: boolean;
- /** @description Filter by internal */
- internal?: string;
- /** @description Filter by showText */
- showText?: boolean;
- /** @description Filter by author */
- author?: string;
- /** @description Filter by date */
- date?: string;
- /** @description Filter by source */
- source?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["link"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createLink: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["link_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLink: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateLink: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["link"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteLink: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLinkReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listLinkList: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by links */
- links?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["link_list"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createLinkList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["link_list_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link_list"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLinkList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link_list"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateLinkList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["link_list"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["link_list"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteLinkList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getLinkListReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listList: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by item */
- item?: string;
- /** @description Filter by internal */
- internal?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["list"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["list_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["list"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["list"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["list"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["list"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteList: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getListReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listMarkdown: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by content */
- content?: string;
- /** @description Filter by alignment */
- alignment?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["markdown"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createMarkdown: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["markdown_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["markdown"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getMarkdown: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["markdown"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateMarkdown: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["markdown"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["markdown"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteMarkdown: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getMarkdownReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listNavgroup: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by label */
- label?: string;
- /** @description Filter by url */
- url?: string;
- /** @description Filter by links */
- links?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["navgroup"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createNavgroup: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["navgroup_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navgroup"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavgroup: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navgroup"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateNavgroup: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["navgroup"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navgroup"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteNavgroup: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavgroupReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listNavigation: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by links */
- links?: string;
- /** @description Filter by internal */
- internal?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["navigation"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createNavigation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["navigation_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navigation"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavigation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navigation"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateNavigation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["navigation"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["navigation"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteNavigation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getNavigationReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listOpnform: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by formId */
- formId?: string;
- /** @description Filter by baseUrl */
- baseUrl?: string;
- /** @description Filter by iframeTitle */
- iframeTitle?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["opnform"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createOpnform: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["opnform_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["opnform"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOpnform: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["opnform"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateOpnform: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["opnform"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["opnform"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteOpnform: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOpnformReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listOrganisation: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by logo */
- logo?: string;
- /** @description Filter by link */
- link?: string;
- /** @description Filter by badge */
- badge?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["organisation"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createOrganisation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["organisation_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisation"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisation"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateOrganisation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["organisation"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisation"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteOrganisation: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisationReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listOrganisations: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by presentation */
- presentation?: string;
- /** @description Filter by addOrganisationTitle */
- addOrganisationTitle?: string;
- /** @description Filter by addOrganisationMarkdown */
- addOrganisationMarkdown?: string;
- /** @description Filter by addOrganisationLink */
- addOrganisationLink?: string;
- /** @description Filter by allowedBadges */
- allowedBadges?: string;
- /** @description Filter by organisations */
- organisations?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["organisations"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createOrganisations: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["organisations_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisations"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisations: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisations"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateOrganisations: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["organisations"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["organisations"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteOrganisations: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getOrganisationsReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listPage: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by row1JustifyContent */
- row1JustifyContent?: string;
- /** @description Filter by row1AlignItems */
- row1AlignItems?: string;
- /** @description Filter by row1Content */
- row1Content?: string;
- /** @description Filter by row2JustifyContent */
- row2JustifyContent?: string;
- /** @description Filter by row2AlignItems */
- row2AlignItems?: string;
- /** @description Filter by row2Content */
- row2Content?: string;
- /** @description Filter by row3JustifyContent */
- row3JustifyContent?: string;
- /** @description Filter by row3AlignItems */
- row3AlignItems?: string;
- /** @description Filter by row3Content */
- row3Content?: string;
- /** @description Filter by seoTitle */
- seoTitle?: string;
- /** @description Filter by seoDescription */
- seoDescription?: string;
- /** @description Filter by seoMetaRobots */
- seoMetaRobots?: string;
- /** @description Filter by slug */
- slug?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by linkName */
- linkName?: string;
- /** @description Filter by icon */
- icon?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by subheadline */
- subheadline?: string;
- /** @description Filter by topFullwidthBanner */
- topFullwidthBanner?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["page"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createPage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["page_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updatePage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["page"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deletePage: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPageReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listPageConfig: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by logo */
- logo?: string;
- /** @description Filter by siteName */
- siteName?: string;
- /** @description Filter by website */
- website?: string;
- /** @description Filter by footerText1 */
- footerText1?: string;
- /** @description Filter by seoTitle */
- seoTitle?: string;
- /** @description Filter by seoDescription */
- seoDescription?: string;
- /** @description Filter by blogPostsPageHeadline */
- blogPostsPageHeadline?: string;
- /** @description Filter by blogPostsPageSubHeadline */
- blogPostsPageSubHeadline?: string;
- /** @description Filter by blogTagPageHeadline */
- blogTagPageHeadline?: string;
- /** @description Filter by postCommentSlot */
- postCommentSlot?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["page_config"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createPageConfig: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["page_config_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page_config"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPageConfig: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page_config"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updatePageConfig: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["page_config"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["page_config"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deletePageConfig: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPageConfigReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listPost: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by row1JustifyContent */
- row1JustifyContent?: string;
- /** @description Filter by row1AlignItems */
- row1AlignItems?: string;
- /** @description Filter by row1Content */
- row1Content?: string;
- /** @description Filter by row2JustifyContent */
- row2JustifyContent?: string;
- /** @description Filter by row2AlignItems */
- row2AlignItems?: string;
- /** @description Filter by row2Content */
- row2Content?: string;
- /** @description Filter by row3JustifyContent */
- row3JustifyContent?: string;
- /** @description Filter by row3AlignItems */
- row3AlignItems?: string;
- /** @description Filter by row3Content */
- row3Content?: string;
- /** @description Filter by seoTitle */
- seoTitle?: string;
- /** @description Filter by seoDescription */
- seoDescription?: string;
- /** @description Filter by seoMetaRobots */
- seoMetaRobots?: string;
- /** @description Filter by slug */
- slug?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by subheadline */
- subheadline?: string;
- /** @description Filter by excerpt */
- excerpt?: string;
- /** @description Filter by content */
- content?: string;
- /** @description Filter by postImage */
- postImage?: string;
- /** @description Filter by postTag */
- postTag?: string;
- /** @description Filter by created */
- created?: string;
- /** @description Filter by isEvent */
- isEvent?: boolean;
- /** @description Filter by eventDate */
- eventDate?: string;
- /** @description Filter by eventLocation */
- eventLocation?: string;
- /** @description Filter by icon */
- icon?: string;
- /** @description Filter by hideFromListing */
- hideFromListing?: boolean;
- /** @description Filter by important */
- important?: boolean;
- /** @description Filter by linkName */
- linkName?: string;
- /** @description Filter by showCommentSection */
- showCommentSection?: boolean;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["post"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createPost: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["post_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPost: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updatePost: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["post"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deletePost: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPostReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listPostOverview: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by row1JustifyContent */
- row1JustifyContent?: string;
- /** @description Filter by row1AlignItems */
- row1AlignItems?: string;
- /** @description Filter by row1Content */
- row1Content?: string;
- /** @description Filter by row2JustifyContent */
- row2JustifyContent?: string;
- /** @description Filter by row2AlignItems */
- row2AlignItems?: string;
- /** @description Filter by row2Content */
- row2Content?: string;
- /** @description Filter by row3JustifyContent */
- row3JustifyContent?: string;
- /** @description Filter by row3AlignItems */
- row3AlignItems?: string;
- /** @description Filter by row3Content */
- row3Content?: string;
- /** @description Filter by seoTitle */
- seoTitle?: string;
- /** @description Filter by seoDescription */
- seoDescription?: string;
- /** @description Filter by seoMetaRobots */
- seoMetaRobots?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by headline */
- headline?: string;
- /** @description Filter by text */
- text?: string;
- /** @description Filter by allPosts */
- allPosts?: boolean;
- /** @description Filter by filterByTag */
- filterByTag?: string;
- /** @description Filter by posts */
- posts?: string;
- /** @description Filter by numberItems */
- numberItems?: number;
- /** @description Filter by design */
- design?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["post_overview"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createPostOverview: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["post_overview_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post_overview"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPostOverview: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post_overview"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updatePostOverview: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["post_overview"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["post_overview"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deletePostOverview: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getPostOverviewReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listProduct: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by sku */
- sku?: string;
- /** @description Filter by title */
- title?: string;
- /** @description Filter by price */
- price?: number;
- /** @description Filter by category */
- category?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by images */
- images?: string;
- /** @description Filter by in_stock */
- in_stock?: boolean;
- /** @description Filter by rating */
- rating?: number;
- /** @description Filter by created_at */
- created_at?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["product"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createProduct: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["product_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["product"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getProduct: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["product"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateProduct: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["product"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["product"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteProduct: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getProductReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listQuote: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by quote */
- quote?: string;
- /** @description Filter by author */
- author?: string;
- /** @description Filter by variant */
- variant?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["quote"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createQuote: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["quote_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["quote"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getQuote: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["quote"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateQuote: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["quote"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["quote"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteQuote: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getQuoteReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listSearchableText: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by textFragments */
- textFragments?: string;
- /** @description Filter by title */
- title?: string;
- /** @description Filter by tagWhitelist */
- tagWhitelist?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by layout */
- layout?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["searchable_text"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createSearchableText: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["searchable_text_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["searchable_text"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSearchableText: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["searchable_text"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateSearchableText: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["searchable_text"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["searchable_text"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteSearchableText: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSearchableTextReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listSeo: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by seoTitle */
- seoTitle?: string;
- /** @description Filter by seoDescription */
- seoDescription?: string;
- /** @description Filter by seoMetaRobots */
- seoMetaRobots?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["seo"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createSeo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["seo_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["seo"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSeo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["seo"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateSeo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["seo"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["seo"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteSeo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getSeoReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listTag: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by name */
- name?: string;
- /** @description Filter by icon */
- icon?: string;
- /** @description Filter by color */
- color?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["tag"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createTag: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["tag_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["tag"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTag: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["tag"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateTag: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["tag"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["tag"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteTag: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTagReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listTextFragment: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by title */
- title?: string;
- /** @description Filter by text */
- text?: string;
- /** @description Filter by tags */
- tags?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["text_fragment"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createTextFragment: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["text_fragment_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["text_fragment"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTextFragment: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["text_fragment"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateTextFragment: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["text_fragment"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["text_fragment"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteTextFragment: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTextFragmentReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listTopBanner: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by id */
- id?: string;
- /** @description Filter by text */
- text?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["top_banner"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createTopBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["top_banner_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["top_banner"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTopBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["top_banner"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateTopBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["top_banner"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["top_banner"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteTopBanner: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTopBannerReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listTranslationBundle: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by strings */
- strings?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["translation_bundle"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createTranslationBundle: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["translation_bundle_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["translation_bundle"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTranslationBundle: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["translation_bundle"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateTranslationBundle: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["translation_bundle"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["translation_bundle"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteTranslationBundle: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getTranslationBundleReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
- listYoutubeVideo: {
- parameters: {
- query?: {
- /** @description Field name to sort by */
- _sort?: string;
- /** @description Sort order (default: asc) */
- _order?: "asc" | "desc";
- /** @description Page number (1-indexed) */
- _page?: number;
- /** @description Items per page */
- _per_page?: number;
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- /** @description Filter by youtubeId */
- youtubeId?: string;
- /** @description Filter by title */
- title?: string;
- /** @description Filter by description */
- description?: string;
- /** @description Filter by params */
- params?: string;
- /** @description Filter by layout */
- layout?: string;
- /** @description Filter by id */
- id?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Paginated list of entries */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- items?: components["schemas"]["youtube_video"][];
- page?: number;
- per_page?: number;
- total?: number;
- total_pages?: number;
- };
- };
- };
- };
- };
- createYoutubeVideo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path?: never;
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["youtube_video_input"];
- };
- };
- responses: {
- /** @description Entry created */
- 201: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["youtube_video"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry already exists */
- 409: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getYoutubeVideo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description The entry */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["youtube_video"];
- };
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- updateYoutubeVideo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody: {
- content: {
- "application/json": components["schemas"]["youtube_video"];
- };
- };
- responses: {
- /** @description Entry updated */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": components["schemas"]["youtube_video"];
- };
- };
- /** @description Validation error */
- 400: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- deleteYoutubeVideo: {
- parameters: {
- query?: {
- /** @description Resolve references: 'all' or comma-separated field names (e.g. row1Content,topFullwidthBanner). Resolved entries are embedded instead of { _type, _slug }. */
- _resolve?: string;
- /** @description Locale for content (e.g. de, en). Only used when RUSTYCMS_LOCALES is set. Default = first locale. References are resolved in the same locale. */
- _locale?: string;
- };
- header?: never;
- path: {
- /** @description Entry identifier (filename without extension) */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description Entry deleted */
- 204: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- /** @description Entry not found */
- 404: {
- headers: {
- [name: string]: unknown;
- };
- content?: never;
- };
- };
- };
- getYoutubeVideoReferrers: {
- parameters: {
- query?: never;
- header?: never;
- path: {
- /** @description Entry slug */
- slug: string;
- };
- cookie?: never;
- };
- requestBody?: never;
- responses: {
- /** @description List of referrers (collection, slug, field, locale) */
- 200: {
- headers: {
- [name: string]: unknown;
- };
- content: {
- "application/json": {
- /** @description Collection of the referring entry */
- collection?: string;
- /** @description Field that holds the reference */
- field?: string;
- /** @description Locale of the referring entry if applicable */
- locale?: string | null;
- /** @description Slug of the referring entry */
- slug?: string;
- }[];
- };
- };
- };
- };
transformImage: {
parameters: {
query: {
- /** @description External image URL */
+ /** @description Image URL. Absolute (https://…) or relative /api/assets/… */
url: string;
/** @description Target width (alias: width) */
w?: number;
/** @description Target height (alias: height) */
h?: number;
- /** @description Aspect ratio before resize, e.g. 1:1 or 16:9 (center crop) */
+ /** @description Device-pixel-ratio multiplier for w/h. Clamped to [1, 4]. */
+ dpr?: number;
+ /** @description Aspect ratio before resize, e.g. 1:1 or 16:9 */
ar?: string;
/** @description fill = exact w×h, contain = fit inside, cover = fill with crop */
fit?: "fill" | "contain" | "cover";
- /** @description Output format */
- format?: "jpeg" | "png" | "webp" | "avif";
- /** @description Quality 1–100 for JPEG and WebP (lossy) */
+ /** @description Focal X (0..1) for aspect-ratio crops */
+ fx?: number;
+ /** @description Focal Y (0..1) for aspect-ratio crops */
+ fy?: number;
+ /** @description Crop anchor when no focal point given */
+ anchor?: "center" | "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right";
+ /** @description Explicit crop X offset (px) */
+ cx?: number;
+ /** @description Explicit crop Y offset (px) */
+ cy?: number;
+ /** @description Explicit crop width (px) */
+ cw?: number;
+ /** @description Explicit crop height (px) */
+ ch?: number;
+ /** @description Rotation in degrees (after resize) */
+ rotate?: 90 | 180 | 270;
+ /** @description Horizontal or vertical flip */
+ flip?: "h" | "v";
+ /** @description Convert to grayscale */
+ grayscale?: boolean;
+ /** @description Output format. `auto` negotiates via Accept header (avif > webp > jpeg). */
+ format?: "jpeg" | "png" | "webp" | "avif" | "auto";
+ /** @description Quality 1–100 for JPEG/WebP (lossy) */
quality?: number;
};
header?: never;
@@ -15501,7 +1232,7 @@ export interface operations {
"image/webp": string;
};
};
- /** @description Invalid URL or not a valid image */
+ /** @description Invalid URL, host not in allowlist, source too large, or not a valid image */
400: {
headers: {
[name: string]: unknown;
@@ -15517,4 +1248,122 @@ export interface operations {
};
};
};
+ transformLqip: {
+ parameters: {
+ query: {
+ /** @description Blurhash string */
+ hash: string;
+ w?: number;
+ h?: number;
+ quality?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description JPEG placeholder */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "image/jpeg": string;
+ };
+ };
+ /** @description Invalid blurhash */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ transformMetadata: {
+ parameters: {
+ query: {
+ /** @description Image URL (absolute or /api/assets/…) */
+ url: string;
+ /** @description Skip blurhash computation for a faster response */
+ no_blurhash?: boolean;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Metadata */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ aspectRatio?: number;
+ blurhash?: string | null;
+ /** @description Hex color like #a8d7c5 */
+ dominantColor?: string;
+ hasAlpha?: boolean;
+ height?: number;
+ width?: number;
+ };
+ };
+ };
+ /** @description Invalid URL, host not in allowlist, or source too large */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
+ transformSrcset: {
+ parameters: {
+ query: {
+ url: string;
+ /** @description Comma-separated widths */
+ widths: string;
+ /** @description Comma-separated output formats */
+ formats?: string;
+ ar?: string;
+ fit?: string;
+ quality?: number;
+ fx?: number;
+ fy?: number;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Source set descriptor */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ fallback?: string;
+ sources?: {
+ srcset?: string;
+ type?: string;
+ }[];
+ widths?: number[];
+ };
+ };
+ };
+ /** @description Missing or invalid widths/url */
+ 400: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ };
+ };
}
diff --git a/src/lib/cms-media-url.ts b/src/lib/cms-media-url.ts
index 5e24086..d7e184b 100644
--- a/src/lib/cms-media-url.ts
+++ b/src/lib/cms-media-url.ts
@@ -49,26 +49,68 @@ export function normalizeMediaUrl(url: string): string {
return u;
}
+/** Focal-Point aus RustyCMS-`image`-Field ({x,y} in 0..1). */
+export interface CmsFocal {
+ x: number;
+ y: number;
+}
+
+/** Extrahierter Bildfeld-Inhalt: absolute URL + optional focal + alt. */
+export interface CmsImageField {
+ url: string;
+ focal?: CmsFocal;
+ alt?: string;
+}
+
/**
* Wie Image-Block / Galerie / Organisation-Logo: `string` oder Objekt mit `src` / `file.url`.
* Liefert eine für `ensureTransformedImage` nutzbare URL (nach normalizeMediaUrl).
*/
export function absoluteUrlFromCmsImageField(field: unknown): string | null {
+ return extractCmsImageField(field)?.url ?? null;
+}
+
+/**
+ * Wie `absoluteUrlFromCmsImageField`, gibt zusätzlich focal + alt zurück.
+ * Für RustyCMS `type: "image"` Felder: `{ src, alt?, focal?: {x,y}, ... }`.
+ */
+export function extractCmsImageField(field: unknown): CmsImageField | null {
if (typeof field === "string") {
const s = field.trim();
if (!s) return null;
- return normalizeMediaUrl(s.startsWith("//") ? `https:${s}` : s);
+ const url = normalizeMediaUrl(s.startsWith("//") ? `https:${s}` : s);
+ return { url };
}
if (field && typeof field === "object") {
- const o = field as { src?: string; file?: { url?: string } };
- const u =
+ const o = field as {
+ src?: string;
+ file?: { url?: string };
+ fields?: { file?: { url?: string } };
+ focal?: { x?: unknown; y?: unknown };
+ alt?: unknown;
+ };
+ const raw =
typeof o.src === "string" && o.src.trim()
? o.src
: typeof o.file?.url === "string" && o.file.url.trim()
? o.file.url
- : undefined;
- if (!u) return null;
- return normalizeMediaUrl(u.startsWith("//") ? `https:${u}` : u);
+ : typeof o.fields?.file?.url === "string" && o.fields.file.url.trim()
+ ? o.fields.file.url
+ : undefined;
+ if (!raw) return null;
+ const url = normalizeMediaUrl(raw.startsWith("//") ? `https:${raw}` : raw);
+ const fx =
+ typeof o.focal?.x === "number" && Number.isFinite(o.focal.x)
+ ? Math.max(0, Math.min(1, o.focal.x))
+ : undefined;
+ const fy =
+ typeof o.focal?.y === "number" && Number.isFinite(o.focal.y)
+ ? Math.max(0, Math.min(1, o.focal.y))
+ : undefined;
+ const focal =
+ fx !== undefined && fy !== undefined ? { x: fx, y: fy } : undefined;
+ const alt = typeof o.alt === "string" ? o.alt : undefined;
+ return focal ? { url, focal, alt } : alt !== undefined ? { url, alt } : { url };
}
return null;
}
diff --git a/src/lib/rusty-image-types.ts b/src/lib/rusty-image-types.ts
new file mode 100644
index 0000000..16109e6
--- /dev/null
+++ b/src/lib/rusty-image-types.ts
@@ -0,0 +1,18 @@
+/** Pure type definitions related to rusty-image. Lives in a separate file so
+ * client (Svelte) components can import the shape without dragging the
+ * implementation (which uses `node:crypto`/`node:fs`) into the browser bundle. */
+
+/** Responsive `` source set: per-format srcset + fallback + dimensions. */
+export interface ResponsiveImage {
+ /** One srcset string per output format. Order = `` order. */
+ sources: { type: string; srcset: string }[];
+ /** Fallback `
` (typically the largest jpeg variant). */
+ fallback: string;
+ /** Render dimensions for the `
` width/height attrs (prevents CLS). */
+ width: number;
+ height: number;
+ /** All width steps that were actually generated. */
+ widths: number[];
+ /** Optional LQIP (Low-Quality Image Placeholder) as a data-URL, decoded from blurhash. */
+ lqip?: string;
+}
diff --git a/src/lib/rusty-image.ts b/src/lib/rusty-image.ts
index 92f4e81..37c00f2 100644
--- a/src/lib/rusty-image.ts
+++ b/src/lib/rusty-image.ts
@@ -9,8 +9,10 @@ import fs from "node:fs/promises";
import path from "node:path";
import {
absoluteUrlFromCmsImageField,
+ extractCmsImageField,
getCmsBaseUrl,
normalizeMediaUrl,
+ type CmsFocal,
} from "./cms-media-url";
/** Für ältere Importe von `rusty-image`; neue Nutzung: `./cms-media-url`. */
@@ -26,8 +28,12 @@ export interface RustyImageTransformParams {
fit?: "fill" | "contain" | "cover";
/** Ausgabeformat */
format?: "jpeg" | "png" | "webp" | "avif";
- /** JPEG-Qualität 1–100 */
+ /** JPEG/WebP-Qualität 1–100 */
quality?: number;
+ /** Focal-Point X (0..1) für `fit: cover` + `ar` → Crop um Motiv zentrieren. */
+ focalX?: number;
+ /** Focal-Point Y (0..1). */
+ focalY?: number;
}
const DEFAULT_FORMAT = "jpeg";
@@ -65,11 +71,19 @@ export function hashForTransform(
fit: params.fit ?? "contain",
format: params.format ?? DEFAULT_FORMAT,
quality: params.quality ?? 85,
+ fx: normalizeFocalForHash(params.focalX),
+ fy: normalizeFocalForHash(params.focalY),
};
const payload = JSON.stringify(normalized);
return createHash("sha256").update(payload).digest("hex").slice(0, 20);
}
+/** Focal auf 4 Nachkommastellen runden, damit minimale Rundungs-Wackler nicht den Hash ändern. */
+function normalizeFocalForHash(v: number | undefined): number | undefined {
+ if (v == null || !Number.isFinite(v)) return undefined;
+ return Math.round(Math.max(0, Math.min(1, v)) * 10000) / 10000;
+}
+
/**
* Stellt sicher, dass das transformierte Bild in public existiert.
* Wenn nicht: GET an RustyCMS /api/transform, Ergebnis in public/images/transformed/. schreiben.
@@ -139,6 +153,10 @@ export async function ensureTransformedImage(
if (params.format != null) searchParams.set("format", params.format);
if (params.quality != null)
searchParams.set("quality", String(params.quality));
+ if (params.focalX != null && Number.isFinite(params.focalX))
+ searchParams.set("fx", String(normalizeFocalForHash(params.focalX)));
+ if (params.focalY != null && Number.isFinite(params.focalY))
+ searchParams.set("fy", String(normalizeFocalForHash(params.focalY)));
const transformUrl = `${baseUrl}/api/transform?${searchParams.toString()}`;
console.log("[rusty-image] GET", transformUrl);
@@ -166,7 +184,7 @@ type ImageArrayItem = string | { src?: string };
/**
* Löst ein Array von Bild-URLs/Referenzen über die Transform-API auf.
* Akzeptiert string[] oder Objekte mit src (z. B. { _type: "img", src, description }).
- * Gibt ein Array von öffentlichen Pfaden zurück (z. B. für Fullwidth-Banner).
+ * Focal-Point wird automatisch pro Eintrag übernommen, wenn gesetzt.
*/
export async function resolveImageUrls(
items: ImageArrayItem[],
@@ -174,30 +192,285 @@ export async function resolveImageUrls(
): Promise {
const result: string[] = [];
for (const item of items) {
- const u = absoluteUrlFromCmsImageField(item);
- if (!u) continue;
+ const extracted = extractCmsImageField(item);
+ if (!extracted) continue;
+ const perItem: RustyImageTransformParams = {
+ ...params,
+ focalX: params.focalX ?? extracted.focal?.x,
+ focalY: params.focalY ?? extracted.focal?.y,
+ };
try {
- result.push(await ensureTransformedImage(u, params));
+ result.push(await ensureTransformedImage(extracted.url, perItem));
} catch (e) {
- console.warn("[rusty-image] resolve failed for", u, e);
+ console.warn("[rusty-image] resolve failed for", extracted.url, e);
}
}
return result;
}
-/** Holt die Bild-URL aus einem Image-Block (image oder img: string, src oder file.url). */
-function getImageBlockUrl(block: {
- image?: string | { src?: string; file?: { url?: string }; title?: string };
- img?: string | { src?: string; file?: { url?: string }; title?: string };
-}): string | null {
- return absoluteUrlFromCmsImageField(block.image ?? block.img);
+/** AssetInfo vom RustyCMS ?meta=true Endpoint (nur benötigte Felder). */
+interface AssetMeta {
+ width?: number;
+ height?: number;
+ hasAlpha?: boolean;
+ mimeType?: string;
+ blurhash?: string;
}
-/** URL aus einem Galerie-Bildeintrag (src oder file.url). */
-function getGalleryImageUrl(
- img: { src?: string; file?: { url?: string } },
-): string | null {
- return absoluteUrlFromCmsImageField(img);
+/** Prozess-Cache: gleiche URL nicht doppelt abfragen pro Build/SSR. */
+const metaCache = new Map>();
+
+/**
+ * Holt Asset-Metadaten (width/height/...) über `GET /api/assets/?meta=true`.
+ * Nur für RustyCMS-Asset-URLs; andere Hosts → null. Fehler → null (nicht werfen).
+ */
+export async function fetchAssetMeta(url: string): Promise {
+ const absoluteUrl = normalizeMediaUrl(url);
+ if (!absoluteUrl.startsWith("http")) return null;
+ // Nur CMS-Assets unterstützen das meta-Flag.
+ if (!absoluteUrl.includes("/api/assets/")) return null;
+ const cached = metaCache.get(absoluteUrl);
+ if (cached) return cached;
+
+ const job = (async (): Promise => {
+ try {
+ const u = new URL(absoluteUrl);
+ u.searchParams.set("meta", "true");
+ const res = await fetch(u.toString());
+ if (!res.ok) return null;
+ const info = (await res.json()) as {
+ width?: number;
+ height?: number;
+ has_alpha?: boolean;
+ hasAlpha?: boolean;
+ mime_type?: string;
+ mimeType?: string;
+ blurhash?: string;
+ };
+ return {
+ width: typeof info.width === "number" ? info.width : undefined,
+ height: typeof info.height === "number" ? info.height : undefined,
+ hasAlpha:
+ typeof info.hasAlpha === "boolean"
+ ? info.hasAlpha
+ : typeof info.has_alpha === "boolean"
+ ? info.has_alpha
+ : undefined,
+ mimeType: info.mimeType ?? info.mime_type,
+ blurhash:
+ typeof info.blurhash === "string" && info.blurhash.length > 0
+ ? info.blurhash
+ : undefined,
+ };
+ } catch (e) {
+ console.warn("[rusty-image] meta fetch failed for", absoluteUrl, e);
+ return null;
+ }
+ })();
+ metaCache.set(absoluteUrl, job);
+ return job;
+}
+
+/** Ergebnis eines ``-Aufbaus: mehrere Formate + Fallback + Dimensionen.
+ * Identisch zu `ResponsiveImage` in `./rusty-image-types`; doppelt definiert,
+ * damit client-seitige Importe (Svelte) den Typ ohne diese server-only Datei
+ * (node:crypto, node:fs) bekommen können. */
+export interface ResponsiveImage {
+ sources: { type: string; srcset: string }[];
+ fallback: string;
+ width: number;
+ height: number;
+ widths: number[];
+ lqip?: string;
+}
+
+/** Optionen für `ensureResponsiveImage`. */
+export interface ResponsiveImageOptions {
+ /** Kandidaten-Breiten, werden gegen Original-Breite geklampt (keine Upscales). */
+ widths?: number[];
+ /** Seitenverhältnis (wie bei Transform: "16:9"). Wenn gesetzt → Höhe = width / ar. */
+ ar?: string;
+ /** Fit-Modus (Default: `cover` bei ar gesetzt, sonst `contain`). */
+ fit?: "fill" | "contain" | "cover";
+ /** Formate in Reihenfolge. Erstes = bevorzugt (AVIF). Fallback immer als `
`. */
+ formats?: ("avif" | "webp" | "jpeg" | "png")[];
+ /** Qualität (1–100). */
+ quality?: number;
+ /** Focal-Point (0..1). */
+ focal?: CmsFocal;
+ /** LQIP (Blurhash → data-URL) erzeugen, wenn Meta einen Blurhash liefert. Default: true. */
+ lqip?: boolean;
+}
+
+const DEFAULT_WIDTHS = [640, 960, 1280, 1600, 1920, 2400];
+// AVIF intentionally omitted from the default — server-side AVIF encoding is
+// 5-10× slower than WebP and the bandwidth win is marginal for this site.
+// Callers can still opt in via `formats: ["avif", ...]` per call.
+const DEFAULT_FORMATS: ("avif" | "webp" | "jpeg")[] = ["webp", "jpeg"];
+
+function parseAr(ar: string | undefined): number | null {
+ if (!ar) return null;
+ const m = ar.split(":");
+ if (m.length !== 2) return null;
+ const a = Number(m[0]);
+ const b = Number(m[1]);
+ if (!Number.isFinite(a) || !Number.isFinite(b) || a <= 0 || b <= 0) return null;
+ return a / b;
+}
+
+const MIME_FOR_FORMAT: Record = {
+ avif: "image/avif",
+ webp: "image/webp",
+ jpeg: "image/jpeg",
+ png: "image/png",
+};
+
+/** In-memory Cache: gleicher Blurhash → selbe data-URL (einmal dekodieren pro Build). */
+const blurhashCache = new Map>();
+
+/**
+ * Dekodiert einen Blurhash zu einer winzigen JPEG-data-URL (typ. < 1 KB).
+ * 32×32 RGBA-Pixel → sharp raw → JPEG (q=40) → base64. Rendering-seitig als
+ * `background-image` mit CSS-`filter: blur()` + `scale()`-Bleed genutzt.
+ * Fehler → null (LQIP ist optional).
+ */
+export async function blurhashToDataUrl(
+ hash: string,
+ targetWidth = 32,
+ targetHeight = 32,
+): Promise {
+ if (!hash || typeof hash !== "string") return null;
+ const key = `${hash}|${targetWidth}x${targetHeight}`;
+ const cached = blurhashCache.get(key);
+ if (cached) return cached;
+
+ const job = (async (): Promise => {
+ try {
+ const { decode } = await import("blurhash");
+ const sharpMod = await import("sharp");
+ const sharp = sharpMod.default ?? sharpMod;
+ const pixels = decode(hash, targetWidth, targetHeight);
+ const buffer = await sharp(Buffer.from(pixels), {
+ raw: {
+ width: targetWidth,
+ height: targetHeight,
+ channels: 4,
+ },
+ })
+ .jpeg({ quality: 40, progressive: false })
+ .toBuffer();
+ return `data:image/jpeg;base64,${buffer.toString("base64")}`;
+ } catch (e) {
+ console.warn("[rusty-image] blurhash decode failed:", e);
+ return null;
+ }
+ })();
+ blurhashCache.set(key, job);
+ return job;
+}
+
+/**
+ * Baut eine responsive Bildquelle: pro Format ein `srcset` über mehrere Breiten,
+ * plus einen Fallback-`src`. Original-Dimensionen werden vorher via `?meta=true`
+ * abgefragt, damit keine Upscales erzeugt werden und das `
` exakte
+ * width/height-Attribute bekommt (kein CLS).
+ */
+export async function ensureResponsiveImage(
+ url: string,
+ opts: ResponsiveImageOptions = {},
+): Promise {
+ const absoluteUrl = normalizeMediaUrl(url);
+ const requestedWidths = opts.widths && opts.widths.length > 0 ? opts.widths : DEFAULT_WIDTHS;
+ const formats = opts.formats && opts.formats.length > 0 ? opts.formats : DEFAULT_FORMATS;
+ const quality = opts.quality ?? 80;
+ const arValue = parseAr(opts.ar);
+ const effectiveFit: "fill" | "contain" | "cover" =
+ opts.fit ?? (opts.ar ? "cover" : "contain");
+
+ const meta = await fetchAssetMeta(absoluteUrl);
+ const originalWidth = meta?.width;
+ const originalHeight = meta?.height;
+
+ // Keine Upscales: alles > originalWidth weglassen; wenn nichts übrig, originalWidth nehmen.
+ let widths = requestedWidths
+ .map((w) => Math.round(w))
+ .filter((w) => w > 0)
+ .filter((w) => (originalWidth ? w <= originalWidth : true));
+ if (widths.length === 0) {
+ widths = originalWidth
+ ? [originalWidth]
+ : [requestedWidths[requestedWidths.length - 1] ?? 1280];
+ }
+ widths = Array.from(new Set(widths)).sort((a, b) => a - b);
+
+ const largestWidth = widths[widths.length - 1];
+ const renderHeight = arValue
+ ? Math.round(largestWidth / arValue)
+ : originalHeight && originalWidth
+ ? Math.round((largestWidth * originalHeight) / originalWidth)
+ : Math.round(largestWidth * 0.5625); // 16:9 als letzter Fallback
+
+ const sources: { type: string; srcset: string }[] = [];
+ let fallback = "";
+
+ for (const format of formats) {
+ const parts: string[] = [];
+ for (const w of widths) {
+ const params: RustyImageTransformParams = {
+ width: w,
+ fit: effectiveFit,
+ format,
+ quality,
+ focalX: opts.focal?.x,
+ focalY: opts.focal?.y,
+ };
+ if (opts.ar) params.ar = opts.ar;
+ // Bei fit=cover + ar: Höhe explizit setzen, sonst würde nur „ar-Crop" greifen ohne Skalierung.
+ if (arValue && (effectiveFit === "cover" || effectiveFit === "fill")) {
+ params.height = Math.round(w / arValue);
+ }
+ try {
+ const path = await ensureTransformedImage(absoluteUrl, params);
+ parts.push(`${path} ${w}w`);
+ fallback = path;
+ } catch (e) {
+ console.warn("[rusty-image] responsive variant failed", format, w, e);
+ }
+ }
+ if (parts.length > 0) {
+ sources.push({ type: MIME_FOR_FORMAT[format] ?? "image/jpeg", srcset: parts.join(", ") });
+ }
+ }
+
+ let lqip: string | undefined;
+ if ((opts.lqip ?? true) && meta?.blurhash) {
+ const dataUrl = await blurhashToDataUrl(meta.blurhash);
+ if (dataUrl) lqip = dataUrl;
+ }
+
+ return {
+ sources,
+ fallback,
+ width: largestWidth,
+ height: renderHeight,
+ widths,
+ ...(lqip ? { lqip } : {}),
+ };
+}
+
+/** Holt URL + focal aus einem Image-Block (image oder img). */
+function getImageBlockField(block: {
+ image?: unknown;
+ img?: unknown;
+}) {
+ return extractCmsImageField(block.image ?? block.img);
+}
+
+/** URL + focal aus einem Galerie-Bildeintrag (src oder file.url). */
+function getGalleryImageField(
+ img: unknown,
+) {
+ return extractCmsImageField(img);
}
/** RowContentLayout-typ: Zeilen mit content-Arrays. */
@@ -427,33 +700,66 @@ export async function resolveContentImages(
continue;
}
if (block._type === "image") {
- const url = getImageBlockUrl(
- block as {
- image?: string | { file?: { url?: string }; title?: string };
- img?: string | { file?: { url?: string }; title?: string };
- },
- );
- if (!url) continue;
+ const field = getImageBlockField(block);
+ if (!field) continue;
try {
- block.resolvedImageSrc = await ensureTransformedImage(
- url,
- transformParams,
- );
+ // Build responsive variants. Body-image widths target the typical
+ // article column on mobile/tablet/desktop; AVIF/WebP/JPEG fallback.
+ // Conservative variant matrix to keep build time bounded — body images
+ // get 2 widths × WebP/JPEG (skip AVIF here since AVIF encoding on the
+ // CMS is the slowest step). Hero/banner uses a richer set in Layout.astro.
+ const responsive = await ensureResponsiveImage(field.url, {
+ widths: [600, 1200],
+ formats: ["webp", "jpeg"],
+ quality: 80,
+ focal: field.focal,
+ ...(transformParams.ar ? { ar: transformParams.ar } : {}),
+ ...(transformParams.fit ? { fit: transformParams.fit } : {}),
+ });
+ (block as unknown as { resolvedResponsive?: ResponsiveImage }).resolvedResponsive = responsive;
+ block.resolvedImageSrc = responsive.fallback;
} catch (e) {
- console.warn("[rusty-image] resolve failed for", url, e);
+ console.warn("[rusty-image] resolve failed for", field.url, e);
+ // Fallback: legacy single transform so the block still renders.
+ try {
+ block.resolvedImageSrc = await ensureTransformedImage(field.url, {
+ ...transformParams,
+ focalX: transformParams.focalX ?? field.focal?.x,
+ focalY: transformParams.focalY ?? field.focal?.y,
+ });
+ } catch {
+ // give up — ImageBlock shows "Bild nicht verfügbar"
+ }
}
continue;
}
if (block._type === "image_gallery" && Array.isArray(block.images)) {
for (const img of block.images) {
if (!img || typeof img !== "object") continue;
- const url = getGalleryImageUrl(img);
- if (!url) continue;
+ const field = getGalleryImageField(img);
+ if (!field) continue;
try {
- (img as { resolvedSrc?: string }).resolvedSrc =
- await ensureTransformedImage(url, galleryParams);
+ const responsive = await ensureResponsiveImage(field.url, {
+ widths: [600, 1280],
+ formats: ["webp", "jpeg"],
+ quality: 80,
+ focal: field.focal,
+ fit: "contain",
+ });
+ (img as { resolvedResponsive?: ResponsiveImage }).resolvedResponsive = responsive;
+ (img as { resolvedSrc?: string }).resolvedSrc = responsive.fallback;
} catch (e) {
- console.warn("[rusty-image] gallery resolve failed for", url, e);
+ console.warn("[rusty-image] gallery responsive failed for", field.url, e);
+ try {
+ (img as { resolvedSrc?: string }).resolvedSrc =
+ await ensureTransformedImage(field.url, {
+ ...galleryParams,
+ focalX: galleryParams.focalX ?? field.focal?.x,
+ focalY: galleryParams.focalY ?? field.focal?.y,
+ });
+ } catch {
+ // give up
+ }
}
}
continue;
diff --git a/src/lib/server-image.ts b/src/lib/server-image.ts
new file mode 100644
index 0000000..34668ff
--- /dev/null
+++ b/src/lib/server-image.ts
@@ -0,0 +1,19 @@
+/** Server-only helpers around `rusty-image`. Lives in its own file so client
+ * (Svelte) components that import other utilities from `blog-utils` don't
+ * accidentally pull `node:crypto`/`node:fs` into the browser bundle. */
+
+import { ensureResponsiveImage, type ResponsiveImage } from "./rusty-image";
+
+/** Build the standard post-card responsive image (3:2 cover, WebP/JPEG, mobile→desktop widths). */
+export async function resolvePostCardResponsive(
+ field: { url: string; focal?: { x: number; y: number } },
+): Promise {
+ return ensureResponsiveImage(field.url, {
+ widths: [400, 800],
+ formats: ["webp", "jpeg"],
+ ar: "3:2",
+ fit: "cover",
+ quality: 78,
+ focal: field.focal,
+ });
+}
diff --git a/src/pages/post/[slug].astro b/src/pages/post/[slug].astro
index 0f6527f..53d8a27 100644
--- a/src/pages/post/[slug].astro
+++ b/src/pages/post/[slug].astro
@@ -22,7 +22,7 @@ import {
resolvePostTagsInPost,
resolvePostOverviewBlocks,
resolveSearchableTextBlocks,
- getPostImageUrl,
+ getPostImageField,
formatPostDate,
} from "../../lib/blog-utils";
import { POST_RESOLVE } from "../../lib/constants";
@@ -60,12 +60,14 @@ const tagsMap = await resolvePostOverviewBlocks(post);
await resolveSearchableTextBlocks(post, tagsMap);
resolvePostTagsInPost(post, tagsMap);
-const rawPostImageUrl = getPostImageUrl(post.postImage);
-const postImageUrl = rawPostImageUrl
- ? await ensureTransformedImage(rawPostImageUrl, {
+const postImageField = getPostImageField(post.postImage);
+const postImageUrl = postImageField
+ ? await ensureTransformedImage(postImageField.url, {
width: 150,
height: 200,
fit: "cover",
+ focalX: postImageField.focal?.x,
+ focalY: postImageField.focal?.y,
})
: null;
diff --git a/src/pages/posts/index.astro b/src/pages/posts/index.astro
index 1227696..7bcc4fb 100644
--- a/src/pages/posts/index.astro
+++ b/src/pages/posts/index.astro
@@ -14,7 +14,7 @@ import {
getPostsPerPage,
getTagsMap,
resolvePostTagsInPost,
- getPostImageUrl,
+ getPostImageField,
buildPostSearchIndex,
selectUpcomingEvents,
} from '../../lib/blog-utils';
@@ -32,13 +32,18 @@ try {
const tagsMap = await getTagsMap();
for (const p of posts) resolvePostTagsInPost(p, tagsMap);
// Resolve post card images
- const { ensureTransformedImage } = await import('../../lib/rusty-image');
+ const { resolvePostCardResponsive } = await import('../../lib/server-image');
for (const post of posts) {
- const raw = getPostImageUrl(post.postImage);
- if (raw) {
+ const field = getPostImageField(post.postImage);
+ if (field) {
try {
- const url = await ensureTransformedImage(raw, { width: 400, height: 267, fit: 'cover', format: 'webp' });
- (post as typeof post & { _resolvedImageUrl?: string })._resolvedImageUrl = url;
+ const responsive = await resolvePostCardResponsive(field);
+ const target = post as typeof post & {
+ _resolvedImageUrl?: string;
+ _resolvedResponsive?: Awaited>;
+ };
+ target._resolvedResponsive = responsive;
+ target._resolvedImageUrl = responsive.fallback;
} catch { /* image optional */ }
}
}
diff --git a/src/pages/posts/page/[page].astro b/src/pages/posts/page/[page].astro
index 4d19085..f98974e 100644
--- a/src/pages/posts/page/[page].astro
+++ b/src/pages/posts/page/[page].astro
@@ -9,7 +9,7 @@ import {
getTotalPages,
paginate,
getPostsPerPage,
- getPostImageUrl,
+ getPostImageField,
buildPostSearchIndex,
selectUpcomingEvents,
} from '../../../lib/blog-utils';
@@ -43,13 +43,18 @@ let cmsError: string | null = null;
try {
[posts, tags] = await Promise.all([getPosts({ resolve: ['postImage'] }), getTags()]);
posts = filterHiddenPosts(sortPostsByDate(posts));
- const { ensureTransformedImage } = await import('../../../lib/rusty-image');
+ const { resolvePostCardResponsive } = await import('../../../lib/server-image');
for (const post of posts) {
- const raw = getPostImageUrl(post.postImage);
- if (raw) {
+ const field = getPostImageField(post.postImage);
+ if (field) {
try {
- const url = await ensureTransformedImage(raw, { width: 400, height: 267, fit: 'cover', format: 'webp' });
- (post as typeof post & { _resolvedImageUrl?: string })._resolvedImageUrl = url;
+ const responsive = await resolvePostCardResponsive(field);
+ const target = post as typeof post & {
+ _resolvedImageUrl?: string;
+ _resolvedResponsive?: Awaited>;
+ };
+ target._resolvedResponsive = responsive;
+ target._resolvedImageUrl = responsive.fallback;
} catch { /* image optional */ }
}
}
diff --git a/src/pages/posts/tag/[tag].astro b/src/pages/posts/tag/[tag].astro
index dd089cc..29f9c51 100644
--- a/src/pages/posts/tag/[tag].astro
+++ b/src/pages/posts/tag/[tag].astro
@@ -11,7 +11,7 @@ import {
getPostsPerPage,
getTagsMap,
resolvePostTagsInPost,
- getPostImageUrl,
+ getPostImageField,
buildPostSearchIndex,
selectUpcomingEvents,
} from '../../../lib/blog-utils';
@@ -56,10 +56,17 @@ try {
for (const p of posts) resolvePostTagsInPost(p, tagsMap);
const { ensureTransformedImage } = await import('../../../lib/rusty-image');
for (const post of posts) {
- const raw = getPostImageUrl(post.postImage);
- if (raw) {
+ const field = getPostImageField(post.postImage);
+ if (field) {
try {
- const url = await ensureTransformedImage(raw, { width: 400, height: 267, fit: 'cover', format: 'webp' });
+ const url = await ensureTransformedImage(field.url, {
+ width: 400,
+ height: 267,
+ fit: 'cover',
+ format: 'webp',
+ focalX: field.focal?.x,
+ focalY: field.focal?.y,
+ });
(post as typeof post & { _resolvedImageUrl?: string })._resolvedImageUrl = url;
} catch { /* image optional */ }
}
diff --git a/src/pages/posts/tag/[tag]/page/[page].astro b/src/pages/posts/tag/[tag]/page/[page].astro
index 2bf3866..3f53588 100644
--- a/src/pages/posts/tag/[tag]/page/[page].astro
+++ b/src/pages/posts/tag/[tag]/page/[page].astro
@@ -11,7 +11,7 @@ import {
getPostsPerPage,
getTagsMap,
resolvePostTagsInPost,
- getPostImageUrl,
+ getPostImageField,
buildPostSearchIndex,
selectUpcomingEvents,
} from '../../../../../lib/blog-utils';
@@ -66,13 +66,18 @@ try {
posts = filterHiddenPosts(sortPostsByDate(posts));
const tagsMap = await getTagsMap();
for (const p of posts) resolvePostTagsInPost(p, tagsMap);
- const { ensureTransformedImage } = await import('../../../../../lib/rusty-image');
+ const { resolvePostCardResponsive } = await import('../../../../../lib/server-image');
for (const post of posts) {
- const raw = getPostImageUrl(post.postImage);
- if (raw) {
+ const field = getPostImageField(post.postImage);
+ if (field) {
try {
- const url = await ensureTransformedImage(raw, { width: 400, height: 267, fit: 'cover', format: 'webp' });
- (post as typeof post & { _resolvedImageUrl?: string })._resolvedImageUrl = url;
+ const responsive = await resolvePostCardResponsive(field);
+ const target = post as typeof post & {
+ _resolvedImageUrl?: string;
+ _resolvedResponsive?: Awaited>;
+ };
+ target._resolvedResponsive = responsive;
+ target._resolvedImageUrl = responsive.fallback;
} catch { /* image optional */ }
}
}
diff --git a/yarn.lock b/yarn.lock
index 86c2041..1590c22 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1933,6 +1933,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+blurhash@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-2.0.5.tgz#efde729fc14a2f03571a6aa91b49cba80d1abe4b"
+ integrity sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==
+
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"