From 6fbcbc8e8c5487aef509f3cb2bf9998197d14418 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 | 65 +- test/__snapshots__/test/test.ts.md | 2930 ++++++- test/__snapshots__/test/test.ts.snap | Bin 31150 -> 35476 bytes test/e2e/optimize.2.ts | 35 + 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, 13932 insertions(+), 70 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..2d8fa623 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,41 +14,61 @@ 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': + // Start with the leaves... + const optimizedAST = Object.assign(ast, { + params: ast.params.map(_ => optimize(_, options, processed)) + }) + // [A, B, C, Any] -> Any - if (ast.params.some(_ => _.type === 'ANY')) { - log('cyan', 'optimizer', '[A, B, C, Any] -> Any', ast) + if (optimizedAST.params.some(_ => _.type === 'ANY')) { + log('cyan', 'optimizer', '[A, B, C, Any] -> Any', optimizedAST) return T_ANY } // [A, B, C, Unknown] -> Unknown - if (ast.params.some(_ => _.type === 'UNKNOWN')) { - log('cyan', 'optimizer', '[A, B, C, Unknown] -> Unknown', ast) + if (optimizedAST.params.some(_ => _.type === 'UNKNOWN')) { + log('cyan', 'optimizer', '[A, B, C, Unknown] -> Unknown', optimizedAST) return T_UNKNOWN } + // [A (named), A] -> [A (named)] + if ( + optimizedAST.params.every(_ => { + const a = generateType(omitStandaloneName(_), options) + const b = generateType(omitStandaloneName(optimizedAST.params[0]), options) + return a === b + }) && + optimizedAST.params.some(_ => _.standaloneName !== undefined) + ) { + log('cyan', 'optimizer', '[A (named), A] -> [A (named)]', optimizedAST) + optimizedAST.params = optimizedAST.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)} - ` - ) - if (params.length !== ast.params.length) { - log('cyan', 'optimizer', '[A, B, B] -> [A, B]', ast) - ast.params = params + const params = uniqBy(optimizedAST.params, _ => generateType(_, options)) + if (params.length !== optimizedAST.params.length) { + log('cyan', 'optimizer', '[A, B, B] -> [A, B]', optimizedAST) + optimizedAST.params = params } - return Object.assign(ast, { - params: ast.params.map(_ => optimize(_, processed)) + return Object.assign(optimizedAST, { + params: optimizedAST.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..003697d1 100644 --- a/test/__snapshots__/test/test.ts.md +++ b/test/__snapshots__/test/test.ts.md @@ -1083,13 +1083,9 @@ Generated by [AVA](https://avajs.dev). /**␊ * Schema and content are mutually exclusive, at least one is required␊ */␊ - export type SchemaXORContent =␊ - | {␊ - [k: string]: unknown;␊ - }␊ - | {␊ - [k: string]: unknown;␊ - };␊ + export type SchemaXORContent = {␊ + [k: string]: unknown;␊ + };␊ /**␊ * Parameter location␊ */␊ @@ -1672,6 +1668,38 @@ 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 A = string;␊ + ␊ + export interface OptimizableSchema2 {␊ + a: A;␊ + b: B;␊ + c: B | C;␊ + d: {␊ + [k: string]: unknown;␊ + };␊ + e: {␊ + [k: string]: unknown;␊ + };␊ + }␊ + export interface B {␊ + [k: string]: unknown;␊ + }␊ + export interface C {␊ + [k: string]: unknown;␊ + }␊ + ` + ## optimize.js > Expected output to match snapshot for e2e test: optimize.js @@ -5833,13 +5861,9 @@ Generated by [AVA](https://avajs.dev). /**␊ * Schema and content are mutually exclusive, at least one is required␊ */␊ - export type SchemaXORContent =␊ - | {␊ - [k: string]: unknown;␊ - }␊ - | {␊ - [k: string]: unknown;␊ - };␊ + export type SchemaXORContent = {␊ + [k: string]: unknown;␊ + };␊ /**␊ * Parameter location␊ */␊ @@ -6315,6 +6339,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..546cf15bc1211e9d329c6254d9488ec7f016f0ec 100644 GIT binary patch literal 35476 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

=lMeExQH|HGuN2joSE}{gXPDw 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 IY0J$7j6aWAK literal 31150 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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..d7b5bdc4 --- /dev/null +++ b/test/e2e/optimize.2.ts @@ -0,0 +1,35 @@ +export const input = { + definitions: { + a: { + type: 'string', + additionalProperties: false + }, + b: { + type: 'object' + }, + c: { + type: 'object' + } + }, + properties: { + a: { + anyOf: [{type: 'string', additionalProperties: false}, {$ref: '#/definitions/a'}] + }, + b: { + anyOf: [{type: 'object'}, {type: 'object'}, {$ref: '#/definitions/b'}] + }, + c: { + anyOf: [{type: 'object'}, {$ref: '#/definitions/b'}, {$ref: '#/definitions/b'}, {$ref: '#/definitions/c'}] + }, + d: { + allOf: [{type: 'object'}, {type: 'object'}] + }, + e: { + oneOf: [{type: 'object'}, {allOf: [{type: 'object'}, {type: 'object'}]}] + } + }, + required: ['a', 'b', 'c', 'd', 'e'], + title: 'Optimizable Schema 2', + type: 'object', + additionalProperties: false +} 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"