From 1bab98d916e5b76a2017e3dcc463e40bda129e08 Mon Sep 17 00:00:00 2001 From: Boris Cherny Date: Mon, 16 May 2022 00:56:05 +0900 Subject: [PATCH] Optimize optimizer to avoid deep JSON serialization (fix #422) --- package.json | 1 - src/generator.ts | 5 +- src/index.ts | 2 +- src/optimizer.ts | 44 +- test/__snapshots__/test/test.ts.md | 2921 ++++++- test/__snapshots__/test/test.ts.snap | Bin 31150 -> 35453 bytes test/e2e/optimize.2.ts | 16 + test/e2e/realWorld.payloadCMS.ts | 10935 +++++++++++++++++++++++++ types/fast-diff.d.ts | 15 - types/json-stringify-safe.d.ts | 9 - yarn.lock | 5 - 11 files changed, 13901 insertions(+), 52 deletions(-) create mode 100644 test/e2e/optimize.2.ts create mode 100644 test/e2e/realWorld.payloadCMS.ts delete mode 100644 types/fast-diff.d.ts delete mode 100644 types/json-stringify-safe.d.ts diff --git a/package.json b/package.json index adca8c59..03b96ffc 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "glob-promise": "^3.4.0", "is-glob": "^4.0.1", "json-schema-ref-parser": "^9.0.9", - "json-stringify-safe": "^5.0.1", "lodash": "^4.17.20", "minimist": "^1.2.5", "mkdirp": "^1.0.4", diff --git a/src/generator.ts b/src/generator.ts index 077cc5a4..b4ef1931 100644 --- a/src/generator.ts +++ b/src/generator.ts @@ -1,4 +1,4 @@ -import {omit} from 'lodash' +import {memoize, omit} from 'lodash' import {DEFAULT_OPTIONS, Options} from './index' import { AST, @@ -156,7 +156,7 @@ function declareNamedTypes(ast: AST, options: Options, rootASTName: string, proc return type } -function generateType(ast: AST, options: Options): string { +function generateTypeUnmemoized(ast: AST, options: Options): string { const type = generateRawType(ast, options) if (options.strictIndexSignatures && ast.keyName === '[k: string]') { @@ -165,6 +165,7 @@ function generateType(ast: AST, options: Options): string { return type } +export const generateType = memoize(generateTypeUnmemoized) function generateRawType(ast: AST, options: Options): string { log('magenta', 'generator', ast) diff --git a/src/index.ts b/src/index.ts index cacc4118..632b7e9e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -157,7 +157,7 @@ export async function compile(schema: JSONSchema4, name: string, options: Partia const parsed = parse(normalized, _options) log('blue', 'parser', time(), '✅ Result:', parsed) - const optimized = optimize(parsed) + const optimized = optimize(parsed, _options) if (process.env.VERBOSE) { if (isDeepStrictEqual(parsed, optimized)) { log('cyan', 'optimizer', time(), '✅ No change') diff --git a/src/optimizer.ts b/src/optimizer.ts index b96f8a73..b7ccc628 100644 --- a/src/optimizer.ts +++ b/src/optimizer.ts @@ -1,11 +1,10 @@ -import stringify = require('json-stringify-safe') import {uniqBy} from 'lodash' +import {Options} from '.' +import {generateType} from './generator' import {AST, T_ANY, T_UNKNOWN} from './types/AST' import {log} from './utils' -export function optimize(ast: AST, processed = new Set()): AST { - log('cyan', 'optimizer', ast, processed.has(ast) ? '(FROM CACHE)' : '') - +export function optimize(ast: AST, options: Options, processed = new Set()): AST { if (processed.has(ast)) { return ast } @@ -15,7 +14,7 @@ export function optimize(ast: AST, processed = new Set()): AST { switch (ast.type) { case 'INTERFACE': return Object.assign(ast, { - params: ast.params.map(_ => Object.assign(_, {ast: optimize(_.ast, processed)})) + params: ast.params.map(_ => Object.assign(_, {ast: optimize(_.ast, options, processed)})) }) case 'INTERSECTION': case 'UNION': @@ -31,25 +30,40 @@ export function optimize(ast: AST, processed = new Set()): AST { return T_UNKNOWN } + // [A (named), A] -> [A (named)] + if ( + ast.params.every(_ => { + const a = generateType(omitStandaloneName(_), options) + const b = generateType(omitStandaloneName(ast.params[0]), options) + return a === b + }) && + ast.params.some(_ => _.standaloneName !== undefined) + ) { + log('cyan', 'optimizer', '[A, B, B] -> [A, B]', ast) + ast.params = ast.params.filter(_ => _.standaloneName !== undefined) + } + // [A, B, B] -> [A, B] - const shouldTakeStandaloneNameIntoAccount = ast.params.filter(_ => _.standaloneName).length > 1 - const params = uniqBy( - ast.params, - _ => ` - ${_.type}- - ${shouldTakeStandaloneNameIntoAccount ? _.standaloneName : ''}- - ${stringify((_ as any).params)} - ` - ) + const params = uniqBy(ast.params, _ => `${_.standaloneName}:${generateType(_, options)}`) if (params.length !== ast.params.length) { log('cyan', 'optimizer', '[A, B, B] -> [A, B]', ast) ast.params = params } return Object.assign(ast, { - params: ast.params.map(_ => optimize(_, processed)) + params: ast.params.map(_ => optimize(_, options, processed)) }) default: return ast } } + +// TODO: More clearly disambiguate standalone names vs. aliased names instead. +function omitStandaloneName(ast: A): A { + switch (ast.type) { + case 'ENUM': + return ast + default: + return {...ast, standaloneName: undefined} + } +} diff --git a/test/__snapshots__/test/test.ts.md b/test/__snapshots__/test/test.ts.md index 6c644cd9..57fc6bad 100644 --- a/test/__snapshots__/test/test.ts.md +++ b/test/__snapshots__/test/test.ts.md @@ -4,6 +4,25 @@ The actual snapshot is saved in `test.ts.snap`. Generated by [AVA](https://avajs.dev). +## optimize.2.js + +> Expected output to match snapshot for e2e test: optimize.2.js + + `/* tslint:disable */␊ + /**␊ + * This file was automatically generated by json-schema-to-typescript.␊ + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊ + * and run json-schema-to-typescript to regenerate this file.␊ + */␊ + ␊ + export type Bar = string;␊ + ␊ + export interface OptimizableSchema2 {␊ + foo: Bar;␊ + [k: string]: unknown;␊ + }␊ + ` + ## JSONSchema.js > Expected output to match snapshot for e2e test: JSONSchema.js @@ -1087,9 +1106,17 @@ Generated by [AVA](https://avajs.dev). | {␊ [k: string]: unknown;␊ }␊ - | {␊ + | ({␊ [k: string]: unknown;␊ - };␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + });␊ /**␊ * Parameter location␊ */␊ @@ -5837,9 +5864,17 @@ Generated by [AVA](https://avajs.dev). | {␊ [k: string]: unknown;␊ }␊ - | {␊ + | ({␊ [k: string]: unknown;␊ - };␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + } & {␊ + [k: string]: unknown;␊ + });␊ /**␊ * Parameter location␊ */␊ @@ -6315,6 +6350,2884 @@ Generated by [AVA](https://avajs.dev). }␊ ` +## realWorld.payloadCMS.js + +> Expected output to match snapshot for e2e test: realWorld.payloadCMS.js + + `/* tslint:disable */␊ + /**␊ + * This file was automatically generated by json-schema-to-typescript.␊ + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊ + * and run json-schema-to-typescript to regenerate this file.␊ + */␊ + ␊ + export interface RealWorld {}␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "mainMenu".␊ + */␊ + export interface MainMenu {␊ + items?: {␊ + type?: "link" | "subMenu";␊ + label: string;␊ + subMenu?: {␊ + column1?: (␊ + | {␊ + appearance?: "primary" | "secondary" | "arrow";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuLink";␊ + }␊ + | {␊ + content: string;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuDescription";␊ + }␊ + | {␊ + media: string | Media;␊ + headline: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuFeature";␊ + }␊ + )[];␊ + enableColumn2?: boolean;␊ + column2?: (␊ + | {␊ + appearance?: "primary" | "secondary" | "arrow";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuLink";␊ + }␊ + | {␊ + content: string;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuDescription";␊ + }␊ + | {␊ + media: string | Media;␊ + headline: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuFeature";␊ + }␊ + )[];␊ + };␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + secondaryItems?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "pages".␊ + */␊ + export interface Page {␊ + breadcrumbs?: {␊ + doc?: string | Page;␊ + url?: string;␊ + label?: string;␊ + id?: string;␊ + }[];␊ + title: string;␊ + showBreadcrumbs?: boolean;␊ + hero?: {␊ + type:␊ + | "basic"␊ + | "content"␊ + | "contentMedia"␊ + | "contentMedia2"␊ + | "contentSidebar"␊ + | "columnsBelow"␊ + | "quickNav"␊ + | "fullscreenBackground"␊ + | "fullscreenSlider";␊ + basic?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + content?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + contentMedia?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + media: string | Media;␊ + };␊ + contentMedia2?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + media: string | Media;␊ + };␊ + contentSidebar?: {␊ + mainContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + sidebarContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + };␊ + columnsBelow?: {␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + columns?: {␊ + heading: string;␊ + description: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + fullscreenBackground?: {␊ + invertColors?: boolean;␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + quickNav?: {␊ + invertColors?: boolean;␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + columns?: {␊ + heading: string;␊ + description: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + fullscreenSlider?: {␊ + useStaticContent?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + slides?: {␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + };␊ + };␊ + layout?: (␊ + | {␊ + appearance?: "default" | "condensed";␊ + sections?: {␊ + label: string;␊ + openOnInit?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "accordion";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "blackbaudForm";␊ + }␊ + | {␊ + invertColors?: boolean;␊ + backgroundMedia?: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "callToAction";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + cards?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media?: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardSlider";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + media1?: string | Media;␊ + media2?: string | Media;␊ + media3?: string | Media;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "careerSearch";␊ + }␊ + | {␊ + enableGrayBackground?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "content";␊ + }␊ + | {␊ + cellWidth?: "two" | "three";␊ + invertColors?: boolean;␊ + enableCellNumbers?: boolean;␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cells?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentSlider";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "housingMap";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "housingList";␊ + }␊ + | {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + form: string | Form;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "embeddedForm";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + locations?: (string | Location)[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "locations";␊ + }␊ + | {␊ + media: string | Media;␊ + useVimeo?: boolean;␊ + vimeoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + size?: "normal" | "wide" | "fullscreen";␊ + caption?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "media";␊ + }␊ + | {␊ + collage?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaCollage";␊ + }␊ + | {␊ + alignment: "contentOnLeft" | "contentOnRight";␊ + overlap?: boolean;␊ + invertColors?: boolean;␊ + richText: {␊ + [k: string]: unknown;␊ + }[];␊ + media: string | Media;␊ + embeddedVideo?: {␊ + embed?: boolean;␊ + poster?: string | Media;␊ + platform?: "youtube" | "vimeo";␊ + videoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + };␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaContent";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaSlider";␊ + }␊ + | {␊ + items?: {␊ + label: string;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "stickyList";␊ + }␊ + | {␊ + id?: string;␊ + blockName?: string;␊ + blockType: "divider";␊ + }␊ + )[];␊ + fullTitle?: string;␊ + excerpt?: string;␊ + meta?: {␊ + title?: string;␊ + description?: string;␊ + keywords?: string;␊ + image?: string | Media;␊ + };␊ + status?: "published" | "draft";␊ + slug?: string;␊ + parent?: string | Page;␊ + subsite?: string | Subsite;␊ + color?: "green" | "blue" | "red" | "purple";␊ + author?: string | User;␊ + preview?: string;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "posts".␊ + */␊ + export interface Post {␊ + title: string;␊ + hero?: {␊ + type:␊ + | "basic"␊ + | "content"␊ + | "contentMedia"␊ + | "contentMedia2"␊ + | "contentSidebar"␊ + | "columnsBelow"␊ + | "quickNav"␊ + | "fullscreenBackground"␊ + | "fullscreenSlider";␊ + basic?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + content?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + contentMedia?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + media: string | Media;␊ + };␊ + contentMedia2?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + media: string | Media;␊ + };␊ + contentSidebar?: {␊ + mainContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + sidebarContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + };␊ + columnsBelow?: {␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + columns?: {␊ + heading: string;␊ + description: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + fullscreenBackground?: {␊ + invertColors?: boolean;␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + quickNav?: {␊ + invertColors?: boolean;␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + columns?: {␊ + heading: string;␊ + description: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + };␊ + fullscreenSlider?: {␊ + useStaticContent?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + slides?: {␊ + backgroundMedia: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + };␊ + };␊ + layout?: (␊ + | {␊ + appearance?: "default" | "condensed";␊ + sections?: {␊ + label: string;␊ + openOnInit?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "accordion";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "blackbaudForm";␊ + }␊ + | {␊ + invertColors?: boolean;␊ + backgroundMedia?: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "callToAction";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + cards?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media?: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardSlider";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + media1?: string | Media;␊ + media2?: string | Media;␊ + media3?: string | Media;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "careerSearch";␊ + }␊ + | {␊ + enableGrayBackground?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "content";␊ + }␊ + | {␊ + cellWidth?: "two" | "three";␊ + invertColors?: boolean;␊ + enableCellNumbers?: boolean;␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cells?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentSlider";␊ + }␊ + | {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + form: string | Form;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "embeddedForm";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "housingMap";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "housingList";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + locations?: (string | Location)[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "locations";␊ + }␊ + | {␊ + media: string | Media;␊ + useVimeo?: boolean;␊ + vimeoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + size?: "normal" | "wide" | "fullscreen";␊ + caption?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "media";␊ + }␊ + | {␊ + collage?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaCollage";␊ + }␊ + | {␊ + alignment: "contentOnLeft" | "contentOnRight";␊ + overlap?: boolean;␊ + invertColors?: boolean;␊ + richText: {␊ + [k: string]: unknown;␊ + }[];␊ + media: string | Media;␊ + embeddedVideo?: {␊ + embed?: boolean;␊ + poster?: string | Media;␊ + platform?: "youtube" | "vimeo";␊ + videoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + };␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaContent";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaSlider";␊ + }␊ + | {␊ + items?: {␊ + label: string;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "stickyList";␊ + }␊ + | {␊ + id?: string;␊ + blockName?: string;␊ + blockType: "divider";␊ + }␊ + )[];␊ + slug?: string;␊ + category: string | PostCategory;␊ + subsite?: string | Subsite;␊ + meta?: {␊ + title?: string;␊ + description?: string;␊ + keywords?: string;␊ + image?: string | Media;␊ + };␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "housing".␊ + */␊ + export interface Housing {␊ + title: string;␊ + address?: {␊ + line1?: string;␊ + line2?: string;␊ + city?: string;␊ + state?:␊ + | "None"␊ + | "Alabama"␊ + | "Alaska"␊ + | "Arizona"␊ + | "Arkansas"␊ + | "California"␊ + | "Colorado"␊ + | "Connecticut"␊ + | "Delaware"␊ + | "Florida"␊ + | "Georgia"␊ + | "Hawaii"␊ + | "Idaho"␊ + | "Illinois"␊ + | "Indiana"␊ + | "Iowa"␊ + | "Kansas"␊ + | "Kentucky"␊ + | "Louisiana"␊ + | "Maine"␊ + | "Maryland"␊ + | "Massachusetts"␊ + | "Michigan"␊ + | "Minnesota"␊ + | "Mississippi"␊ + | "Missouri"␊ + | "Montana"␊ + | "Nebraska"␊ + | "Nevada"␊ + | "New Hampshire"␊ + | "New Jersey"␊ + | "New Mexico"␊ + | "New York"␊ + | "North Carolina"␊ + | "North Dakota"␊ + | "Ohio"␊ + | "Oklahoma"␊ + | "Oregon"␊ + | "Pennsylvania"␊ + | "Rhode Island"␊ + | "South Carolina"␊ + | "South Dakota"␊ + | "Tennessee"␊ + | "Texas"␊ + | "Utah"␊ + | "Vermont"␊ + | "Virginia"␊ + | "Washington"␊ + | "West Virginia"␊ + | "Wisconsin"␊ + | "Wyoming";␊ + zip?: string;␊ + coords?: {␊ + lat?: number;␊ + lng?: number;␊ + };␊ + };␊ + contacts?: {␊ + type?: "mailto" | "tel" | "fax";␊ + label?: string;␊ + value?: string;␊ + id?: string;␊ + }[];␊ + layout?: (␊ + | {␊ + appearance?: "default" | "condensed";␊ + sections?: {␊ + label: string;␊ + openOnInit?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "accordion";␊ + }␊ + | {␊ + invertColors?: boolean;␊ + backgroundMedia?: string | Media;␊ + useOverlay?: boolean;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "callToAction";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + cards?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media?: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + cardStyle: "fullBG" | "insetImage" | "noImage";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + media: string | Media;␊ + useOverlay?: boolean;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "cardSlider";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + media1?: string | Media;␊ + media2?: string | Media;␊ + media3?: string | Media;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "careerSearch";␊ + }␊ + | {␊ + enableGrayBackground?: boolean;␊ + columns?: {␊ + width: "oneThird" | "half" | "twoThirds" | "full";␊ + alignment: "left" | "center" | "right";␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "content";␊ + }␊ + | {␊ + cellWidth?: "two" | "three";␊ + invertColors?: boolean;␊ + enableCellNumbers?: boolean;␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + cells?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentGrid";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "contentSlider";␊ + }␊ + | {␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + form: string | Form;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "embeddedForm";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + locations?: (string | Location)[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "locations";␊ + }␊ + | {␊ + media: string | Media;␊ + useVimeo?: boolean;␊ + vimeoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + size?: "normal" | "wide" | "fullscreen";␊ + caption?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "media";␊ + }␊ + | {␊ + collage?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaCollage";␊ + }␊ + | {␊ + alignment: "contentOnLeft" | "contentOnRight";␊ + overlap?: boolean;␊ + invertColors?: boolean;␊ + richText: {␊ + [k: string]: unknown;␊ + }[];␊ + media: string | Media;␊ + embeddedVideo?: {␊ + embed?: boolean;␊ + poster?: string | Media;␊ + platform?: "youtube" | "vimeo";␊ + videoID: string;␊ + aspectRatio?: "56.25" | "75";␊ + };␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaContent";␊ + }␊ + | {␊ + introContent?: {␊ + [k: string]: unknown;␊ + }[];␊ + backgroundType?: "light" | "color";␊ + slides?: {␊ + media: string | Media;␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "mediaSlider";␊ + }␊ + | {␊ + items?: {␊ + label: string;␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + enableLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "stickyList";␊ + }␊ + )[];␊ + meta?: {␊ + title?: string;␊ + description?: string;␊ + keywords?: string;␊ + image?: string | Media;␊ + };␊ + slug?: string;␊ + categories?: (string | HousingCategory)[];␊ + subsite?: string | Subsite;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "media".␊ + */␊ + export interface Media {␊ + url?: string;␊ + filename?: string;␊ + mimeType?: string;␊ + filesize?: number;␊ + width?: number;␊ + height?: number;␊ + sizes?: {␊ + thumbnail?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + card?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + portrait?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + square?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + feature?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + meta?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + hero?: {␊ + url?: string;␊ + width?: number;␊ + height?: number;␊ + mimeType?: string;␊ + filesize?: number;␊ + filename?: string;␊ + };␊ + };␊ + alt: string;␊ + fallback?: string | Media;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "forms".␊ + */␊ + export interface Form {␊ + title: string;␊ + emailTo?: string;␊ + successMessage?: {␊ + [k: string]: unknown;␊ + }[];␊ + redirect?: string;␊ + submitButtonLabel?: string;␊ + fields?: (␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + defaultValue?: string;␊ + required?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "text";␊ + }␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + defaultValue?: string;␊ + options?: {␊ + label: string;␊ + value: string;␊ + id?: string;␊ + }[];␊ + required?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "select";␊ + }␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + required?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "email";␊ + }␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + required?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "state";␊ + }␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + required?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "country";␊ + }␊ + | {␊ + name: string;␊ + label: string;␊ + width?: number;␊ + required?: boolean;␊ + defaultValue?: boolean;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "checkbox";␊ + }␊ + | {␊ + message?: {␊ + [k: string]: unknown;␊ + }[];␊ + id?: string;␊ + blockName?: string;␊ + blockType: "message";␊ + }␊ + )[];␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "locations".␊ + */␊ + export interface Location {␊ + name: string;␊ + address?: {␊ + line1?: string;␊ + line2?: string;␊ + city?: string;␊ + state?:␊ + | "None"␊ + | "Alabama"␊ + | "Alaska"␊ + | "Arizona"␊ + | "Arkansas"␊ + | "California"␊ + | "Colorado"␊ + | "Connecticut"␊ + | "Delaware"␊ + | "Florida"␊ + | "Georgia"␊ + | "Hawaii"␊ + | "Idaho"␊ + | "Illinois"␊ + | "Indiana"␊ + | "Iowa"␊ + | "Kansas"␊ + | "Kentucky"␊ + | "Louisiana"␊ + | "Maine"␊ + | "Maryland"␊ + | "Massachusetts"␊ + | "Michigan"␊ + | "Minnesota"␊ + | "Mississippi"␊ + | "Missouri"␊ + | "Montana"␊ + | "Nebraska"␊ + | "Nevada"␊ + | "New Hampshire"␊ + | "New Jersey"␊ + | "New Mexico"␊ + | "New York"␊ + | "North Carolina"␊ + | "North Dakota"␊ + | "Ohio"␊ + | "Oklahoma"␊ + | "Oregon"␊ + | "Pennsylvania"␊ + | "Rhode Island"␊ + | "South Carolina"␊ + | "South Dakota"␊ + | "Tennessee"␊ + | "Texas"␊ + | "Utah"␊ + | "Vermont"␊ + | "Virginia"␊ + | "Washington"␊ + | "West Virginia"␊ + | "Wisconsin"␊ + | "Wyoming";␊ + zip?: string;␊ + coords?: {␊ + lat?: number;␊ + lng?: number;␊ + };␊ + };␊ + contacts?: {␊ + type?: "mailto" | "tel" | "fax";␊ + label?: string;␊ + value?: string;␊ + id?: string;␊ + }[];␊ + meta?: {␊ + title?: string;␊ + description?: string;␊ + keywords?: string;␊ + image?: string | Media;␊ + };␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "housing-categories".␊ + */␊ + export interface HousingCategory {␊ + title: string;␊ + slug?: string;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "subsites".␊ + */␊ + export interface Subsite {␊ + title: string;␊ + menuItems?: {␊ + type?: "link" | "subMenu";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + label: string;␊ + subMenu?: {␊ + column1?: (␊ + | {␊ + appearance?: "primary" | "secondary" | "arrow";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuLink";␊ + }␊ + | {␊ + content: string;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuDescription";␊ + }␊ + | {␊ + media: string | Media;␊ + headline: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuFeature";␊ + }␊ + )[];␊ + enableColumn2?: boolean;␊ + column2?: (␊ + | {␊ + appearance?: "primary" | "secondary" | "arrow";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuLink";␊ + }␊ + | {␊ + content: string;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuDescription";␊ + }␊ + | {␊ + media: string | Media;␊ + headline: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuFeature";␊ + }␊ + )[];␊ + enableColumn3?: boolean;␊ + column3?: (␊ + | {␊ + appearance?: "primary" | "secondary" | "arrow";␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuLink";␊ + }␊ + | {␊ + content: string;␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuDescription";␊ + }␊ + | {␊ + media: string | Media;␊ + headline: string;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + blockName?: string;␊ + blockType: "menuFeature";␊ + }␊ + )[];␊ + };␊ + id?: string;␊ + }[];␊ + slug?: string;␊ + color?: "green" | "blue" | "red" | "purple";␊ + home: string | Page;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "post-categories".␊ + */␊ + export interface PostCategory {␊ + title: string;␊ + color?: "green" | "blue" | "red" | "purple";␊ + slug?: string;␊ + subsite?: string | Subsite;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "users".␊ + */␊ + export interface User {␊ + email?: string;␊ + resetPasswordToken?: string;␊ + resetPasswordExpiration?: string;␊ + loginAttempts?: number;␊ + lockUntil?: string;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "footer".␊ + */␊ + export interface Footer {␊ + column1?: {␊ + appearance?: "primary" | "secondary" | "tertiary";␊ + label?: string;␊ + useLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + column2?: {␊ + appearance?: "secondary" | "tertiary";␊ + label?: string;␊ + useLink?: boolean;␊ + link?: {␊ + type?: "reference" | "custom";␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "meta".␊ + */␊ + export interface Meta {␊ + socialMediaLinks?: {␊ + type: "facebook" | "vimeo" | "twitter" | "linkedin" | "instagram";␊ + url: string;␊ + id?: string;␊ + }[];␊ + legalLinks?: {␊ + link?: {␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + locations?: (string | Location)[];␊ + phone?: string;␊ + nationalPhone?: string;␊ + fax?: string;␊ + popularSearchTerms?: {␊ + term: string;␊ + id?: string;␊ + }[];␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "alerts".␊ + */␊ + export interface Alert {␊ + placement: "global" | "subsite";␊ + subsites: (string | Subsite)[];␊ + backgroundColor?: "matchTheme" | "green" | "blue" | "red" | "purple";␊ + content: {␊ + [k: string]: unknown;␊ + }[];␊ + links?: {␊ + link?: {␊ + appearance?: "text" | "primaryButton" | "secondaryButton";␊ + type?: "reference" | "custom";␊ + label: string;␊ + reference:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + };␊ + url: string;␊ + };␊ + id?: string;␊ + }[];␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "search".␊ + */␊ + export interface SearchResult {␊ + title: string;␊ + description?: string;␊ + keywords?: string;␊ + slug: string;␊ + media?: string | Media;␊ + doc:␊ + | {␊ + value: string | Page;␊ + relationTo: "pages";␊ + }␊ + | {␊ + value: string | Post;␊ + relationTo: "posts";␊ + }␊ + | {␊ + value: string | Housing;␊ + relationTo: "housing";␊ + }␊ + | {␊ + value: string | Person;␊ + relationTo: "people";␊ + }␊ + | {␊ + value: string | Location;␊ + relationTo: "locations";␊ + };␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "people".␊ + */␊ + export interface Person {␊ + name: string;␊ + position?: string;␊ + contacts?: {␊ + type?: "mailto" | "tel" | "fax";␊ + label?: string;␊ + value?: string;␊ + id?: string;␊ + }[];␊ + socialMediaLinks?: {␊ + type: "facebook" | "vimeo" | "twitter" | "linkedin" | "instagram";␊ + url: string;␊ + id?: string;␊ + }[];␊ + richText?: {␊ + [k: string]: unknown;␊ + }[];␊ + meta?: {␊ + title?: string;␊ + description?: string;␊ + keywords?: string;␊ + image?: string | Media;␊ + };␊ + slug?: string;␊ + home?: string | Page;␊ + }␊ + /**␊ + * This interface was referenced by `RealWorld`'s JSON-Schema␊ + * via the `definition` "form-submissions".␊ + */␊ + export interface FormSubmission {␊ + form: string | Form;␊ + submissionData?: {␊ + field: string;␊ + value: string;␊ + id?: string;␊ + }[];␊ + }␊ + ` + ## realWorld.schemaStore.1.js > Expected output to match snapshot for e2e test: realWorld.schemaStore.1.js diff --git a/test/__snapshots__/test/test.ts.snap b/test/__snapshots__/test/test.ts.snap index 1f9ebbcda86a7314b35efc915c77c427f3a3a42c..a2299595345cef64ddb083f86bff686ee1af5309 100644 GIT binary patch literal 35453 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 LxkHZFvGoD~(I7O# diff --git a/test/e2e/optimize.2.ts b/test/e2e/optimize.2.ts new file mode 100644 index 00000000..4abfc413 --- /dev/null +++ b/test/e2e/optimize.2.ts @@ -0,0 +1,16 @@ +export const input = { + definitions: { + bar: { + type: 'string', + additionalProperties: false + } + }, + properties: { + foo: { + anyOf: [{type: 'string', additionalProperties: false}, {$ref: '#/definitions/bar'}] + } + }, + required: ['foo'], + title: 'Optimizable Schema 2', + type: 'object' +} diff --git a/test/e2e/realWorld.payloadCMS.ts b/test/e2e/realWorld.payloadCMS.ts new file mode 100644 index 00000000..eb978c7a --- /dev/null +++ b/test/e2e/realWorld.payloadCMS.ts @@ -0,0 +1,10935 @@ +/** + * @see https://github.com/bcherny/json-schema-to-typescript/issues/422 + */ +export const input = { + definitions: { + mainMenu: { + title: 'Main Menu', + type: 'object', + additionalProperties: false, + properties: { + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['link', 'subMenu'] + }, + label: { + type: 'string' + }, + subMenu: { + type: 'object', + additionalProperties: false, + properties: { + column1: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'arrow'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuLink' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + content: { + type: 'string' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuDescription' + } + }, + required: ['blockType', 'content'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + headline: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuFeature' + } + }, + required: ['blockType', 'media', 'headline'] + } + ] + } + }, + enableColumn2: { + type: 'boolean' + }, + column2: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'arrow'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuLink' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + content: { + type: 'string' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuDescription' + } + }, + required: ['blockType', 'content'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + headline: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuFeature' + } + }, + required: ['blockType', 'media', 'headline'] + } + ] + } + } + }, + required: [] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + secondaryItems: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + footer: { + title: 'Footer', + type: 'object', + additionalProperties: false, + properties: { + column1: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'tertiary'] + }, + label: { + type: 'string' + }, + useLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + column2: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['secondary', 'tertiary'] + }, + label: { + type: 'string' + }, + useLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + meta: { + title: 'Meta', + type: 'object', + additionalProperties: false, + properties: { + socialMediaLinks: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['facebook', 'vimeo', 'twitter', 'linkedin', 'instagram'] + }, + url: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: ['type', 'url'] + } + }, + legalLinks: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + locations: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/locations' + } + ] + } + }, + phone: { + type: 'string' + }, + nationalPhone: { + type: 'string' + }, + fax: { + type: 'string' + }, + popularSearchTerms: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + term: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: ['term'] + } + } + }, + required: [] + }, + pages: { + title: 'Page', + type: 'object', + additionalProperties: false, + properties: { + breadcrumbs: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + doc: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + url: { + type: 'string' + }, + label: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + title: { + type: 'string' + }, + showBreadcrumbs: { + type: 'boolean' + }, + hero: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: [ + 'basic', + 'content', + 'contentMedia', + 'contentMedia2', + 'contentSidebar', + 'columnsBelow', + 'quickNav', + 'fullscreenBackground', + 'fullscreenSlider' + ] + }, + basic: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + content: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + contentMedia: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: ['media'] + }, + contentMedia2: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: ['media'] + }, + contentSidebar: { + type: 'object', + additionalProperties: false, + properties: { + mainContent: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + sidebarContent: { + type: 'array', + items: { + type: 'object' + } + } + }, + required: [] + }, + columnsBelow: { + type: 'object', + additionalProperties: false, + properties: { + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + heading: { + type: 'string' + }, + description: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['heading', 'description'] + } + } + }, + required: ['backgroundMedia'] + }, + fullscreenBackground: { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: ['backgroundMedia'] + }, + quickNav: { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + heading: { + type: 'string' + }, + description: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['heading', 'description'] + } + } + }, + required: ['backgroundMedia'] + }, + fullscreenSlider: { + type: 'object', + additionalProperties: false, + properties: { + useStaticContent: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['backgroundMedia'] + } + } + }, + required: [] + } + }, + required: ['type'] + }, + layout: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['default', 'condensed'] + }, + sections: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + openOnInit: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'accordion' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'blackbaudForm' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'callToAction' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + cards: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardGrid' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardSlider' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + media1: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media2: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media3: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'careerSearch' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + enableGrayBackground: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'content' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + cellWidth: { + type: 'string', + enum: ['two', 'three'] + }, + invertColors: { + type: 'boolean' + }, + enableCellNumbers: { + type: 'boolean' + }, + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cells: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentGrid' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'housingMap' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'housingList' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + form: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/forms' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'embeddedForm' + } + }, + required: ['blockType', 'form'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + locations: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/locations' + } + ] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'locations' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useVimeo: { + type: 'boolean' + }, + vimeoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + }, + size: { + type: 'string', + enum: ['normal', 'wide', 'fullscreen'] + }, + caption: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'media' + } + }, + required: ['blockType', 'media', 'vimeoID'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + collage: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaCollage' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + alignment: { + type: 'string', + enum: ['contentOnLeft', 'contentOnRight'] + }, + overlap: { + type: 'boolean' + }, + invertColors: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + embeddedVideo: { + type: 'object', + additionalProperties: false, + properties: { + embed: { + type: 'boolean' + }, + poster: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + platform: { + type: 'string', + enum: ['youtube', 'vimeo'] + }, + videoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + } + }, + required: ['videoID'] + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaContent' + } + }, + required: ['blockType', 'alignment', 'richText', 'media'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'stickyList' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'divider' + } + }, + required: ['blockType'] + } + ] + } + }, + fullTitle: { + type: 'string' + }, + excerpt: { + type: 'string' + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + image: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: [] + }, + status: { + type: 'string', + enum: ['published', 'draft'] + }, + slug: { + type: 'string' + }, + parent: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + subsite: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/subsites' + } + ] + }, + color: { + type: 'string', + enum: ['green', 'blue', 'red', 'purple'] + }, + author: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/users' + } + ] + }, + preview: { + type: 'string' + } + }, + required: ['title'] + }, + posts: { + title: 'Post', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + hero: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: [ + 'basic', + 'content', + 'contentMedia', + 'contentMedia2', + 'contentSidebar', + 'columnsBelow', + 'quickNav', + 'fullscreenBackground', + 'fullscreenSlider' + ] + }, + basic: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + content: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: [] + }, + contentMedia: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: ['media'] + }, + contentMedia2: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: ['media'] + }, + contentSidebar: { + type: 'object', + additionalProperties: false, + properties: { + mainContent: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + sidebarContent: { + type: 'array', + items: { + type: 'object' + } + } + }, + required: [] + }, + columnsBelow: { + type: 'object', + additionalProperties: false, + properties: { + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + heading: { + type: 'string' + }, + description: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['heading', 'description'] + } + } + }, + required: ['backgroundMedia'] + }, + fullscreenBackground: { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: ['backgroundMedia'] + }, + quickNav: { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + heading: { + type: 'string' + }, + description: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['heading', 'description'] + } + } + }, + required: ['backgroundMedia'] + }, + fullscreenSlider: { + type: 'object', + additionalProperties: false, + properties: { + useStaticContent: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['backgroundMedia'] + } + } + }, + required: [] + } + }, + required: ['type'] + }, + layout: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['default', 'condensed'] + }, + sections: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + openOnInit: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'accordion' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'blackbaudForm' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'callToAction' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + cards: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardGrid' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardSlider' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + media1: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media2: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media3: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'careerSearch' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + enableGrayBackground: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'content' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + cellWidth: { + type: 'string', + enum: ['two', 'three'] + }, + invertColors: { + type: 'boolean' + }, + enableCellNumbers: { + type: 'boolean' + }, + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cells: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentGrid' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + form: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/forms' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'embeddedForm' + } + }, + required: ['blockType', 'form'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'housingMap' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'housingList' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + locations: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/locations' + } + ] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'locations' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useVimeo: { + type: 'boolean' + }, + vimeoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + }, + size: { + type: 'string', + enum: ['normal', 'wide', 'fullscreen'] + }, + caption: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'media' + } + }, + required: ['blockType', 'media', 'vimeoID'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + collage: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaCollage' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + alignment: { + type: 'string', + enum: ['contentOnLeft', 'contentOnRight'] + }, + overlap: { + type: 'boolean' + }, + invertColors: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + embeddedVideo: { + type: 'object', + additionalProperties: false, + properties: { + embed: { + type: 'boolean' + }, + poster: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + platform: { + type: 'string', + enum: ['youtube', 'vimeo'] + }, + videoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + } + }, + required: ['videoID'] + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaContent' + } + }, + required: ['blockType', 'alignment', 'richText', 'media'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'stickyList' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'divider' + } + }, + required: ['blockType'] + } + ] + } + }, + slug: { + type: 'string' + }, + category: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/post-categories' + } + ] + }, + subsite: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/subsites' + } + ] + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + image: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: [] + } + }, + required: ['title', 'category'] + }, + 'post-categories': { + title: 'Post Category', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + color: { + type: 'string', + enum: ['green', 'blue', 'red', 'purple'] + }, + slug: { + type: 'string' + }, + subsite: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/subsites' + } + ] + } + }, + required: ['title'] + }, + housing: { + title: 'Housing', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + address: { + type: 'object', + additionalProperties: false, + properties: { + line1: { + type: 'string' + }, + line2: { + type: 'string' + }, + city: { + type: 'string' + }, + state: { + type: 'string', + enum: [ + 'None', + 'Alabama', + 'Alaska', + 'Arizona', + 'Arkansas', + 'California', + 'Colorado', + 'Connecticut', + 'Delaware', + 'Florida', + 'Georgia', + 'Hawaii', + 'Idaho', + 'Illinois', + 'Indiana', + 'Iowa', + 'Kansas', + 'Kentucky', + 'Louisiana', + 'Maine', + 'Maryland', + 'Massachusetts', + 'Michigan', + 'Minnesota', + 'Mississippi', + 'Missouri', + 'Montana', + 'Nebraska', + 'Nevada', + 'New Hampshire', + 'New Jersey', + 'New Mexico', + 'New York', + 'North Carolina', + 'North Dakota', + 'Ohio', + 'Oklahoma', + 'Oregon', + 'Pennsylvania', + 'Rhode Island', + 'South Carolina', + 'South Dakota', + 'Tennessee', + 'Texas', + 'Utah', + 'Vermont', + 'Virginia', + 'Washington', + 'West Virginia', + 'Wisconsin', + 'Wyoming' + ] + }, + zip: { + type: 'string' + }, + coords: { + type: 'object', + additionalProperties: false, + properties: { + lat: { + type: 'number' + }, + lng: { + type: 'number' + } + }, + required: [] + } + }, + required: [] + }, + contacts: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['mailto', 'tel', 'fax'] + }, + label: { + type: 'string' + }, + value: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + layout: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['default', 'condensed'] + }, + sections: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + openOnInit: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'accordion' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + invertColors: { + type: 'boolean' + }, + backgroundMedia: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'callToAction' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + cards: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardGrid' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + cardStyle: { + type: 'string', + enum: ['fullBG', 'insetImage', 'noImage'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useOverlay: { + type: 'boolean' + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'cardSlider' + } + }, + required: ['blockType', 'cardStyle'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + media1: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media2: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + media3: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'careerSearch' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + enableGrayBackground: { + type: 'boolean' + }, + columns: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + width: { + type: 'string', + enum: ['oneThird', 'half', 'twoThirds', 'full'] + }, + alignment: { + type: 'string', + enum: ['left', 'center', 'right'] + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + } + }, + required: ['width', 'alignment'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'content' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + cellWidth: { + type: 'string', + enum: ['two', 'three'] + }, + invertColors: { + type: 'boolean' + }, + enableCellNumbers: { + type: 'boolean' + }, + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + cells: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentGrid' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'contentSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + richText: { + type: 'array', + items: { + type: 'object' + } + }, + form: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/forms' + } + ] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'embeddedForm' + } + }, + required: ['blockType', 'form'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + locations: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/locations' + } + ] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'locations' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + useVimeo: { + type: 'boolean' + }, + vimeoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + }, + size: { + type: 'string', + enum: ['normal', 'wide', 'fullscreen'] + }, + caption: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'media' + } + }, + required: ['blockType', 'media', 'vimeoID'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + collage: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaCollage' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + alignment: { + type: 'string', + enum: ['contentOnLeft', 'contentOnRight'] + }, + overlap: { + type: 'boolean' + }, + invertColors: { + type: 'boolean' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + embeddedVideo: { + type: 'object', + additionalProperties: false, + properties: { + embed: { + type: 'boolean' + }, + poster: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + platform: { + type: 'string', + enum: ['youtube', 'vimeo'] + }, + videoID: { + type: 'string' + }, + aspectRatio: { + type: 'string', + enum: ['56.25', '75'] + } + }, + required: ['videoID'] + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaContent' + } + }, + required: ['blockType', 'alignment', 'richText', 'media'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + introContent: { + type: 'array', + items: { + type: 'object' + } + }, + backgroundType: { + type: 'string', + enum: ['light', 'color'] + }, + slides: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + id: { + type: 'string' + } + }, + required: ['media'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'mediaSlider' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + items: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + enableLink: { + type: 'boolean' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'stickyList' + } + }, + required: ['blockType'] + } + ] + } + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + image: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: [] + }, + slug: { + type: 'string' + }, + categories: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing-categories' + } + ] + } + }, + subsite: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/subsites' + } + ] + } + }, + required: ['title'] + }, + 'housing-categories': { + title: 'Housing Category', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + slug: { + type: 'string' + } + }, + required: ['title'] + }, + locations: { + title: 'Location', + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + address: { + type: 'object', + additionalProperties: false, + properties: { + line1: { + type: 'string' + }, + line2: { + type: 'string' + }, + city: { + type: 'string' + }, + state: { + type: 'string', + enum: [ + 'None', + 'Alabama', + 'Alaska', + 'Arizona', + 'Arkansas', + 'California', + 'Colorado', + 'Connecticut', + 'Delaware', + 'Florida', + 'Georgia', + 'Hawaii', + 'Idaho', + 'Illinois', + 'Indiana', + 'Iowa', + 'Kansas', + 'Kentucky', + 'Louisiana', + 'Maine', + 'Maryland', + 'Massachusetts', + 'Michigan', + 'Minnesota', + 'Mississippi', + 'Missouri', + 'Montana', + 'Nebraska', + 'Nevada', + 'New Hampshire', + 'New Jersey', + 'New Mexico', + 'New York', + 'North Carolina', + 'North Dakota', + 'Ohio', + 'Oklahoma', + 'Oregon', + 'Pennsylvania', + 'Rhode Island', + 'South Carolina', + 'South Dakota', + 'Tennessee', + 'Texas', + 'Utah', + 'Vermont', + 'Virginia', + 'Washington', + 'West Virginia', + 'Wisconsin', + 'Wyoming' + ] + }, + zip: { + type: 'string' + }, + coords: { + type: 'object', + additionalProperties: false, + properties: { + lat: { + type: 'number' + }, + lng: { + type: 'number' + } + }, + required: [] + } + }, + required: [] + }, + contacts: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['mailto', 'tel', 'fax'] + }, + label: { + type: 'string' + }, + value: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + image: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: [] + } + }, + required: ['name'] + }, + subsites: { + title: 'Subsite', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + menuItems: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['link', 'subMenu'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + label: { + type: 'string' + }, + subMenu: { + type: 'object', + additionalProperties: false, + properties: { + column1: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'arrow'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuLink' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + content: { + type: 'string' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuDescription' + } + }, + required: ['blockType', 'content'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + headline: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuFeature' + } + }, + required: ['blockType', 'media', 'headline'] + } + ] + } + }, + enableColumn2: { + type: 'boolean' + }, + column2: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'arrow'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuLink' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + content: { + type: 'string' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuDescription' + } + }, + required: ['blockType', 'content'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + headline: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuFeature' + } + }, + required: ['blockType', 'media', 'headline'] + } + ] + } + }, + enableColumn3: { + type: 'boolean' + }, + column3: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['primary', 'secondary', 'arrow'] + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuLink' + } + }, + required: ['blockType'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + content: { + type: 'string' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuDescription' + } + }, + required: ['blockType', 'content'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + headline: { + type: 'string' + }, + link: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['reference', 'url'] + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'menuFeature' + } + }, + required: ['blockType', 'media', 'headline'] + } + ] + } + } + }, + required: [] + }, + id: { + type: 'string' + } + }, + required: ['label'] + } + }, + slug: { + type: 'string' + }, + color: { + type: 'string', + enum: ['green', 'blue', 'red', 'purple'] + }, + home: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + } + }, + required: ['title', 'home'] + }, + alerts: { + title: 'Alert', + type: 'object', + additionalProperties: false, + properties: { + placement: { + type: 'string', + enum: ['global', 'subsite'] + }, + subsites: { + type: 'array', + items: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/subsites' + } + ] + } + }, + backgroundColor: { + type: 'string', + enum: ['matchTheme', 'green', 'blue', 'red', 'purple'] + }, + content: { + type: 'array', + items: { + type: 'object' + } + }, + links: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + link: { + type: 'object', + additionalProperties: false, + properties: { + appearance: { + type: 'string', + enum: ['text', 'primaryButton', 'secondaryButton'] + }, + type: { + type: 'string', + enum: ['reference', 'custom'] + }, + label: { + type: 'string' + }, + reference: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + } + ] + }, + url: { + type: 'string' + } + }, + required: ['label', 'reference', 'url'] + }, + id: { + type: 'string' + } + }, + required: [] + } + } + }, + required: ['placement', 'subsites', 'content'] + }, + search: { + title: 'Search Result', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + slug: { + type: 'string' + }, + media: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + }, + doc: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + }, + relationTo: { + const: 'pages' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/posts' + } + ] + }, + relationTo: { + const: 'posts' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/housing' + } + ] + }, + relationTo: { + const: 'housing' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/people' + } + ] + }, + relationTo: { + const: 'people' + } + }, + required: ['value', 'relationTo'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + value: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/locations' + } + ] + }, + relationTo: { + const: 'locations' + } + }, + required: ['value', 'relationTo'] + } + ] + } + }, + required: ['title', 'slug', 'doc'] + }, + media: { + title: 'Media', + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + filename: { + type: 'string' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + sizes: { + type: 'object', + additionalProperties: false, + properties: { + thumbnail: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + card: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + portrait: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + square: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + feature: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + }, + hero: { + type: 'object', + additionalProperties: false, + properties: { + url: { + type: 'string' + }, + width: { + type: 'number' + }, + height: { + type: 'number' + }, + mimeType: { + type: 'string' + }, + filesize: { + type: 'number' + }, + filename: { + type: 'string' + } + }, + required: [] + } + }, + required: [] + }, + alt: { + type: 'string' + }, + fallback: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: ['alt'] + }, + people: { + title: 'Person', + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + position: { + type: 'string' + }, + contacts: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['mailto', 'tel', 'fax'] + }, + label: { + type: 'string' + }, + value: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: [] + } + }, + socialMediaLinks: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + type: { + type: 'string', + enum: ['facebook', 'vimeo', 'twitter', 'linkedin', 'instagram'] + }, + url: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: ['type', 'url'] + } + }, + richText: { + type: 'array', + items: { + type: 'object' + } + }, + meta: { + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + description: { + type: 'string' + }, + keywords: { + type: 'string' + }, + image: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/media' + } + ] + } + }, + required: [] + }, + slug: { + type: 'string' + }, + home: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/pages' + } + ] + } + }, + required: ['name'] + }, + forms: { + title: 'Form', + type: 'object', + additionalProperties: false, + properties: { + title: { + type: 'string' + }, + emailTo: { + type: 'string' + }, + successMessage: { + type: 'array', + items: { + type: 'object' + } + }, + redirect: { + type: 'string' + }, + submitButtonLabel: { + type: 'string' + }, + fields: { + type: 'array', + items: { + oneOf: [ + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + defaultValue: { + type: 'string' + }, + required: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'text' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + defaultValue: { + type: 'string' + }, + options: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + label: { + type: 'string' + }, + value: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: ['label', 'value'] + } + }, + required: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'select' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + required: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'email' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + required: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'state' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + required: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'country' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + name: { + type: 'string' + }, + label: { + type: 'string' + }, + width: { + type: 'number' + }, + required: { + type: 'boolean' + }, + defaultValue: { + type: 'boolean' + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'checkbox' + } + }, + required: ['blockType', 'name', 'label'] + }, + { + type: 'object', + additionalProperties: false, + properties: { + message: { + type: 'array', + items: { + type: 'object' + } + }, + id: { + type: 'string' + }, + blockName: { + type: 'string' + }, + blockType: { + const: 'message' + } + }, + required: ['blockType'] + } + ] + } + } + }, + required: ['title'] + }, + 'form-submissions': { + title: 'Form Submission', + type: 'object', + additionalProperties: false, + properties: { + form: { + oneOf: [ + { + type: 'string' + }, + { + $ref: '#/definitions/forms' + } + ] + }, + submissionData: { + type: 'array', + items: { + type: 'object', + additionalProperties: false, + properties: { + field: { + type: 'string' + }, + value: { + type: 'string' + }, + id: { + type: 'string' + } + }, + required: ['field', 'value'] + } + } + }, + required: ['form'] + }, + users: { + title: 'User', + type: 'object', + additionalProperties: false, + properties: { + email: { + type: 'string' + }, + resetPasswordToken: { + type: 'string' + }, + resetPasswordExpiration: { + type: 'string' + }, + loginAttempts: { + type: 'number' + }, + lockUntil: { + type: 'string' + } + }, + required: [] + } + }, + additionalProperties: false +} + +export const options = { + unreachableDefinitions: true +} diff --git a/types/fast-diff.d.ts b/types/fast-diff.d.ts deleted file mode 100644 index 3990fac9..00000000 --- a/types/fast-diff.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -declare module 'fast-diff' { - export = diff - namespace diff { - export const INSERT = 1 - export const EQUAL = 0 - export const DELETE = -1 - - export type DeleteEdit = [-1, string] - export type EqualEdit = [0, string] - export type InsertEdit = [1, string] - export type Edit = DeleteEdit | EqualEdit | InsertEdit - } - - function diff(a: string, b: string): diff.Edit[] -} diff --git a/types/json-stringify-safe.d.ts b/types/json-stringify-safe.d.ts deleted file mode 100644 index 11e33026..00000000 --- a/types/json-stringify-safe.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare module 'json-stringify-safe' { - export = stringify - function stringify( - value: any, - replacer?: (key: string, value: any) => any, - space?: string | number, - cycleReplacer?: (key: string, value: any) => string - ): string | undefined -} diff --git a/yarn.lock b/yarn.lock index 74d51b0e..2f3ccb9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2367,11 +2367,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"