If you get stuck on the way, don’t hesitate to reach out to us. We’re more than happy to help! You can contact us at support@enterspeed.com.
Now for the fun part - designing the APIs we’re going to use. This will be the glue that ties our Sources and Environments together. We do this by setting up schemas.You find the schema editor in Enterspeed under Schemas.The powerful thing about setting up schemas yourself is you get to decide precisely which data you need and how it gets structured.Let’s take a look at how a schema can be structured. In Example schemas & partial schemas below you’ll see three examples from this project. We’ll look at the contentPage example.The first thing you need to define is your triggers. Triggers consist of one or more source groups, which contain one or more source entity types (the data your schema should use). You can find a list of all the Source Entity Types in the Source entities table in your Enterspeed-project under Type.
Next, we need to define the routes - how should we be able to fetch the data? We can do this by URL, Handle, and ID. For our contentPages URL makes the most sense.
routes: function (sourceEntity, context) { context.url(sourceEntity.url)}
Lastly, but certainly not least, we need to define which data we want in our schema. We do this under properties.The name of the object is the name we’re going to use in our application. As you can see in the example, we have chosen to rename pageTitle to headline for our use case.
Notice how we refer to a alias called . This is our partial schema umbraco-blockText we are referencing.If we don’t create this partial schema, the ContentPage-schema won’t work.
When designing your schema, use the Source entities button to both test and view your Source entities.
When you’re finished designing your schema, it’s time to deploy it. Click the Save draft button. Next click the Deploy schemas button in the top right corner.This will open the deploy pane. Choose the environment you wish to deploy to (e.g. Production) and click the Deploy 1 change-button.
Notice how the alias is automatically generated as umbracoBlockText.Click the lock to the right in the Create new partial schema dialog and change the alias to umbraco-blockText, so that it matches the reference we created in the ContentPage-schema.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Enterspeed Docs","colors":{"primary":"#0018ff","light":"#99bfdd","dark":"#000035"},"logo":{"light":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/Enterspeed_Logo_RGB_Black.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=491f6b7030bd2783bc3e51bb7183237e","dark":"https://mintcdn.com/enterspeed/ZSYX286dEXJYPh8A/images/Enterspeed_Logo_RGB_DIAP.svg?fit=max\u0026auto=format\u0026n=ZSYX286dEXJYPh8A\u0026q=85\u0026s=57859398954b59778cd723e0b9e4dca5"},"favicon":{"light":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/favicon.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=2e00ec680e7f80f676f9d4748626ec0f","dark":"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/favicon.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=2e00ec680e7f80f676f9d4748626ec0f"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://www.enterspeedstatus.com/","label":"Status"}]},"footer":{"socials":{"github":"https://github.com/enterspeedhq","linkedin":"https://www.linkedin.com/company/enterspeed","website":"https://www.enterspeed.com/","youtube":"https://www.youtube.com/@enterspeedhq"},"links":[{"header":"Company","items":[{"label":"Enterspeed","href":"https://www.enterspeed.com"},{"label":"Contact Us","href":"https://www.enterspeed.com/contact"},{"label":"Privacy Policy","href":"https://www.enterspeed.com/privacy-policy"}]},{"header":"Resources","items":[{"label":"Blog","href":"https://www.enterspeed.com/blog"},{"label":"Product Updates","href":"https://updates.enterspeed.com/"},{"label":"Newsletter Signup","href":"https://content.enterspeed.com/newsletter-signup"},{"label":"Privacy Policy","href":"https://www.enterspeed.com/privacy-policy"}]}]},"search":{"prompt":"Search docs"},"icons":{"library":"fontawesome"},"styling":{"eyebrows":"breadcrumbs","latex":false},"integrations":{"gtm":{"tagId":"GTM-N32R9R7"},"mixpanel":{"projectToken":"efb544fc5e5319cb4a082b0154e14df2","region":"eu"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode","download-spec"],"display":"header"},"interaction":{"drilldown":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"enterspeed","hasAudioNarration":false,"actualSubdomain":"enterspeed","customDomains":["docs.enterspeed.com"],"gitSource":{"type":"github","owner":"enterspeedhq","repo":"enterspeed-docs","deployBranch":"master","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"528dd4a1-f406-4d8f-a3a1-420ea5af8b77","liveDeploymentHistoryId":"6ae9c20c98ee2cfbfea836ef","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae9c20c98ee2cfbfea836ef"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae9c20c98ee2cfbfea836ef","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Enterspeed","count":136},{"language":"default","tag":"Overview","count":46},{"language":"default","tag":"Integrations","count":43},{"language":"default","tag":"Source integrations","count":30},{"language":"default","tag":"Speedtrain","count":29},{"language":"default","tag":"Key concepts","count":23},{"language":"default","tag":"Umbraco","count":21},{"language":"default","tag":"Tutorials","count":20},{"language":"default","tag":"Schema reference","count":19},{"language":"default","tag":"Getting started","count":16}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".integration-logos .card img{background-color:#f0f3f7;border-radius:0.5rem;padding:0.75rem;box-sizing:border-box}.dark .integration-logos .card img{background-color:#000035}"}],"page":{"pagePath":"enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis","slug":"/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis","pageMetadata":{"title":"3. Designing your APIs","description":null,"href":"/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,OptimizedImage,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`designing-your-apis-in-enterspeed`,children:`Designing your APIs in Enterspeed`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`If you get stuck on the way, don’t hesitate to reach out to us. We’re more than happy to help! You can contact us at `,_jsx(_components.a,{href:`mailto:support@enterspeed.com`,children:`support@enterspeed.com`}),`.`]})}),`\n`,_jsx(_components.p,{children:`Now for the fun part - designing the APIs we’re going to use. This will be the glue that ties our Sources and Environments together. We do this by setting up schemas.`}),`\n`,_jsxs(_components.p,{children:[`You find the schema editor in Enterspeed under `,_jsx(_components.strong,{children:`Schemas`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=4156f728a83b079b36a4f80c3534212c`,alt:`Create new schema`,\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`1971`,height:`1971`,\"data-path\":`images/docs/examples/create-new-schema.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=280\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=53a0c0a559b4421c61039a928faa77c9 280w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=560\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=cf743304f2cdb4d6ea4f3bf189b3252e 560w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=840\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=c15b93cb19df5d643c913a4ac86784f4 840w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=1100\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=774042dee041efe129424fd466a06089 1100w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=1650\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=52c89a542f245211ddd7684bf063712b 1650w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/create-new-schema.png?w=2500\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=17b3f5f157c2b19f22313be3b84686a4 2500w`}),`\n`,_jsx(_components.p,{children:`The powerful thing about setting up schemas yourself is you get to decide precisely which data you need and how it gets structured.`}),`\n`,_jsxs(_components.p,{children:[`Let’s take a look at how a schema can be structured. In `,_jsx(_components.em,{children:`Example schemas \u0026 partial schemas`}),` below you’ll see three examples from this project. We’ll look at the `,_jsx(_components.strong,{children:`contentPage`}),` example.`]}),`\n`,_jsxs(_components.p,{children:[`The first thing you need to define is your `,_jsx(_components.strong,{children:`triggers`}),`. Triggers consist of one or more source groups, which contain one or more source entity types (the data your schema should use). You can find a list of all the Source Entity Types in the `,_jsx(_components.strong,{children:`Source entities`}),` table in your Enterspeed-project under `,_jsx(_components.strong,{children:`Type`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'umbracoCloud'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'contentPage'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Next, we need to define the `,_jsx(_components.strong,{children:`routes`}),` - how should we be able to fetch the data? We can do this by URL, Handle, and ID. For our contentPages URL makes the most sense.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`routes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Lastly, but certainly not least, we need to define which data we want in our schema. We do this under `,_jsx(_components.strong,{children:`properties`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The name of the object is the name we’re going to use in our application. As you can see in the example, we have chosen to rename `,_jsx(_components.strong,{children:`pageTitle`}),` to `,_jsx(_components.strong,{children:`headline`}),` for our use case.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`Notice how we refer to a alias called `,_jsx(_components.strong,{children:`umbraco-{item.contentType}`}),`. This is our partial schema `,_jsx(_components.strong,{children:`umbraco-blockText`}),` we are referencing.`]}),_jsx(_components.p,{children:`If we don’t create this partial schema, the ContentPage-schema won’t work.`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:`properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` type:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headline:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pageTitle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` blocks:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlocks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`partial`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`umbraco-\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentType`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`When designing your schema, use the `,_jsx(_components.strong,{children:`Source entities`}),` button to both test and view your Source entities.`]})}),`\n`,_jsxs(_components.p,{children:[`When you’re finished designing your schema, it’s time to deploy it. Click the `,_jsx(_components.strong,{children:`Save draft`}),` button. Next click the `,_jsx(_components.strong,{children:`Deploy schemas`}),` button in the top right corner.`]}),`\n`,_jsxs(_components.p,{children:[`This will open the deploy pane. Choose the environment you wish to deploy to (e.g. Production) and click the `,_jsx(_components.strong,{children:`Deploy 1 change`}),`-button.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=f53307fefbcf04cc3c63878df43ed928`,alt:`Deploy schema`,\"data-og-width\":`2560`,width:`2560`,\"data-og-height\":`1190`,height:`1190`,\"data-path\":`images/docs/examples/deploy-schema.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=280\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=16d940870e28cbea02bace37be22310b 280w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=560\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=2c6521572a4c05f90477291a04d632be 560w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=840\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=bf385ad22a73ce1cb7ae3b27b624352c 840w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=1100\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=1e282fa12e39b41f66e4fb818fa326a8 1100w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=1650\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=35b8e331709deb7b97d493211a6f01ec 1650w, https://mintcdn.com/enterspeed/U-p4hKh6hit1rd09/images/docs/examples/deploy-schema.png?w=2500\u0026fit=max\u0026auto=format\u0026n=U-p4hKh6hit1rd09\u0026q=85\u0026s=5bd5d3ebb630aaf5fb31b3332323a9e9 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`example-schemas-\u0026-partial-schemas`,children:`Example schemas \u0026 partial schemas`}),`\n`,_jsx(Heading,{level:`3`,id:`contentpage`,children:`ContentPage`}),`\n`,_jsx(CodeBlock,{filename:`Example schema: ContentPage`,numberOfLines:`21`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`21`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"triggers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"umbracoCloud\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"contentPage\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"route\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"url\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{url}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"properties\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{type}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"headline\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{p.pageTitle}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"blocks\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"array\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"input\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{p.contentBlocks}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"items\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"partial\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"input\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"{item}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"alias\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"umbraco-{item.contentType}\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:`Example schema: ContentPage`,numberOfLines:`18`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`18`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/** `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`@type`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` {Enterspeed.FullSchema}`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` */`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'umbracoCloud'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'contentPage'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` routes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` type:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`type`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headline:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pageTitle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` blocks:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlocks`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`((`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`partial`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`umbraco-\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentType`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentBlock`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`umbraco-blocktext-partial-schema`,children:`umbraco-blockText (Partial schema)`}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`Notice how the alias is automatically generated as `,_jsx(_components.strong,{children:`umbracoBlockText`}),`.`]}),_jsxs(_components.p,{children:[`Click the lock to the right in the `,_jsx(_components.strong,{children:`Create new partial schema`}),` dialog and change the alias to `,_jsx(_components.strong,{children:`umbraco-blockText`}),`, so that it matches the reference we created in the ContentPage-schema.`]})]}),`\n`,_jsx(CodeBlock,{filename:`Example partial schema: umbraco-blockText`,numberOfLines:`9`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/** `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`@type`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` {Enterspeed.PartialSchema}`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` */`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` text:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`content`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`text`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` alias:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` input`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`contentType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`navigation`,children:`Navigation`}),`\n`,_jsx(CodeBlock,{filename:`Example schema: Navigation`,numberOfLines:`14`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`14`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/** `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`@type`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` {Enterspeed.FullSchema}`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` */`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`export`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` default`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`triggers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'umbracoCloud'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'home'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`])`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` routes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`handle`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'navigation'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` properties`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sourceEntity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` navigationItems:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` context`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`reference`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'navigationItem'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`).`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`children`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Info,{children:[_jsxs(_components.p,{children:[`You can find all of the example schemas on `,_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/tree/master/umbraco-next/DEMO-DATA/enterspeed-schemas`,children:`Github`}),`. The project consists of the following schemas and partial schemas:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-contentPage.js`,children:`ContentPage`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-curreny.js`,children:`Currency`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-home.js`,children:`Home`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-link.js`,children:`Link`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-navigation.js`,children:`Navigation`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-navigationItem.js`,children:`NavigationItem`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-product.js`,children:`Product`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-ProductListingView.js`,children:`ProductListingView`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-products.js`,children:`Products`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/enterspeedhq/enterspeed-demos/blob/master/umbraco-next/DEMO-DATA/enterspeed-partial-umbraco-blockText.js`,children:`umbraco-blockText`}),` `,_jsx(_components.strong,{children:`(Partial schema)`})]}),`\n`]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"3. Designing your APIs","description":null,"href":"/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[8720,8785,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Designing your APIs in Enterspeed","slug":"designing-your-apis-in-enterspeed","depth":1,"children":[]},{"title":"Example schemas \u0026 partial schemas","slug":"example-schemas-\u0026-partial-schemas","depth":2,"children":[{"title":"ContentPage","slug":"contentpage","depth":3,"children":[]},{"title":"umbraco-blockText (Partial schema)","slug":"umbraco-blocktext-partial-schema","depth":3,"children":[]},{"title":"Navigation","slug":"navigation","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"enterspeed","siteName":"Enterspeed Docs","title":"3. Designing your APIs - Enterspeed Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T06:29:13.741Z","originalFileLocation":"enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"3. Designing your APIs - Enterspeed Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://enterspeed.mintlify.app/_mintlify/api/og/v2?division=Umbraco+and+Next.js\u0026amp;title=3.+Designing+your+APIs\u0026amp;theme=46924038ce8145a2b946a524\u0026amp;signature=b5f0b372236ad3e3468487e42e4ee4aa6c96d6fdec9c50779f4c39a7da02bcac\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"3. Designing your APIs - Enterspeed Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://enterspeed.mintlify.app/_mintlify/api/og/v2?division=Umbraco+and+Next.js\u0026amp;title=3.+Designing+your+APIs\u0026amp;theme=46924038ce8145a2b946a524\u0026amp;signature=b5f0b372236ad3e3468487e42e4ee4aa6c96d6fdec9c50779f4c39a7da02bcac\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/enterspeed/DjjqapwY-6NONS8k/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Enterspeed Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0018ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.enterspeed.com/#organization\",\"name\":\"Enterspeed Docs\",\"url\":\"https://docs.enterspeed.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/enterspeed/epLxx3NKRbzcMz_w/images/Enterspeed_Logo_RGB_Black.svg?fit=max\u0026auto=format\u0026n=epLxx3NKRbzcMz_w\u0026q=85\u0026s=491f6b7030bd2783bc3e51bb7183237e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.enterspeed.com#website\",\"name\":\"Enterspeed Docs\",\"url\":\"https://docs.enterspeed.com\",\"publisher\":{\"@id\":\"https://docs.enterspeed.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis#webpage\",\"url\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis\",\"name\":\"3. Designing your APIs\",\"dateModified\":\"2026-11-03T06:29:13.741Z\",\"isPartOf\":{\"@id\":\"https://docs.enterspeed.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Tutorials\",\"item\":\"https://docs.enterspeed.com/enterspeed/tutorials/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Umbraco and Next.js\",\"item\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/intro\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"3. Designing your APIs\",\"item\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis#article\",\"headline\":\"3. Designing your APIs\",\"name\":\"3. Designing your APIs\",\"url\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis\",\"mainEntityOfPage\":{\"@id\":\"https://docs.enterspeed.com/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis#webpage\"},\"dateModified\":\"2026-11-03T06:29:13.741Z\",\"publisher\":{\"@id\":\"https://docs.enterspeed.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.enterspeed.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Enterspeed Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Enterspeed Docs","nav":{"global":null,"products":[{"product":"Enterspeed","icon":"gear-complex-api","description":"The data orchestration layer","pages":[{"group":"Overview","pages":[{"title":"Enterspeed Documentation","sidebarTitle":"Welcome","href":"/enterspeed/welcome"},{"group":"Getting started","pages":[{"group":"0 - Setup","pages":[{"title":"Intro","href":"/enterspeed/getting-started/intro"},{"title":"Setting up domains","href":"/enterspeed/getting-started/domains"},{"title":"Configuring environments","href":"/enterspeed/getting-started/environments"},{"title":"Using environment clients","href":"/enterspeed/getting-started/environment-clients"},{"title":"Adding data sources","href":"/enterspeed/getting-started/data-sources"}]},{"title":"1 - Ingesting data","href":"/enterspeed/ingest"},{"group":"2 - Transforming data","pages":[{"title":"2 - Transforming data","sidebarTitle":"Intro","href":"/enterspeed/transform/intro"},{"title":"Designing a schema","href":"/enterspeed/transform/designing-a-schema"},{"title":"Schema versioning","sidebarTitle":"Versioning","href":"/enterspeed/transform/schema-versioning"}]},{"title":"3 - Delivering data","href":"/enterspeed/deliver"}]},{"group":"Key concepts","pages":[{"title":"Overview","sidebarTitle":"Overview","href":"/enterspeed/key-concepts/overview"},{"title":"Schemas","sidebarTitle":"Schemas","href":"/enterspeed/key-concepts/schemas"},{"title":"Partial schemas","sidebarTitle":"Partial schemas","href":"/enterspeed/key-concepts/partial-schemas"},{"title":"Index schemas","sidebarTitle":"Index schemas","href":"/enterspeed/key-concepts/index-schemas"},{"title":"Referencing schemas","sidebarTitle":"Referencing schemas","href":"/enterspeed/key-concepts/referencing-schemas"},{"title":"Source Entities","sidebarTitle":"Source Entities","href":"/enterspeed/key-concepts/source-entities"},{"title":"Source Groups","sidebarTitle":"Source Groups","href":"/enterspeed/key-concepts/source-groups"},{"title":"Routing","sidebarTitle":"Routing","href":"/enterspeed/key-concepts/routing"},{"title":"Views","sidebarTitle":"Views","href":"/enterspeed/key-concepts/views"},{"title":"Redirects","sidebarTitle":"Redirects","href":"/enterspeed/key-concepts/redirects"},{"title":"Domains \u0026 hostnames","sidebarTitle":"Domains \u0026 hostnames","href":"/enterspeed/key-concepts/domains-hostnames"},{"title":"Reprocessing","sidebarTitle":"Reprocessing","href":"/enterspeed/key-concepts/reprocessing"}]},{"title":"User Login","href":"/enterspeed/user-login"},{"title":"Service Limits","href":"/enterspeed/service-limits"}]},{"group":"Schema reference","icon":"book-open-cover","pages":[{"group":"schemas","pages":[{"group":"JavaScript schemas","pages":[{"title":"Intro","href":"/enterspeed/reference/js/intro"},{"title":"JSDoc","href":"/enterspeed/reference/js/jsdoc"},{"group":"Full schema","pages":[{"title":"Intro","href":"/enterspeed/reference/js/full-schema/intro"},{"title":"Triggers","href":"/enterspeed/reference/js/full-schema/triggers"},{"title":"Properties","href":"/enterspeed/reference/js/full-schema/properties"},{"title":"Routes","href":"/enterspeed/reference/js/full-schema/routes"},{"title":"Actions","href":"/enterspeed/reference/js/full-schema/actions"}]},{"group":"Index schema","pages":[{"title":"Intro","href":"/enterspeed/reference/js/index-schema/intro"},{"title":"Triggers","href":"/enterspeed/reference/js/index-schema/triggers"},{"title":"Properties","href":"/enterspeed/reference/js/index-schema/properties"},{"title":"Index","href":"/enterspeed/reference/js/index-schema/index-method"}]},{"group":"Partial schema","pages":[{"title":"Intro","href":"/enterspeed/reference/js/partial-schema/intro"},{"title":"Properties","href":"/enterspeed/reference/js/partial-schema/properties"}]}]},{"group":"JSON schemas","tag":"Deprecated","pages":[{"title":"Property types","href":"/enterspeed/reference/json/property-types"},{"title":"Expression","href":"/enterspeed/reference/json/expression"},{"title":"Path selector","href":"/enterspeed/reference/json/path-selector"}]}]},{"title":"Filter Expressions","href":"/enterspeed/reference/filter-expressions"},{"group":"Schema example library","pages":[{"title":"Overview","href":"/enterspeed/reference/schema-example-library/overview"}]},{"title":"Organising your schemas","href":"/enterspeed/reference/folders"}]},{"group":"API","icon":"code","pages":[{"title":"Enterspeed API","sidebarTitle":"Overview","href":"/enterspeed/api/overview"},{"group":"Delivery","pages":[{"title":"Get content by URL, IDs, or handles","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml get /v2","href":"/api-reference/delivery/get-content-by-url-ids-or-handles"},{"title":"Get content by IDs, or handles","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /v2","href":"/api-reference/delivery/get-content-by-ids-or-handles"}]},{"group":"Ingest","pages":[{"title":"Save entity","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /ingest/v2/{originId}","href":"/api-reference/ingest/save-entity"},{"title":"Delete entity","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml delete /ingest/v2/{originId}","href":"/api-reference/ingest/delete-entity"},{"title":"Save entities","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /ingest/v2","href":"/api-reference/ingest/save-entities"},{"title":"Delete entities","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml delete /ingest/v2","href":"/api-reference/ingest/delete-entities"}]},{"group":"Routes","pages":[{"title":"Get Routes","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml get /routes/v1","href":"/api-reference/routes/get-routes"},{"title":"Get Routes v2","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml get /routes/v2","href":"/api-reference/routes/get-routes-v2"}]},{"group":"Query","pages":[{"title":"Query items","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /v1/{indexAlias}","href":"/api-reference/query/query-items"},{"title":"Multi query items","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /v1","href":"/api-reference/query/multi-query-items"},{"title":"Query items from Auto Indexing source groups","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /v1/sourceGroupAlias/{sourceGroupAlias}/type/{sourceEntityType}","href":"/api-reference/query/query-items-from-auto-indexing-source-groups"},{"title":"Multi query items from Auto Indexing source groups","deprecated":null,"version":null,"openapi":"/enterspeed/enterspeedv1Api.yaml post /v1/source","href":"/api-reference/query/multi-query-items-from-auto-indexing-source-groups"}]}]},{"group":"Integrations","icon":"plug","pages":[{"title":"Enterspeed Integrations","sidebarTitle":"Overview","href":"/enterspeed/integrations/overview"},{"group":"Source integrations","pages":[{"title":"Commercetools","href":"/enterspeed/integrations/commercetools"},{"title":"n8n","href":"/enterspeed/integrations/n8n"},{"group":"Umbraco","pages":[{"title":"Getting started","href":"/enterspeed/integrations/umbraco/getting-started"},{"title":"Getting data","href":"/enterspeed/integrations/umbraco/getting-data"},{"title":"Services","href":"/enterspeed/integrations/umbraco/services"},{"title":"Service registration","href":"/enterspeed/integrations/umbraco/service-registration"},{"title":"Value Converter","href":"/enterspeed/integrations/umbraco/enterspeed-value-converter"},{"title":"UmbracoContentEntity","href":"/enterspeed/integrations/umbraco/umbraco-content-entity"},{"title":"Additional properties","href":"/enterspeed/integrations/umbraco/additional-properties"},{"title":"Background tasks","href":"/enterspeed/integrations/umbraco/background-tasks"},{"title":"Content dashboard","href":"/enterspeed/integrations/umbraco/content-dashboard"},{"title":"Culture and hostnames","href":"/enterspeed/integrations/umbraco/culture-and-hostnames"},{"title":"Database","href":"/enterspeed/integrations/umbraco/database"},{"title":"Guards","href":"/enterspeed/integrations/umbraco/enterspeed-guards"},{"title":"Enterspeed Property Service","href":"/enterspeed/integrations/umbraco/enterspeed-propertys-service"},{"title":"Grid Editor Value Converters","href":"/enterspeed/integrations/umbraco/grid-editor-value-converters"},{"title":"Jobs","href":"/enterspeed/integrations/umbraco/jobs"},{"title":"Publishing","href":"/enterspeed/integrations/umbraco/publishing"},{"title":"Redirects","href":"/enterspeed/integrations/umbraco/redirects"},{"title":"Troubleshooting","href":"/enterspeed/integrations/umbraco/troubleshooting"},{"title":"Umbraco Cloud","href":"/enterspeed/integrations/umbraco/umbraco-cloud"},{"title":"Tagging in Umbraco","href":"/enterspeed/integrations/umbraco/umbraco-tagging"},{"title":"Updating package","href":"/enterspeed/integrations/umbraco/updating-package"}]},{"title":"Umbraco \u0026 Cloudinary","href":"/enterspeed/integrations/umbraco-cloudinary"},{"group":"Sitecore","pages":[{"title":"Getting started","href":"/enterspeed/integrations/sitecore/getting-started"},{"title":"Getting data","href":"/enterspeed/integrations/sitecore/getting-data"},{"title":"Services","href":"/enterspeed/integrations/sitecore/services"},{"title":"Processed entities","href":"/enterspeed/integrations/sitecore/processed-entities"},{"title":"SitecoreContentEntity","href":"/enterspeed/integrations/sitecore/sitecorecontententity"},{"title":"Field Value Converter","href":"/enterspeed/integrations/sitecore/enterspeed-value-converter"}]}]},{"group":"Destination integrations","pages":[{"group":"Configuration","pages":[{"title":"Skip unchanged views and resend","sidebarTitle":"Skip unchanged views","href":"/enterspeed/integrations/skip-unchanged-views"}]},{"title":"Webhooks","href":"/enterspeed/integrations/webhooks"},{"title":"Algolia","href":"/enterspeed/integrations/algolia"},{"title":"Clerk.io","href":"/enterspeed/integrations/clerk"},{"title":"Elastic App Search","href":"/enterspeed/integrations/elastic-app-search"},{"title":"Elasticsearch","href":"/enterspeed/integrations/elasticsearch"},{"title":"Enterspeed Ingest","href":"/enterspeed/integrations/ingest"},{"title":"Relewise","href":"/enterspeed/integrations/relewise"},{"title":"Azure Service Bus","href":"/enterspeed/integrations/servicebus"},{"title":"Shopify","href":"/enterspeed/integrations/shopify"},{"title":"Speedtrain","href":"/enterspeed/integrations/speedtrain"},{"title":"Typesense","href":"/enterspeed/integrations/typesense"}]}]},{"group":"Tutorials","icon":"graduation-cap","pages":[{"title":"Tutorials","sidebarTitle":"Overview","href":"/enterspeed/tutorials/overview"},{"group":"Creating a simple site","pages":[{"title":"Intro","href":"/enterspeed/tutorials/creating-a-simple-site/intro"},{"title":"1. Sources \u0026 Environments","href":"/enterspeed/tutorials/creating-a-simple-site/1-sources-environments"},{"title":"2. Ingesting data","href":"/enterspeed/tutorials/creating-a-simple-site/2-ingesting-data"},{"title":"3. Designing your APIs","href":"/enterspeed/tutorials/creating-a-simple-site/3-designing-your-apis"},{"title":"4. Fetching data","href":"/enterspeed/tutorials/creating-a-simple-site/4-fetching-data"}]},{"group":"Multilevel navigation","pages":[{"title":"1. Getting started","href":"/enterspeed/tutorials/multilevel-navigation/1-getting-started"},{"title":"2. Create schemas","href":"/enterspeed/tutorials/multilevel-navigation/2-create-schemas"},{"title":"3. Going further","href":"/enterspeed/tutorials/multilevel-navigation/3-going-further"},{"title":"4. Wrap up","href":"/enterspeed/tutorials/multilevel-navigation/4-wrap-up"}]},{"group":"Umbraco and Next.js","pages":[{"title":"Intro","href":"/enterspeed/tutorials/umbraco-nextjs/intro"},{"title":"1. Sources \u0026 Environments","href":"/enterspeed/tutorials/umbraco-nextjs/1-sources-environments"},{"title":"2. Configuring Umbraco","description":null,"href":"/enterspeed/tutorials/umbraco-nextjs/2-configuring-umbraco"},{"title":"3. Designing your APIs","href":"/enterspeed/tutorials/umbraco-nextjs/3-designing-your-apis"},{"title":"4. Fetching data in Next.js","description":null,"href":"/enterspeed/tutorials/umbraco-nextjs/4-fetching-data-in-nextjs"}]},{"group":"Product list (CMS + PIM)","pages":[{"title":"1. Getting started","href":"/enterspeed/tutorials/product-list-cms-pim/1-getting-started"},{"title":"2. Data sources and environment","href":"/enterspeed/tutorials/product-list-cms-pim/2-data-sources-environment"},{"title":"3. Ingest data","href":"/enterspeed/tutorials/product-list-cms-pim/3-ingest-data"},{"title":"4. Create schemas","href":"/enterspeed/tutorials/product-list-cms-pim/4-create-schemas"},{"title":"5. Wrap up","href":"/enterspeed/tutorials/product-list-cms-pim/5-wrap-up"}]}]},{"group":"Best practices","icon":"compass","pages":[{"title":"Overview","href":"/enterspeed/best-practices/overview"},{"title":"Ingest integrations","href":"/enterspeed/best-practices/ingest-integrations"},{"title":"Schemas","href":"/enterspeed/best-practices/schemas"},{"title":"Indexes","href":"/enterspeed/best-practices/indexes"}]},{"group":"CLI","icon":"terminal","pages":[{"title":"Overview","href":"/enterspeed/tooling/cli/overview"},{"title":"Getting started","href":"/enterspeed/tooling/cli/getting-started"},{"title":"Keep schemas in version control","href":"/enterspeed/tooling/cli/keep-schemas-in-version-control"},{"title":"Continuous Deployment","href":"/enterspeed/tooling/cli/continuous-deployment"},{"title":"Developer setup","href":"/enterspeed/tooling/cli/developer-setup"}]},{"group":"MCP server","icon":"plug","pages":[{"title":"Overview","href":"/enterspeed/mcp-server/overview"},{"title":"Documentation MCP","href":"/enterspeed/mcp-server/documentation-mcp/overview"},{"group":"Query MCP","pages":[{"title":"Overview","href":"/enterspeed/mcp-server/query-mcp/overview"},{"title":"Connecting an agent","href":"/enterspeed/mcp-server/query-mcp/connecting-an-agent"},{"title":"Connecting a client","href":"/enterspeed/mcp-server/query-mcp/connecting-a-client"}]},{"group":"Management MCP","pages":[{"title":"Overview","href":"/enterspeed/mcp-server/management-mcp/overview"},{"title":"Tools","href":"/enterspeed/mcp-server/management-mcp/tools"}]}]}]},{"product":"Speedtrain","icon":"microchip-ai","description":"Governed AI content enrichment","pages":[{"title":"Speedtrain","href":"/speedtrain/intro"}]}]},"basePath":"","title":"3. Designing your APIs - Enterspeed Docs","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CvtNkYOX.js","lightbox-handle-r17bVUz3.js"]}