<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Documentation - wizzdi</title>
	<atom:link href="https://wizzdi.com/docs-category/documentation/feed/" rel="self" type="application/rss+xml" />
	<link>https://wizzdi.com</link>
	<description>Wizzdi No Code</description>
	<lastBuildDate>Sun, 08 Dec 2024 07:37:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://wizzdi.com/wp-content/uploads/2024/07/cropped-favicon-32x32.png</url>
	<title>Documentation - wizzdi</title>
	<link>https://wizzdi.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wizzdi Cloud User Guide</title>
		<link>https://wizzdi.com/docs/documentation/wizzdi-cloud-user-guide/</link>
					<comments>https://wizzdi.com/docs/documentation/wizzdi-cloud-user-guide/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 11:10:25 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1689</guid>

					<description><![CDATA[<p>Welcome Wizzdi Cloud simplifies and accelerates application development by enabling users to deploy products anywhere without code dependencies. You Built It; You Own It: Wizzdi Cloud differs from almost all no-code platforms because it doesn’t restrict users to its ecosystem. After creating an App with Wizzdi Cloud, you can deploy it elsewhere. You can take your [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/wizzdi-cloud-user-guide/">Wizzdi Cloud User Guide</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>Welcome</h1>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud simplifies and accelerates application development by enabling users to deploy products anywhere without code dependencies.</p>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text"><a class="darkluplite--link" href="https://wizzdi.com/wizzdi-cloud-user-guide/#consumed">You Built It; You Own It</a>: </strong>Wizzdi Cloud differs from almost all no-code platforms because it doesn’t restrict users to its ecosystem. After creating an App with Wizzdi Cloud, you can deploy it elsewhere. You can take your code and work on it independently without returning to Wizzdi Cloud. Choose to modify or build upon your project outside of Wizzdi Cloud. You can do so easily. Especially with the Spring Boot runtime, your code will be free from Wizzdi-specific dependencies, ensuring standard coding practices are maintained. Once you choose to develop outside the Wizzdi Cloud while keeping the use of Wizzdi Cloud available, the system automatically integrates any external code, allowing you continuous access to Wizzdi Cloud’s advanced visual tools.</li>
<li class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud provides a comprehensive, no-code backend development platform; front-end development is coming soon. Here’s what it offers:
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Quality Assurance</strong>: The backends created are top-notch, aligning with industry standards.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Flexibility</strong>: Wizzdi Cloud is feature-rich yet flexible. Backend systems can optionally be refined and extended outside the system.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Tailored Solutions</strong>: While the platform caters to a wide range of needs, specific requirements might arise based on an organization’s unique technical background. Wizzdi Cloud is designed to be a starting point, allowing for such external enhancements. However, accessing standard libraries and code is supported in the platform, including a code editor for users preferring to code some parts of the system.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Risk-Free</strong>: Choosing Wizzdi Cloud carries no risk. It serves as a robust foundation, ensuring that users have the flexibility to expand and enhance their projects as required.</li>
</ol>
</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">AI integration: </strong>Wizzdi Cloud offers seamless integration with ChatGPT, allowing users to transition from problem descriptions to diagrams easily. ChatGPT integration is available in someplace and will be expanded in subsequent versions.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Deployment</strong>: Users can transition from diagrams to deployment on the Wizzdi customer high-availability cluster without coding. They can also pull their code and deploy it elsewhere using the <em class="wpc--darkluplite-element darkluplite--text">Docker</em> script.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">UI Builder</strong>: A UI builder tool will be available in H1 2025. Wizzdi Cloud User Interface builder is designed to create <a class="_ps2id darkluplite--link" href="https://flutter.dev/" data-ps2id-offset="">Google Flutter-based </a>mobile and web applications.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Hosting Options</strong>: The backend system can be hosted on-premises, in a user’s cloud, or the Wizzdi Cloud. It includes a one-line Docker boot option for easy deployment of Linux, Windows, and Mac.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Repository Integration</strong>: The platform integrates with popular repositories like GitHub, GitLab, and Bitbucket.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Development Patterns</strong>: Wizzdi Cloud supports multiple development strategies: full no-code development, a combination of no-code with traditional development, or using the no-code system as an assistant tool in the development process. This allows Wizzdi Cloud to contribute to the code base like any developer.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Reusability: </strong>Wizzdi Cloud is intended to facilitate reuse on a broad scale. This encompasses projects created by yourself and others using Wizzdi Cloud and the ability to access available artifacts from private or public repositories such as Maven Central, which houses over one million software artifacts.</li>
<li class="wpc--darkluplite-element darkluplite--text"><b class="wpc--darkluplite-element darkluplite--text">External Services: </b>Wizzdi Cloud includes extensive support for accessing services such as Google, SendGrid, and others; additionally, it supports importing the definitions for every available external service.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">MarketPlaces: </strong>Wizzdi Cloud supports public and private marketplaces. When apps are published to a marketplace, eligible users can clone or import them into any of their workspaces and use some or all of the app elements in their apps.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Runtimes and Multi-tenancy: </strong>Wizzdi Cloud has three run-times: Pure Spring Boot, FlexiCore Boot, and FlexiCore. FlexiCore Boot and FlexiCore are extensions of Spring and come with an integrated multi-tenancy system. This system allows role-based access control to both data and API endpoints. Both are open-source and can be found on <a class="darkluplite--link" href="http://flexicore.io/">FlexiCore</a>.The multi-tenancy in FlexiCore enables authorized users to combine data from different tenants and supports hierarchical structures. However, the Pure Spring run-time doesn’t have this multi-tenancy feature. All FlexiCore-based run-times work with standard Spring Boot libraries and development patterns.</li>
<li class="wpc--darkluplite-element darkluplite--text"><b class="wpc--darkluplite-element darkluplite--text">Security In pure Spring runtime: </b>Role-based access to API endpoints is also supported, and optionally so, users have access to data they have created only<b class="wpc--darkluplite-element darkluplite--text">.</b> App builders can define the roles and their access to the API endpoints.</li>
<li><strong>New features and bug tracking:</strong> Use the TODO support to allow stakeholders to describe new features and report bugs in your Apps. The unique backtracing feature tracks all the changes related to a specific TODO.</li>
<li><strong>Metrics: </strong>Support Spring Metrics. Spring Metrics is a feature of the Spring ecosystem that provides powerful tools for monitoring and managing application performance and behavior. It is often used with tools like Micrometer, Prometheus, and Grafana to collect, store, and visualize application metrics.</li>
</ol>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Note On Hierarchical Multi-Tenancy: </strong></p>
<p class="wpc--darkluplite-element darkluplite--text"><em class="wpc--darkluplite-element darkluplite--text">Hierarchical multi-tenancy</em> refers to a structured, tree-like organization of tenants within a system. Unlike the traditional flat model, where all tenants are at the same level, the hierarchical approach allows for <em class="wpc--darkluplite-element darkluplite--text">nested</em> multi-tenancy. In the context of Wizzdi Cloud and its support for hierarchical multi-tenancy, tenant administrators can create additional tenants within their primary tenant. This nesting can occur to any depth, depending on the organization’s needs, application, and system policies. For instance, consider a large organization that operates globally. The top-level tenant could represent the global enterprise. Beneath that, regional tenants could be created for North America, Europe, Asia, etc. Within the Europe tenant, further sub-tenants could be established for individual countries like France, Germany, and the UK. And even within those country-level tenants, you could have more granular tenants representing different departments or offices. Any users granted the correct permissions, such as an administrator of a tenant, can access the data on the tenants created in the tenant he administrates and &#8216;below&#8217;.</p><p>The post <a href="https://wizzdi.com/docs/documentation/wizzdi-cloud-user-guide/">Wizzdi Cloud User Guide</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/wizzdi-cloud-user-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Login/Register</title>
		<link>https://wizzdi.com/docs/documentation/login-register/</link>
					<comments>https://wizzdi.com/docs/documentation/login-register/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 11:10:47 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1691</guid>

					<description><![CDATA[<p>When starting Wizzdi Cloud, you will see a similar screen; you may sign up using your email and password or your Google/GitHub accounts. &#160; Note: Do not use the same email for one account using SSO like Google&#8217;s and another using email and password.</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/login-register/">Login/Register</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wpc--darkluplite-element darkluplite--text">When starting Wizzdi Cloud, you will see a similar screen; you may sign up using your email and password or your Google/GitHub accounts.</p>
<p>&nbsp;</p>
<figure id="attachment_2570" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 390px;" aria-describedby="caption-attachment-2570"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-2078" src="https://wizzdi.com/wp-content/uploads/2024/04/sign-inup-1024x983.jpg" alt="" width="350" height="336" srcset="https://wizzdi.com/wp-content/uploads/2024/04/sign-inup-1024x983.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/sign-inup-300x288.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/sign-inup-768x737.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/sign-inup-1536x1475.jpg 1536w, https://wizzdi.com/wp-content/uploads/2024/04/sign-inup.jpg 1859w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-2570" class="wp-caption-text wpc--darkluplite-element darkluplite--text">
<strong></p>
<p>Note:</strong> Do not use the same email for one account using SSO like Google&#8217;s and another using email and password.</figcaption></figure>
<p class="wpc--darkluplite-element"><p>The post <a href="https://wizzdi.com/docs/documentation/login-register/">Login/Register</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/login-register/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>My Apps</title>
		<link>https://wizzdi.com/docs/documentation/my-apps/</link>
					<comments>https://wizzdi.com/docs/documentation/my-apps/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 11:11:07 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1693</guid>

					<description><![CDATA[<p>Introduction An App consists of backend and front-end components, forming a complete software application. You can search for your apps in the ‘My Apps’ view. Apps are arranged in Workspaces, and you can invite other users to your workspace while controlling their permissions. The latest workspace used will be the default one when you log [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/my-apps/">My Apps</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="wpc--darkluplite-element darkluplite--text">Introduction</h1>
<p>An App consists of backend and front-end components, forming a complete software application.</p>
<p class="wpc--darkluplite-element darkluplite--text">You can search for your apps in the ‘My Apps’ view. Apps are arranged in Workspaces, and you can invite other users to your workspace while controlling their permissions. The latest workspace used will be the default one when you log in.</p>
<figure id="attachment_3430" class="wp-caption wpc--darkluplite-element aligncenter" aria-describedby="caption-attachment-3430"><figcaption id="caption-attachment-3430" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<figure id="attachment_3432" class="wp-caption alignnone wpc--darkluplite-element" aria-describedby="caption-attachment-3432"><img decoding="async" class="aligncenter wp-image-2081" src="https://wizzdi.com/wp-content/uploads/2024/04/app-view-3.jpg" alt="" width="750" height="336" srcset="https://wizzdi.com/wp-content/uploads/2024/04/app-view-3.jpg 1917w, https://wizzdi.com/wp-content/uploads/2024/04/app-view-3-300x135.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/app-view-3-1024x459.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/app-view-3-768x345.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/app-view-3-1536x689.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption id="caption-attachment-3432" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<h1 class="wpc--darkluplite-element darkluplite--text">The Walkthrough</h1>
<p class="wpc--darkluplite-element darkluplite--text">When starting the system the first time, you will be offered a walkthrough of the system, where you will be guided in building a simple yet complete backend.  You can always start the walkthrough from the top right menu. When stopped, the current walkthrough can always be resumed unless discarded.</p>
<figure id="attachment_2574" class="wp-caption wpc--darkluplite-element aligncenter" aria-describedby="caption-attachment-2574"><img decoding="async" class="aligncenter wp-image-2080" src="https://wizzdi.com/wp-content/uploads/2024/04/walk-through-1024x487.jpg" alt="" width="750" height="357" srcset="https://wizzdi.com/wp-content/uploads/2024/04/walk-through-1024x487.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/walk-through-300x143.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/walk-through-768x365.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/walk-through-1536x730.jpg 1536w, https://wizzdi.com/wp-content/uploads/2024/04/walk-through-2048x973.jpg 2048w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption id="caption-attachment-2574" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Opening screen with a Walkthrough prompt</figcaption></figure><p>The post <a href="https://wizzdi.com/docs/documentation/my-apps/">My Apps</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/my-apps/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>App</title>
		<link>https://wizzdi.com/docs/documentation/app/</link>
					<comments>https://wizzdi.com/docs/documentation/app/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 11:16:41 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1697</guid>

					<description><![CDATA[<p>Introduction In the context of Wizzdi Cloud, an “App” represents a holistic software solution, encompassing its back-end and front-end facets. Back-end Components These form the engine room of your app, managing the underlying logic, databases, and integrations. Deployment Flexibility: With just a click, these components can be deployed either on Wizzdi Cloud’s infrastructure, your cloud [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/app/">App</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>Introduction</h1>
<p>In the context of Wizzdi Cloud, an “App” represents a holistic software solution, encompassing its back-end and front-end facets.</p>
<h1><strong>Back-end Components</strong></h1>
<ul>
<li>These form the engine room of your app, managing the underlying logic, databases, and integrations.</li>
<li>Deployment Flexibility: With just a click, these components can be deployed either on Wizzdi Cloud’s infrastructure, your cloud setup, an on-premises server, or even directly on a laptop.</li>
</ul>
<h1><strong>Front-end Components</strong></h1>
<ul>
<li>This refers to the user interface – what the end-users interact with.</li>
<li>Deployment Options: For mobile applications, the front end can be rolled out on platforms like the Apple App Store or Google Play. Conversely, for web apps, the front end is deployed as static files residing on the back-end infrastructure.</li>
<li>The current version of Wizzdi Cloud doesn’t include the front-end tools; these are planned for Q4 2024.</li>
</ul>
<h1><strong>UI Development &amp; Integration</strong></h1>
<ul>
<li>While Wizzdi Cloud’s UI builder is in the pipeline, users aren’t limited in their choice of interface design tools. You can craft the UI using your preferred software and subsequently integrate it with Wizzdi Cloud, which serves as a backend.</li>
</ul>
<h1><strong>API Exposures</strong></h1>
<ul>
<li>The deployed back-end doesn’t exist in isolation; it provides a <a href="https://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank" rel="noopener noreferrer">REST API</a> suite, allowing for flexible integrations and interactions with other software or systems.</li>
<li>These APIs are accessible via our integrated OpenAPI/Swagger interface, which offers a clear, interactive representation of the available endpoints. This facilitates understanding and testing.</li>
</ul>
<p>In essence, Wizzdi Cloud offers a platform that encapsulates an app’s operational core (back-end) and user-facing layer (front-end), allowing developers and organizations a streamlined approach to app development and deployment.</p>
<h1>Design Approaches</h1>
<h2><strong> Domain-First Approach</strong></h2>
<p>A domain-first approach emphasizes the importance of understanding the data structure of the system you want to create. Here’s how it works:</p>
<ul>
<li><strong>Begin with the Basics</strong>: Using Wizzdi Cloud’s intuitive diagramming tools, you’ll outline your domain model. This means identifying the core entities or ‘<em><i>Things</i></em>‘ that your system will interact with.</li>
<li><strong>Intuitive for Domain Experts</strong>: The appeal of this approach is its accessibility to domain experts — those who understand the requirements of an application from a functional perspective rather than a technical one. Take, for instance, a school principal: She would intuitively know that managing a school involves entities like Class, Classroom, Teacher, Student, Subject, etc.  See: <a href="https://wizzdi.com/?p=2766&amp;preview=true" target="_blank" rel="noopener noreferrer">Wizzdi Cloud for Domain Experts</a></li>
<li><strong>Seamless Backend Generation</strong>: Once you’ve established the entities and their interrelationships, Wizzdi Cloud takes over. A functional backend is generated automatically, with all necessary APIs to manage these entities. This can be grasped visually when running the Walkthrough.</li>
</ul>
<h2><strong> Contract-First Approach</strong></h2>
<p>The contract-first method flips the script by focusing on user interaction first. Here’s the breakdown:</p>
<ul>
<li><strong>UI as the Starting Point</strong>: Instead of diving deep into the domain model, this approach starts with the user interface design. This design process inherently outlines the services that the backend needs to provide.</li>
<li><strong>Service Definition through OpenAPI</strong>: The next step usually involves defining the services following the UI design. This often culminates in creating an OpenAPI document, a contract for what services the backend should offer.</li>
<li><strong>Direct Integration with Wizzdi Cloud</strong>: Wizzdi Cloud can directly import and recognize the OpenAPI document. Upon importing, a set of exposed APIs materializes in the system. Subsequent steps involve fleshing out these APIs — linking them to specific business logic, integrating with other systems, drawing up custom queries, and aligning them with the eventual domain model.</li>
</ul>
<p>Whether you’re a domain expert wanting to shape a system around core entities or a designer aiming to sculpt backend services based on user interfaces, Wizzdi Cloud accommodates both avenues, providing a robust platform for achieving your visions.</p>
<h1>How to</h1>
<h2>Create an App</h2>
<p>Click on the + new APP button and fill in the required fields for the app.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/new-app-1.jpg" alt="" width="202" height="123" /></p>
<p>&nbsp;</p>
<p>The New App button.</p>
<p>Once clicked, the Create New App dialog is presented; enter a name for the app.</p>
<p>The advanced section is discussed later in this document.</p>
<h3></h3>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/new-app-2.jpg" alt="" width="500" height="537" /></p>
<p>&nbsp;</p>
<p><strong><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2023/08/wait-300x293.jpg" sizes="(max-width: 89px) 100vw, 89px" srcset="https://wizzdi.com/wp-content/uploads/2023/08/wait-300x293.jpg 300w, https://wizzdi.com/wp-content/uploads/2023/08/wait.jpg 541w" alt="" width="89" height="87" /></strong> The App creation may take a while (20-30 seconds); thanks for being patient.</p>
<p>&nbsp;</p>
<h2><strong>The Overview</strong></h2>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/main-1.jpg" alt="" width="688" height="251" /></p>
<p>&nbsp;</p>
<p>App Overview.</p>
<h3>App Details</h3>
<p>The App details are displayed at the top left corner of the APP Overview.</p>
<p>At the top right, you can see the current version you are working on and the APP runtime; Wizzdi Cloud supports three different runtimes. See below in this document.</p>
<h4><strong>Maven Coordinates</strong></h4>
<p>Each App has a unique designation comprising two values and the version. These are called <a href="https://maven.apache.org/maven-conventions.html" target="_blank" rel="noopener noreferrer"><em><i>Maven Coordinates</i></em>:</a></p>
<ul>
<li>The GroupId and the Artifact Id. The group Id is usually in the form yyy.xxxxxx<br />
and the [yyy] is one of com, org, tv, etc. This is similar to the suffix of a URL.<br />
The [xxxxx] is usually the name of the company or organization owning the App.</li>
<li>The Artifact ID uniquely designates the App within the group.</li>
</ul>
<h4><strong>Package Name</strong></h4>
<p>Whether you ever look at the code or not, Wizzdi Cloud generates code. This is done under the hood; most users need not be concerned.<br />
The code for the backend App is structured in packages, where the <a href="https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html" target="_blank" rel="noopener noreferrer">package name</a> across all parts of the App typically begins with a predetermined prefix.<br />
The convention is similar to the Group ID.</p>
<p>The default group-id and package name can be set on the user account.</p>
<h4><strong>Color</strong></h4>
<p>The color for the App in several locations in Wizzdi Cloud.</p>
<h4><strong>Icon</strong></h4>
<p>This is the App’s icon, which Wizzdi Cloud randomly assigns. Follow the steps below to select a different icon.</p>
<h4><strong>Static UI</strong></h4>
<p>The current version of Wizzdi Cloud does not have a UI builder for the client-facing side of the application. However, once the initial version of the server is available, you can develop a front-end web application using any available tools and upload it here. Once the back-end application is deployed, the front-end application will be served to users.</p>
<h3>Editing the App Details</h3>
<p>Click on <em><i>edit details </i></em>to edit most of the above items.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/details-2.jpg" alt="" width="593" height="358" /></p>
<h4><strong>Editable items</strong></h4>
<p>App Name.</p>
<p>App Description.</p>
<p>Group Id.</p>
<p>Package Name.</p>
<p>Artifact Id.</p>
<p>App Color.</p>
<p>App Icon.</p>
<p>Static files.</p>
<h4>Deployment Status</h4>
<p>This is a collapsible panel providing information on the deployed app.</p>
<p>Accessing the Commit operation from this area is possible when the app has never been deployed.</p>
<p>When an App is committed successfully, it becomes ready for deployment.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/deployment-status.jpg" alt="" width="830" height="70" /></p>
<p>&nbsp;</p>
<p>Deployment panel: when the app is deployed, uninstall becomes available.</p>
<p>Click on the small arrow (marked by a yellow rectangle) to open the panel.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/deployment-panel-empty.jpg" alt="" width="804" height="331" /></p>
<p>Deployment Panel when the App has never been deployed.</p>
<p>If the App was deployed at least once and has not been uninstalled, the deployment panel has more information:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/deployment-panel-full.jpg" alt="" width="816" height="327" /></p>
<p>&nbsp;</p>
<p>Deployment Panel is when the app has been deployed at least once.</p>
<h5><strong>App Url</strong></h5>
<p>This is the URL of the static files when deployed on the Wizzdi Customer Cluster, in case they were uploaded.</p>
<h5><strong>Swagger Url</strong></h5>
<p>This URL should always be available and provide the standard Swagger interface for accessing the deployed server&#8217;s exposed API. Once you display the Swagger interface, you can get the OpenAPI document.</p>
<h5><strong>App Version</strong></h5>
<p>The currently deployed version. <em><i>For information only.</i></em></p>
<h5><a href="https://aws.amazon.com/compare/the-difference-between-docker-images-and-containers/#:~:text=Docker%20is%20a%20software%20platform,for%20an%20application%20to%20run." target="_blank" rel="noopener noreferrer"><strong>Docker</strong></a><strong> Image</strong></h5>
<p>The currently created docker image that was deployed on the Kubernetes cluster. <em><i>For information only.</i></em></p>
<p>&nbsp;</p>
<h5><strong>Chart Version</strong></h5>
<p>A chart is a collection of files describing a set of Kubernetes resources.<br />
The displayed version designates the version used for deployment. <em><i>For information only.</i></em></p>
<h4>The App Building Process</h4>
<p>This panel provides access to some of the editors related to the back-end app-building process. This list is for first-time users who need help understanding the next step. You can access the Walkthrough from the top-right menu to see the order of using the editors.</p>
<p>&nbsp;</p>
<h5><strong>Create your domain model.</strong></h5>
<p>If you’re not using the contract-first approach, preparing your domain model is the first and mandatory step. Once your domain model is ready, you can commit and deploy your app. After deployment, the back end will include the API endpoints that manage the entities within the domain model.</p>
<h5><strong>Add business logic</strong></h5>
<p>In most cases, the API endpoints resulting from the domain model will not be sufficient to meet all the project requirements. Therefore, you may need to add additional business flows to enhance the functionality of your application.</p>
<p>Business logic diagrams can help you add extra logic triggered by various events such as data creation or updates, scheduling, webhooks, other business logic events, or messages arriving through Kafka, Websocket, and MQTT.</p>
<h5><strong>Add Consumed API</strong></h5>
<p>We utilize the Consumed API module to access external services like SendGrid or Google. You have two options for creating the full API: either use the OpenAPI import support or define the external API endpoints one by one by following the documentation provided by the external service. This step is only required if you need to access these external services.</p>
<p>The Business Flow diagram tools currently offer several predefined External API endpoints. If a service is unavailable in the already imported APIs, you can always import or create it yourself.</p>
<h5><strong>Setup your GIT repositories</strong></h5>
<p>This step is mandatory before deploying the created app or accessing the code on a repository. You must grant Wizzdi Cloud access to a remote repository available on Github or a similar service.</p>
<h4>Marketplaces</h4>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/bottom-right-1.jpg" alt="" width="819" height="259" /></p>
<p>Additional panels.</p>
<p>You can publish a committed App in your marketplaces to share your work with others. Unlike workspaces where several people can work and access the same app, publishing in a marketplace saves a frozen version of the app. This allows others to clone or import the App, modify it, or access its functionality from their apps. You can find more information about marketplaces in the marketplaces section.</p>
<h4>Data visualization</h4>
<p>This section contains statistics about the current application.</p>
<p>Click the small arrow to the right of ‘Data Visualization’, and a similar view to the image below should appear:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/data-visuakization-1.jpg" alt="" width="799" height="728" /></p>
<p>Data Visualization when hovering over the Entities slice.</p>
<p>Hover over a pie slice to view statistics on the element type it represents.</p>
<h4>Statistics</h4>
<p>Provides some statistics on the created code. It should be noted that Wizzdi Cloud generates code before an App can be deployed. Some users will enhance the code; others will never see it as they prefer a full, no-code workflow.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/code-generated.jpg" alt="" width="832" height="160" /></p>
<p>Code Generated example.</p>
<h2>The App Tools Menu</h2>
<p>This is a short description of the tools available to build an app.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-4193" src="https://wizzdi.com/wp-content/uploads/2024/04/app-menu.jpg" alt="" width="350" height="1149" srcset="https://wizzdi.com/wp-content/uploads/2024/04/app-menu.jpg 496w, https://wizzdi.com/wp-content/uploads/2024/04/app-menu-91x300.jpg 91w, https://wizzdi.com/wp-content/uploads/2024/04/app-menu-312x1024.jpg 312w, https://wizzdi.com/wp-content/uploads/2024/04/app-menu-468x1536.jpg 468w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<h3>Legend</h3>
<ol>
<li>The Domain Model Diagrams editor is where you define entities and their relationships. <span style="box-sizing: border-box; margin: 0px; padding: 0px;">Following this step, your APP <a href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank" rel="noopener">crud </a>services and APIs are automatically created by default</span>.</li>
<li>The consumed APIs section defines external services your App can access, such as Google Services, Slack, and other servers. Several such APIs are available by default and require no additional definitions. Consumed APIs can be imported from <a href="https://en.wikipedia.org/wiki/OpenAPI_Specification">OpenAPI</a> documents or manually constructed here.</li>
<li>The Exposed APIs section manages the APIs your APP exposed. These include automatically created <a href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete">crud</a> APIs, imported <a href="https://en.wikipedia.org/wiki/OpenAPI_Specification">OpenAPI</a> documents, or manually constructed ones here.</li>
<li>The Runtime instances section is<span style="box-sizing: border-box; margin: 0px; padding: 0px;"> currently <strong>unavailable</strong>. When a target server starts for the first time, these are used to create default data in the database</span>. Some default data<em>, </em>such as <em><em>roles </em></em>and<em><em> tenants, </em></em>can be defined elsewhere.</li>
<li>The Custom Queries section defines complex queries on your entities using an easy-to-use interface. Queries translate to Java criteria API and, when executed, to SQL.</li>
<li>The Depedencis Section defines the modules your app uses. These include automatically added modules, such as Spring libraries, and any public or private Java binaries you want to access from your App. The most common source for such libraries is <a href="https://central.sonatype.com/">Maven Central</a>.</li>
<li>The Components section lists the App components. For Spring runtime, a single component is available and is automatically created by Wizzdi Cloud. Flexicore-based runtime supports runtime plugins, so plugins can be designed using this feature.</li>
</ol><p>The post <a href="https://wizzdi.com/docs/documentation/app/">App</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/app/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Domain Model</title>
		<link>https://wizzdi.com/docs/documentation/domain-model/</link>
					<comments>https://wizzdi.com/docs/documentation/domain-model/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 11:30:28 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1703</guid>

					<description><![CDATA[<p>Introduction The domain model is a conceptual framework that outlines the different entities, their attributes, relationships, and constraints that govern the problem domain of a specific application or system. It acts as a blueprint for comprehending, documenting, and communicating the structure and semantics of the application domain space. Essential aspects of a domain model include: [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/domain-model/">Domain Model</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="wpc--darkluplite-element darkluplite--text">Introduction</h1>
<p class="wpc--darkluplite-element darkluplite--text">The domain model is a conceptual framework that outlines the different entities, their attributes, relationships, and constraints that govern the problem domain of a specific application or system. It acts as a blueprint for comprehending, documenting, and communicating the structure and semantics of the application domain space.</p>
<p class="wpc--darkluplite-element darkluplite--text">Essential aspects of a domain model include:</p>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Entities </strong> These are the primary elements within the domain. For example, in a banking application, entities might include Account, Customer, Transaction, etc.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Fields</strong>: Characteristics or properties of entities. For example, a Customer entity might have fields like name, address, and phone number.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Relationships </strong>are connections between entities that indicate how they interact or are related to each other. For instance, a Customer may have one or more Orders.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Inheritance Associations: </strong>This refers to the relationship between two entities, where a child entity inherits fields from a parent entity.</li>
</ol>
<p class="wpc--darkluplite-element darkluplite--text">Creating a domain model is often one of the initial steps in the design phase of software development. It helps stakeholders understand the system and provides a foundation for the development of the system’s architecture and functionality. This approach is especially prevalent in methodologies like Domain-Driven Design (DDD), which focuses on developing a rich understanding and model of the domain as a core to the software development process.</p>
<p class="wpc--darkluplite-element darkluplite--text">Application Domain Experts can create the domain model using the tools provided by Wizzdi Cloud as long as the concepts of <em class="wpc--darkluplite-element darkluplite--text">entities, fields, </em>and <em class="wpc--darkluplite-element darkluplite--text">relationships </em>are understood. It is easy to apply changes to the existing and deployed App, reflecting changing requirements or a more profound and better understanding of the application domain.</p>
<p class="wpc--darkluplite-element darkluplite--text">The domain model in Wizzdi Cloud is managed through one or more Entity Diagrams. This arrangement depicts the app’s data architecture and the relationships between different data entities.</p>
<p class="wpc--darkluplite-element darkluplite--text">Upon finalizing the domain model, the app is ready for deployment. This process exposes a CRUD  API, which facilitates the management of the entities defined in the domain model. Any adjustments made to the domain model automatically result in updates to the API endpoints, reflecting the changes without manual intervention. This early version of the APP includes the required API endpoints to manage the created entities.</p>
<p class="wpc--darkluplite-element darkluplite--text">Users will likely introduce additional APIs, services, and functionalities using Wizzdi Cloud’s built-in tools or incorporate custom code using their preferred development tools. Regardless of the method chosen, updates to the domain model and the corresponding APIs are seamlessly integrated into the app. Wizzdi Cloud maintains continuous synchronization with the developers’ modifications, ensuring the app remains consistent with the evolving domain model.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Entity Diagrams</strong>: Within the domain model section, you can create multiple entity diagrams. These visual representations help you understand and design your system’s core data architecture.</li>
</ul>
<div class="flex-1 overflow-hidden wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-79elbk h-full dark:bg-gray-800 wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-1n7m0yu wpc--darkluplite-element">
<div class="flex flex-col text-sm dark:bg-gray-800 wpc--darkluplite-element">
<div class="group w-full text-token-text-primary border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654] wpc--darkluplite-element">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-[38rem] xl:max-w-3xl md:py-6 lg:px-0 m-auto wpc--darkluplite-element">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)] wpc--darkluplite-element">
<div class="flex flex-grow flex-col gap-3 wpc--darkluplite-element">
<div class="min-h-[20px] flex flex-col items-start gap-3 overflow-x-auto whitespace-pre-wrap break-words wpc--darkluplite-element">
<div class="markdown prose w-full break-words dark:prose-invert dark wpc--darkluplite-element">
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Creation and Import Options</strong>: Entities can be manually created or imported from various sources, such as other projects. Entities can be referenced from other workspace projects or marketplaces you can access.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Extensibility and Inheritance</strong>: An entity isn’t restricted to a standalone structure. It can extend or inherit from other entities, cascading down properties and features from its parent or super-entities. This inheritance mechanism allows for a layered and hierarchical design, minimizing redundancy. Support for mapped Superclasses<em class="wpc--darkluplite-element"> </em>is provided.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Relationships</strong>: Entities can be interconnected in various ways, reflecting their real-world relationships. Wizzdi Cloud supports diverse relation types:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">One-to-Many</strong>: A single instance of one entity relates to multiple instances of another.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Many-to-One</strong>: Multiple instances of one entity associated with a single instance of another.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Many-to-Many</strong>: Instances of one entity can relate to multiple instances of another and vice-versa.</li>
</ul>
</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Backend Representation</strong>: Entities typically translate to tables within a database in traditional backend structures for those who want a peek behind the curtain. The relational database used in Wizzdi Cloud is PostgreSQL.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Relational Database Integration</strong>: When deployed, Wizzdi Cloud is engineered to leverage the power of relational databases. So, in essence, each entity you design likely corresponds to a table in this database, establishing the groundwork for your backend’s architecture.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2432" src="https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1.jpg" alt="" width="750" height="406" srcset="https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1-300x162.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1-1024x555.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1-768x416.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/entity-diagrams-2048x1109-1-1536x832.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_2613" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2613"><figcaption id="caption-attachment-2613" class="wp-caption-text wpc--darkluplite-element darkluplite--text">A typical Entity Diagram View</figcaption></figure>
<p class="wpc--darkluplite-element">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<h1 class="wpc--darkluplite-element darkluplite--text">Overview</h1>
<p class="wpc--darkluplite-element darkluplite--text">Start the domain model editor by clicking on <em class="wpc--darkluplite-element darkluplite--text">Domain Model </em>in the app’s side menu.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2434" src="https://wizzdi.com/wp-content/uploads/2024/04/domain-editor-feb-1-1.jpg" alt="" width="750" height="315" srcset="https://wizzdi.com/wp-content/uploads/2024/04/domain-editor-feb-1-1.jpg 928w, https://wizzdi.com/wp-content/uploads/2024/04/domain-editor-feb-1-1-300x126.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/domain-editor-feb-1-1-768x323.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3308" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3308"><figcaption id="caption-attachment-3308" class="wp-caption-text wpc--darkluplite-element darkluplite--text">The Domain Model Editor</figcaption></figure>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">This is the diagram’s name; you can use #10 to edit the name. The small [x] lets you remove the diagram from the view; the diagram is NOT deleted and is still available when adding a new diagram.</li>
<li class="wpc--darkluplite-element darkluplite--text">Add a new diagram; if diagrams have been removed, they appear for selection.</li>
<li class="wpc--darkluplite-element darkluplite--text">Zoom out. You can also zoom out using the mouse wheel.</li>
<li class="wpc--darkluplite-element darkluplite--text">Restore the view to 100% zoom.</li>
<li class="wpc--darkluplite-element darkluplite--text">Zoom in. It’s worth noting that you can also zoom in using the mouse wheel.</li>
<li class="wpc--darkluplite-element darkluplite--text">Undo</li>
<li class="wpc--darkluplite-element darkluplite--text">Redo</li>
<li class="wpc--darkluplite-element darkluplite--text">Auto-arrange the current diagram.</li>
<li class="wpc--darkluplite-element darkluplite--text">Make the view larger; the left-side menu is made invisible.</li>
<li class="wpc--darkluplite-element darkluplite--text">Rename the diagram.</li>
<li class="wpc--darkluplite-element darkluplite--text">Add a description to the diagram.</li>
<li class="wpc--darkluplite-element darkluplite--text">Add a new <em class="wpc--darkluplite-element darkluplite--text">Entity</em>.</li>
<li class="wpc--darkluplite-element darkluplite--text">Import an <em class="wpc--darkluplite-element darkluplite--text">Entity</em> or an <em class="wpc--darkluplite-element darkluplite--text">Enum</em>; Import items from the current or referenced projects into the current diagram.</li>
</ol>
<h2 class="wpc--darkluplite-element darkluplite--text">Entities</h2>
<p class="wpc--darkluplite-element darkluplite--text">Create an entity using right-click</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2436" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click.jpg" alt="" width="350" height="196" srcset="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click.jpg 894w, https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click-300x168.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click-768x430.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_2659" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2659"><figcaption id="caption-attachment-2659" class="wp-caption-text wpc--darkluplite-element darkluplite--text">The new entity selection from the right-click menu</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">The New Entity has a name field. Entity names must start with a Capital letter. The right-side menu provides a Description field for the currently selected entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2437" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-name-1.jpg" alt="" width="350" height="242" /></p>
<figure id="attachment_3309" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3309"><figcaption id="caption-attachment-3309" class="wp-caption-text wpc--darkluplite-element darkluplite--text">New Entity dialog</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Once an entity is created, the following tools and actions are available. The same action is often available from multiple places.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2439" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-options-1.jpg" alt="" width="350" height="202" /></p>
<figure id="attachment_3314" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3314"><figcaption id="caption-attachment-3314" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Options available on the created Entity</figcaption></figure>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Warning indicator: hover over the icon for more information about the warning.</li>
<li class="wpc--darkluplite-element darkluplite--text">Additional actions menu.</li>
<li class="wpc--darkluplite-element darkluplite--text">The entity can be renamed by double-clicking on the name; editing is then available. Renaming an entity is also available from the right-side menu.</li>
<li class="wpc--darkluplite-element darkluplite--text">New field button. Add a new field to the entity.</li>
<li class="wpc--darkluplite-element darkluplite--text">Connect to other entities, which will be discussed later in this guide.</li>
</ol>
<p class="wpc--darkluplite-element darkluplite--text">This menu is available from the three dots button on the entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2441" src="https://wizzdi.com/wp-content/uploads/2024/04/entity-option-menu-1-1.jpg" alt="" width="350" height="339" /></p>
<figure id="attachment_3317" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3317"><figcaption id="caption-attachment-3317" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Entity three dots menu.</figcaption></figure>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Add a new field. This option is available from the bottom of the entity thumbnail and the right-side menu.</li>
<li class="wpc--darkluplite-element darkluplite--text">Entities can have indexes added to improve data retrieval speed. Refer below for additional information.</li>
<li class="wpc--darkluplite-element darkluplite--text">When creating an entity relationship involving entities from multiple diagrams, copying and moving entities to another diagram is necessary. This operation concerns only the arrangement of entities on diagrams.</li>
<li class="wpc--darkluplite-element darkluplite--text">Move to another diagram, similar to the previous section, but the entity is removed.</li>
<li class="wpc--darkluplite-element darkluplite--text">Change the color of the entity in the top bar. It helps in better organizing the diagram.</li>
<li class="wpc--darkluplite-element darkluplite--text">Remove from diagram; Remove the entity from the diagram. The entity is <strong class="wpc--darkluplite-element darkluplite--text">not </strong>deleted.</li>
<li class="wpc--darkluplite-element darkluplite--text">Delete the entity. The entity is deleted and removed from all diagrams.</li>
</ol>
<h2 class="wpc--darkluplite-element darkluplite--text">Inheritance</h2>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud supports inheritance, a cornerstone of Object-Oriented Programming (OOP). In data modeling and entity structures, inheritance allows one entity to inherit attributes or characteristics from another, establishing a hierarchical relationship between them.</p>
<p class="wpc--darkluplite-element darkluplite--text">For example, if there’s a base entity named ‘<em class="wpc--darkluplite-element darkluplite--text">Vehicle</em>‘ with attributes like <em class="wpc--darkluplite-element darkluplite--text">speed</em> and <em class="wpc--darkluplite-element darkluplite--text">weight</em>, a derived entity such as ‘<em class="wpc--darkluplite-element darkluplite--text">Car</em>‘ can inherit these attributes and might introduce new ones specific to it, like <em class="wpc--darkluplite-element darkluplite--text">trunk</em> size. By supporting inheritance in Wizzdi Cloud, users can create data models that depict these structured, hierarchical relationships, ensuring a more organized and intuitive representation of data. Furthermore, Wizzdi Cloud adeptly manages the underlying complexity of handling inheritance at the database level, abstracting these intricacies from the user and providing a seamless experience.<br class="wpc--darkluplite-element" />Furthermore, it’s important to note that inheritance is crucial in reusing domain models you or other users created on the Wizzdi cloud or available from the Wizzdi or other marketplaces. Through inheritance, you can modify and improve upon the original design of these models.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2442" src="https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1.jpg" alt="" width="750" height="446" srcset="https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1-300x178.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1-1024x609.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1-768x456.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/vehicles-2048x1217-1-1536x913.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>Inheritance example: Vehicles Cars, and Motorcycles</p>
<p class="wpc--darkluplite-element darkluplite--text">To create an inheritance link between an entity and its Super Entity, select the entity, drag the small circle on top of the Entity shape, and release it above the name of the S<em class="wpc--darkluplite-element darkluplite--text">uper Entity.</em></p>
<p class="wpc--darkluplite-element darkluplite--text">An entity can have only a single<em class="wpc--darkluplite-element darkluplite--text"> Super Entity</em>.  A single Super-Entity can have multiple ‘<em class="wpc--darkluplite-element darkluplite--text">children</em>‘ entities.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the three dots menu to detach an entity from its Super Entity. When an entity extends a super entity, all fields from the <em class="wpc--darkluplite-element darkluplite--text">super entity</em> are automatically inherited and visible within the extending entity. This inheritance can cascade through multiple levels or layers of hierarchy. It’s important to note that once fields are inherited, they become unchangeable on the child entity. To modify these fields, one must navigate to the original super entity where they are defined, even if this means moving up several levels in the inheritance chain.</p>
<p class="wpc--darkluplite-element darkluplite--text">The parent entity in the inheritance hierarchy can be a <em class="wpc--darkluplite-element darkluplite--text">Mapped Super Class. </em></p>
<p class="wpc--darkluplite-element darkluplite--text">A Mapped Superclass is a model from which other entities can inherit properties and mappings but is not itself an entity. It does not have its database table; instead, it allows its subclasses to inherit its properties, ensuring that these properties are mapped to the columns of the subclasses’ tables. This approach helps define standard fields (like id, name, description, createdAt, and updatedAt) across multiple entities without duplicating the mapping information in each entity class. This option should be preferred if you never need to manage the mapped superclass directly. For example, suppose the Mapped Super Class <em class="wpc--darkluplite-element darkluplite--text">Base</em> is defined to hold standard fields across multiple entities such as <em class="wpc--darkluplite-element darkluplite--text">name, description, createdAt</em>, and <em class="wpc--darkluplite-element darkluplite--text">updatedAt</em>. In that case, there is no need to manage the Base entity directly, as this entity is created only to save extra typing and make the refactoring of standard fields easier.</p>
<p class="wpc--darkluplite-element darkluplite--text">When a <i class="wpc--darkluplite-element darkluplite--text">Superclass is not a Mapped Superclass, it</i> and all its subclasses share the same table, with a discriminator column to differentiate between them.</p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Remove/Edit Inheritance</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">Lines connect the super-entity with its children when entities are related through inheritance. These lines can be hidden to simplify the diagram.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2444" src="https://wizzdi.com/wp-content/uploads/2024/04/doule-inheritence-1.jpg" alt="" width="750" height="512" srcset="https://wizzdi.com/wp-content/uploads/2024/04/doule-inheritence-1.jpg 990w, https://wizzdi.com/wp-content/uploads/2024/04/doule-inheritence-1-300x205.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/doule-inheritence-1-768x524.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3370" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3370"><figcaption id="caption-attachment-3370" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Double layer inheritance</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">A child entity shows its super-entity to the right side of its name; in the example above, <em class="wpc--darkluplite-element darkluplite--text">Base</em> extends <em class="wpc--darkluplite-element darkluplite--text">Country</em>, and <em class="wpc--darkluplite-element darkluplite--text">SuperBase</em> extends <em class="wpc--darkluplite-element darkluplite--text">Base</em>. When the inheritance line is clicked, a menu pops up. The inheritance can be deleted or hidden.</p>
<p class="wpc--darkluplite-element darkluplite--text">All inheritance lines up to the top become invisible when hidden, yet super-entity names remain visible on the entity top bar.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click the name of the super-entity on the right side of a ‘<em class="wpc--darkluplite-element darkluplite--text">Child’ </em>entity name to display a menu for showing the inheritance line up to the next level by <em class="wpc--darkluplite-element darkluplite--text">Show</em> or show all the inheritance lines through the top by <em class="wpc--darkluplite-element darkluplite--text">Show All.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2446" src="https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-1.jpg" alt="" width="750" height="585" srcset="https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-1.jpg 838w, https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-1-300x234.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-1-768x599.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3376" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3376"><figcaption id="caption-attachment-3376" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Super-Entity names on <em class="wpc--darkluplite-element darkluplite--text">Children</em> entities.<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-2448" src="https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-menu-1.jpg" alt="" width="350" height="215" srcset="https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-menu-1.jpg 431w, https://wizzdi.com/wp-content/uploads/2024/04/hidden-inheritence-menu-1-300x184.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></figcaption></figure>
<figure id="attachment_3377" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3377"><figcaption id="caption-attachment-3377" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Context menu by clicking on super-entity name</figcaption></figure>
<h3 class="wpc--darkluplite-element darkluplite--text">External Entities</h3>
<p class="wpc--darkluplite-element darkluplite--text">to import an external entity from a dependency (see project dependencies) by using either the import external button on the right side or by using the context menu on a visible space of the diagram,</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2449" src="https://wizzdi.com/wp-content/uploads/2024/04/import-from-button-1.jpg" alt="" width="350" height="381" /></p>
<p>Import an entity or enum</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2436" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click.jpg" alt="" width="350" height="196" srcset="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click.jpg 894w, https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click-300x168.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-right-click-768x430.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_3409" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3409"><figcaption id="caption-attachment-3409" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Import from the diagram context menu.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Use Internal to import Entities from the current App.</p>
<p class="wpc--darkluplite-element darkluplite--text">Use External to import from dependent apps.  These are Apps added to the <em class="wpc--darkluplite-element darkluplite--text">Dependencies </em>section.</p>
<h3 class="wpc--darkluplite-element darkluplite--text">Enums</h3>
<p class="wpc--darkluplite-element darkluplite--text">When creating a domain model, we sometimes prefer predefined values over entities. For instance, for Gender, we might list:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Female</li>
<li class="wpc--darkluplite-element darkluplite--text">Male</li>
<li class="wpc--darkluplite-element darkluplite--text">Undisclosed</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">Enums should be utilized in scenarios where the set of possible values is determined at the time of the application’s development, and there’s no anticipation of modifying these values post-deployment. Altering an enum necessitates updates to the application or its underlying code, reflecting a more static or immutable approach to handling certain data types.</p>
<p class="wpc--darkluplite-element darkluplite--text">Conversely, a dedicated table or entity structure provides a dynamic framework for managing possible values. This approach allows authorized users to add, remove, or modify the values as required without requiring direct App changes. It offers flexibility and adaptability.</p>
<p class="wpc--darkluplite-element darkluplite--text">Enum names must start with a Capital letter.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2450" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-name-2.jpg" alt="" width="350" height="242" /></p>
<p>New Enum Dialog</p>
<p class="wpc--darkluplite-element darkluplite--text">You can add Enums using the button on the screen’s right side area.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2452" src="https://wizzdi.com/wp-content/uploads/2024/04/new-entity-from-menu-1.jpg" alt="" width="350" height="342" /></p>
<figure id="attachment_3312" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3312"><figcaption id="caption-attachment-3312" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Adding Entity Or Enum from the right side</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Type a capitalized name, click the green checkmark, or hit the “enter” key.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2453" src="https://wizzdi.com/wp-content/uploads/2024/04/enter-name-enum.jpg" alt="" width="350" height="105" srcset="https://wizzdi.com/wp-content/uploads/2024/04/enter-name-enum.jpg 724w, https://wizzdi.com/wp-content/uploads/2024/04/enter-name-enum-300x90.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">To add values to an Enum, select it and click “add value”. You can continue adding values by hitting the “enter” key after each one.<br class="wpc--darkluplite-element" />Enum values can begin with either a capital or non-capital letter.</p>
<p class="wpc--darkluplite-element darkluplite--text">To rearrange Enum values, drag and drop to a new position.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2455" src="https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-enums.jpg" alt="" width="350" height="226" srcset="https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-enums.jpg 846w, https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-enums-300x194.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-enums-768x496.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<h4 class="wpc--darkluplite-element darkluplite--text">Importing Enums</h4>
<p class="wpc--darkluplite-element darkluplite--text">Use Internal to import Enums from the current App.</p>
<p class="wpc--darkluplite-element darkluplite--text">Use External to import from dependent apps.  These are Apps added to the <em class="wpc--darkluplite-element darkluplite--text">Dependencies </em>section.</p>
<h3 class="wpc--darkluplite-element darkluplite--text">Fields</h3>
<p class="wpc--darkluplite-element darkluplite--text">To add a field, select the entity and click the <em class="wpc--darkluplite-element darkluplite--text">‘+New field’ </em>button.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2456" src="https://wizzdi.com/wp-content/uploads/2024/04/new-field-1.jpg" alt="" width="350" height="253" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Type the new field name in the text box. Then, hit the ‘Enter’ key if you want to add another field, hit the <em class="wpc--darkluplite-element darkluplite--text">ESC</em> key to cancel, or click on the green check mark button to finish.</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2456" src="https://wizzdi.com/wp-content/uploads/2024/04/new-field-1.jpg" alt="" width="350" height="253" /></p>
<p class="wpc--darkluplite-element darkluplite--text">By default, fields are of the String type; this is a text field, limited in size unless the Lob option is used; see fields’ purpose below.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the field type to change the type.  Start typing to search for the required type.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2457" src="https://wizzdi.com/wp-content/uploads/2024/04/select-type-1-1.jpg" alt="" width="350" height="188" /></p>
<p class="wpc--darkluplite-element">Click on the type to change it.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2459" src="https://wizzdi.com/wp-content/uploads/2024/04/search-for-type-on-entity-1.jpg" alt="" width="350" height="215" srcset="https://wizzdi.com/wp-content/uploads/2024/04/search-for-type-on-entity-1.jpg 410w, https://wizzdi.com/wp-content/uploads/2024/04/search-for-type-on-entity-1-300x184.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element">Search for the type and select it.</p>
<p class="wpc--darkluplite-element darkluplite--text">The field type can be changed from the right-side menu once the field is selected.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2461" src="https://wizzdi.com/wp-content/uploads/2024/04/select-type-side-1.jpg" alt="" width="350" height="348" srcset="https://wizzdi.com/wp-content/uploads/2024/04/select-type-side-1.jpg 339w, https://wizzdi.com/wp-content/uploads/2024/04/select-type-side-1-300x298.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/select-type-side-1-150x150.jpg 150w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element">Search for type on the side menu.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the three dots (…) to access a more powerful tool for searching for a type.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2463" src="https://wizzdi.com/wp-content/uploads/2024/04/select-type-improved-1.jpg" alt="" width="350" height="418" srcset="https://wizzdi.com/wp-content/uploads/2024/04/select-type-improved-1.jpg 501w, https://wizzdi.com/wp-content/uploads/2024/04/select-type-improved-1-251x300.jpg 251w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Filter results by type name using the search box above, or use the drop-down to search by type’s grouping or origin.</p>
<p class="wpc--darkluplite-element darkluplite--text">The grouping includes Basic Types, Entities, Enums, and Types defined elsewhere in the current App or any library or App it references.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>other entities can be searched for when searching for a type. When another entity is selected for a field type, a reference to this entity is created. Below, you can see other ways to associate entities by reference.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>When adding multiple fields using the ‘enter’ key after each field, the type selected for any field becomes the default for subsequent fields until the type changes. When stopping multiple field entries using the ‘Esc’ key, The default type becomes String again.</p>
<h4 class="wpc--darkluplite-element darkluplite--text">Purpose</h4>
<p class="wpc--darkluplite-element darkluplite--text">Select a field to highlight it, then select the <em class="wpc--darkluplite-element darkluplite--text">Purpose </em>drop-down on the right-side menu.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2464" src="https://wizzdi.com/wp-content/uploads/2024/04/set-purpose.jpg" alt="" width="350" height="248" srcset="https://wizzdi.com/wp-content/uploads/2024/04/set-purpose.jpg 1227w, https://wizzdi.com/wp-content/uploads/2024/04/set-purpose-300x212.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/set-purpose-1024x724.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/set-purpose-768x543.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p>Field purpose selection.</p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Normal Field</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">Most Fields have no particular purpose. There is no need to set a purpose in such a case.</p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Id</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">This is similar to a unique identification number for an entity’s instance. Every entity should have this field, which can be inherited from a Super Entity. See below.</p>
<p class="wpc--darkluplite-element darkluplite--text">In Wizzdi Cloud, an <i>ID is a String or a long. You can designate any field as an ID field, but only one can be designated as such. You can set the field purpose as an ID by selecting it from the right-side</i> menu or using the &#8220;id&#8221; designated name.</p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Password</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">The password is stored in an encrypted format within the password field, ensuring it remains secure and inaccessible. This encryption applies when any entity, such as a User entity, is retrieved by a front-end client, and the password field is included in the retrieval. Consequently, the encrypted password cannot be deciphered or used to infer the original password. Furthermore, even if the application operates outside the Wizzdi cloud environment and the database is directly accessed, the encryption safeguards the passwords against any attempts to deduce them.</p>
<p class="wpc--darkluplite-element darkluplite--text">The type of a Password field must be a <em class="wpc--darkluplite-element darkluplite--text">String.</em></p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">LOB</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">A LOB (Large Object) field is designed to store substantial amounts of text, significantly surpassing the capacity of standard text fields, which typically cap at a few hundred characters. This makes LOB fields ideal for accommodating large documents, extensive descriptions, or any other form of data that requires more space than what is offered by conventional text fields. The LOB purpose applies only to <em class="wpc--darkluplite-element darkluplite--text">String</em>-type fields.</p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Creation Date</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">The system automatically records the creation date for any newly created instance when a field is designated as the OffSetDateTime type, and its purpose is configured as a <em class="wpc--darkluplite-element darkluplite--text">Creation Date. </em></p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Update Date</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">The system automatically records the last update date for any instance when a field is designated as the OffSetDateTime type, and its purpose is configured as an <em class="wpc--darkluplite-element darkluplite--text">Update Date.</em></p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>You must ensure the purpose aligns with the field type, as this isn’t done automatically.</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Field Ordering</strong></h4>
<h6 class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2466" src="https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-fields.jpg" alt="" width="350" height="294" srcset="https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-fields.jpg 870w, https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-fields-300x252.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/drag-and-drop-fields-768x645.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></h6>
<p>Dragging a field to a new position</p>
<p class="wpc--darkluplite-element darkluplite--text">To rearrange an entity&#8217;s fields, click on each one and drag it up or down to the desired position.</p>
<h3 class="wpc--darkluplite-element darkluplite--text">Entity Relationships</h3>
<p class="wpc--darkluplite-element darkluplite--text">In Wizzdi Cloud’s architecture, entities can be linked using different association types, resulting in diverse relationships and data mappings. Specifically, the available association types are:</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element"><em class="wpc--darkluplite-element darkluplite--text">One-to-Many</em></strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">A one-to-many relationship between entities occurs when a single record in one entity (often referred to as the “parent”) can be associated with multiple records in another entity (referred to as the “children”). This type of relationship is commonly used to model scenarios where an entity needs to be linked to multiple instances of another entity. For example, in a database modeling a library system, a single Author entity might have a one-to-many relationship with a Book entity, indicating that one author can write multiple books. This relationship is typically implemented in databases by adding a field in the child entity that stores the reference to the parent entity’s identifier, establishing a clear link between each child and its parent.</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element"><em class="wpc--darkluplite-element darkluplite--text">Many-to-One</em></strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">A many-to-one relationship between entities is the inverse of a one-to-many relationship, where multiple records in one entity (the “children”) are associated with a single record in another entity (the “parent”). This type of relationship is commonly utilized to represent scenarios where several instances of one entity are linked to a single instance of another entity. For example, in a company’s departmental structure database, multiple Employee entities (children) could have a many-to-one relationship with a Department entity (parent), meaning that many employees belong to one department. This relationship is typically facilitated by including a field in the child entity (Employee) that references the parent entity (Department), thus establishing a connection from many children to one parent.</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element"><em class="wpc--darkluplite-element darkluplite--text">Many-to-Many</em></strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">A many-to-many relationship between entities occurs when multiple records in one entity can be associated with multiple records in another entity. This relationship type represents complex scenarios without a simple one-to-many correspondence between entities. For example, in a university system, a student entity might have a many-to-many relationship with a course entity, indicating that each student can enroll in multiple courses, and a course may include multiple students. A <i class="wpc--darkluplite-element darkluplite--text">connection </i><em class="wpc--darkluplite-element darkluplite--text">entity </em>is typically used to implement this relationship in a system. This entity contains references to the two entities it connects, effectively linking multiple records from both entities and enabling the many-to-many association.</p>
<h5 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Examples</strong></h5>
<p class="wpc--darkluplite-element darkluplite--text">In the diagram below, we have two entities, <em class="wpc--darkluplite-element darkluplite--text">City </em>and <em class="wpc--darkluplite-element darkluplite--text">State</em>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2467" src="https://wizzdi.com/wp-content/uploads/2024/04/city-and-state-1.jpg" alt="" width="750" height="162" srcset="https://wizzdi.com/wp-content/uploads/2024/04/city-and-state-1.jpg 584w, https://wizzdi.com/wp-content/uploads/2024/04/city-and-state-1-300x65.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Although a <em class="wpc--darkluplite-element darkluplite--text">City </em>may reside in only one <em class="wpc--darkluplite-element darkluplite--text">State</em>, multiple C<em class="wpc--darkluplite-element darkluplite--text">ities</em> can belong to the same S<em class="wpc--darkluplite-element darkluplite--text">tate.</em> This creates a ‘Many-to-One’ relationship from the <em class="wpc--darkluplite-element darkluplite--text">City</em> perspective, meaning many <i class="wpc--darkluplite-element darkluplite--text">Cities </i>belong to the same <em class="wpc--darkluplite-element darkluplite--text">State</em>. However, from the viewpoint of the <em class="wpc--darkluplite-element darkluplite--text">State</em> entity, it’s ‘One-to-Many’ — one <em class="wpc--darkluplite-element darkluplite--text">State </em>is linked to many <em class="wpc--darkluplite-element darkluplite--text">Cities</em>. When defining such relationships, it’s important to establish the association from the ‘many’ side. Therefore, it’s necessary to include a ‘<em class="wpc--darkluplite-element darkluplite--text">state</em>‘ field within the C<em class="wpc--darkluplite-element darkluplite--text">ity</em> entity. Here’s how we can achieve this:</p>
<h6 class="wpc--darkluplite-element"></h6>
<h4 class="wpc--darkluplite-element darkluplite--text">One-to-Many</h4>
<p class="wpc--darkluplite-element darkluplite--text">Click on the one-sided entity, which in this example is the <em class="wpc--darkluplite-element darkluplite--text">Country</em>. We start with the &#8216;<em class="wpc--darkluplite-element darkluplite--text">one&#8217; side,</em> but as you will see, the &#8216;<em class="wpc--darkluplite-element darkluplite--text">many&#8217; side</em> holds the definition.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2468" src="https://wizzdi.com/wp-content/uploads/2024/04/state-1-1.jpg" alt="" width="350" height="163" /></p>
<figure id="attachment_3329" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3329"><figcaption id="caption-attachment-3329" class="wp-caption-text wpc--darkluplite-element darkluplite--text">The state entity. The id field is selected.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Drag the small circle onto the name of the other entity, in this case, the State entity. Release it when the pointer is over the other entity’s name.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2470" src="https://wizzdi.com/wp-content/uploads/2024/04/drag-id-field-1.jpg" alt="" width="750" height="281" srcset="https://wizzdi.com/wp-content/uploads/2024/04/drag-id-field-1.jpg 830w, https://wizzdi.com/wp-content/uploads/2024/04/drag-id-field-1-300x112.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/drag-id-field-1-768x288.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>Drag and release from the <em class="wpc--darkluplite-element darkluplite--text">id</em> field.</p>
<p class="wpc--darkluplite-element darkluplite--text">The state entity now has a field named country to indicate the connection&#8217;s ownership. A list of <em class="wpc--darkluplite-element darkluplite--text">State</em> instances has also been added to the <em class="wpc--darkluplite-element darkluplite--text">Country</em> entity.</p>
<figure aria-describedby="caption-attachment-3366"><img loading="lazy" decoding="async" class="aligncenter wp-image-2474" src="https://wizzdi.com/wp-content/uploads/2024/04/country-state-1.jpg" alt="" width="750" height="175" srcset="https://wizzdi.com/wp-content/uploads/2024/04/country-state-1.jpg 953w, https://wizzdi.com/wp-content/uploads/2024/04/country-state-1-300x70.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/country-state-1-768x179.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
<figure id="attachment_3366" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3366"><figcaption id="caption-attachment-3366" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Two Entities relationship</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">When a one-to-one relationship is needed, create a many-to-one relationship instead.</p>
<p class="wpc--darkluplite-element darkluplite--text">Alternatively, it is possible to create the relationship using the Arrow button.</p>
<h6 class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2476" src="https://wizzdi.com/wp-content/uploads/2024/04/associate-1-1-1.jpg" alt="" width="350" height="234" /></h6>
<p>The entity-relationship tool</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the 90-degree bent arrow to open an entity search dialog. This should be done on the many-to-one side entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2478" src="https://wizzdi.com/wp-content/uploads/2024/04/associate-2-3-1.jpg" alt="" width="350" height="191" srcset="https://wizzdi.com/wp-content/uploads/2024/04/associate-2-3-1.jpg 428w, https://wizzdi.com/wp-content/uploads/2024/04/associate-2-3-1-300x164.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_3360" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3360"><figcaption id="caption-attachment-3360" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Search for the one-to-many side entity.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Search for the one-to-many side entity, and click on the selected entity in the above image, the <em class="wpc--darkluplite-element darkluplite--text">Student </em>entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2479" src="https://wizzdi.com/wp-content/uploads/2024/04/associate-3-1-1.jpg" alt="" width="750" height="327" srcset="https://wizzdi.com/wp-content/uploads/2024/04/associate-3-1-1.jpg 762w, https://wizzdi.com/wp-content/uploads/2024/04/associate-3-1-1-300x131.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3359" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3359"><figcaption id="caption-attachment-3359" class="wp-caption-text wpc--darkluplite-element darkluplite--text">A relationship is created between <em class="wpc--darkluplite-element darkluplite--text">TeacherToStudent</em> and <em class="wpc--darkluplite-element darkluplite--text">Student</em> entities.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">In the many-to-one entity, a new student field is created. in the one-to-many side entity, a List of <em class="wpc--darkluplite-element darkluplite--text">StudentTeacherToStudents </em>is created.</p>
<p class="wpc--darkluplite-element darkluplite--text">This field facilitates more flexible joins when using the <em class="wpc--darkluplite-element darkluplite--text">Custom Query </em>tool. When this entity is retrieved, the list is never populated. The opposite approach is considered inefficient.</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Many-To-Many</strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">Consider the following entity diagram.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2481" src="https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1.jpg" alt="" width="750" height="379" srcset="https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1-300x151.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1-1024x517.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1-768x388.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/student-teacher-2048x1034-1-1536x776.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>A simplified teacher and student diagram</p>
<p class="wpc--darkluplite-element darkluplite--text">This diagram illustrates three entities: Student, Teacher, and Subject. A Many-to-Many relationship is formed when a single teacher instructs multiple students, and a student may receive guidance from multiple teachers. In Wizzdi Cloud, you can establish a many-to-many relationship between entities by dragging the id field circle of one entity onto the id field of the other. Drag the small circle of the id field of the first entity (Teacher) and release it over the id field of the other entity (Student) when it becomes selected.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2482" src="https://wizzdi.com/wp-content/uploads/2024/04/drag-start-many-to-many.jpg" alt="" width="750" height="169" srcset="https://wizzdi.com/wp-content/uploads/2024/04/drag-start-many-to-many.jpg 1148w, https://wizzdi.com/wp-content/uploads/2024/04/drag-start-many-to-many-300x68.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/drag-start-many-to-many-1024x231.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/drag-start-many-to-many-768x173.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3339" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3339"><figcaption id="caption-attachment-3339" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Start dragging from the first entity <em class="wpc--darkluplite-element darkluplite--text">id</em> field.<br />
<img loading="lazy" decoding="async" class="aligncenter wp-image-2484" src="https://wizzdi.com/wp-content/uploads/2024/04/drag-end-many-to-many-1.jpg" alt="" width="750" height="210" srcset="https://wizzdi.com/wp-content/uploads/2024/04/drag-end-many-to-many-1.jpg 1124w, https://wizzdi.com/wp-content/uploads/2024/04/drag-end-many-to-many-1-300x84.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/drag-end-many-to-many-1-1024x287.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/drag-end-many-to-many-1-768x215.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></figcaption></figure>
<p>Release when the second entity <em class="wpc--darkluplite-element darkluplite--text">id </em>field is selected.</p>
<p class="wpc--darkluplite-element darkluplite--text">A new connection entity is generated.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2485" src="https://wizzdi.com/wp-content/uploads/2024/04/result-many-many.jpg" alt="" width="750" height="265" srcset="https://wizzdi.com/wp-content/uploads/2024/04/result-many-many.jpg 1110w, https://wizzdi.com/wp-content/uploads/2024/04/result-many-many-300x106.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/result-many-many-1024x362.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/result-many-many-768x271.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3341" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3341"><figcaption id="caption-attachment-3341" class="wp-caption-text wpc--darkluplite-element darkluplite--text">A new Connection Entity is automatically created.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">A connection entity is automatically generated when you create a many-to-many relationship between two entities. However, if you prefer, you can create this entity manually and link it to both associated entities as the ‘One’ side. It’s important to note that this connection entity is a primary participant in the schema, not a secondary one. For instance, the absence of a field serving the ‘id’ purpose is indicated by a yellow flag above it.</p>
<p class="wpc--darkluplite-element darkluplite--text">A common way to improve the information about a connection is by adding extra fields describing the nature or features of the relationship. For example, when arranging a class, it would be helpful to include fields that indicate the day of the week, start time, and end time of the class. So, let’s add these fields to enhance the information about the class. We have already added an entity called subject, which can be dragged (from the id circle) onto the connection entity head to include the Subject in the connection.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2487" src="https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1.jpg" alt="" width="750" height="331" srcset="https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1-300x132.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1-1024x452.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1-768x339.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/tripple-connection-2048x903-1-1536x677.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_2692" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2692"><figcaption id="caption-attachment-2692" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Connections among multiple entities</figcaption></figure>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Remove/Edit Relationship</strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">When hovering over a relationship line, the line becomes emphasized. Click on the line to get a menu for deleting or hiding the line.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2488" src="https://wizzdi.com/wp-content/uploads/2024/04/line-menu-2-1.jpg" alt="" width="350" height="404" srcset="https://wizzdi.com/wp-content/uploads/2024/04/line-menu-2-1.jpg 341w, https://wizzdi.com/wp-content/uploads/2024/04/line-menu-2-1-260x300.jpg 260w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_3365" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3365"><figcaption id="caption-attachment-3365" class="wp-caption-text wpc--darkluplite-element darkluplite--text">The relationship line menu.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">If you delete a relationship line, the fields linked on either end of the line will also be deleted.</p>
<p class="wpc--darkluplite-element darkluplite--text">Hiding lines can improve view clarity by reducing overlaps.</p>
<p class="wpc--darkluplite-element darkluplite--text">To show a hidden relationship line, access the field on the many-to-one entity and use the available menu to make the relationship visible.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2490" src="https://wizzdi.com/wp-content/uploads/2024/04/show-showall-1-1.jpg" alt="" width="350" height="510" srcset="https://wizzdi.com/wp-content/uploads/2024/04/show-showall-1-1.jpg 278w, https://wizzdi.com/wp-content/uploads/2024/04/show-showall-1-1-206x300.jpg 206w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_3368" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3368"><figcaption id="caption-attachment-3368" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Select <em class="wpc--darkluplite-element darkluplite--text">Show</em> to make a hidden line visible.</figcaption></figure>
<h3 class="wpc--darkluplite-element darkluplite--text">Indexes</h3>
<p class="wpc--darkluplite-element darkluplite--text">Indexes can significantly enhance query performance in a database by facilitating faster search operations. While it’s common practice to define indexes on frequently queried fields to optimize performance explicitly, it’s not required to manually index fields that are used to associate the <em class="wpc--darkluplite-element darkluplite--text">Many-Side </em>entity with another entity. The underlying database engine automatically indexes these fields.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Setting an Index on an Entity</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">Indexes are attributes of an Entity, and multiple indexes can be added. They can enforce uniqueness and may also be composite. Composite indexes are beneficial for data requiring multi-level sorting.</p>
<p class="wpc--darkluplite-element darkluplite--text">To set an index, select an entity and click ‘<em class="wpc--darkluplite-element darkluplite--text">manage indexes’:</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2491" src="https://wizzdi.com/wp-content/uploads/2024/04/indexes-3.jpg" alt="" width="750" height="434" srcset="https://wizzdi.com/wp-content/uploads/2024/04/indexes-3.jpg 1564w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-300x174.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-1024x593.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-768x445.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-1536x890.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2493" src="https://wizzdi.com/wp-content/uploads/2024/04/indexes-2.jpg" alt="" width="350" height="274" srcset="https://wizzdi.com/wp-content/uploads/2024/04/indexes-2.jpg 805w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-2-300x235.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-2-768x601.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p>Manage indexes</p>
<p class="wpc--darkluplite-element darkluplite--text">When creating an index, you can designate it as unique. A field indexed as unique will ensure that no two entity instances have the same value in the field associated with the index. Adding a duplicate value to such a field at runtime will result in a runtime error.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2491" src="https://wizzdi.com/wp-content/uploads/2024/04/indexes-3.jpg" alt="" width="750" height="434" srcset="https://wizzdi.com/wp-content/uploads/2024/04/indexes-3.jpg 1564w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-300x174.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-1024x593.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-768x445.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/indexes-3-1536x890.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>Add entity fields to the index.</p>
<p class="wpc--darkluplite-element darkluplite--text">To create a composite index, you can add multiple fields. Adjust the sequence of these fields by dragging them, as the order can be crucial for querying and sorting operations.</p>
<p class="wpc--darkluplite-element darkluplite--text">Consider this example involving a composite index:</p>
<p class="wpc--darkluplite-element darkluplite--text">In an e-commerce application, purchases are tracked in a database, each with fields such as ‘<em class="wpc--darkluplite-element darkluplite--text">date</em>‘ and ‘<em class="wpc--darkluplite-element darkluplite--text">totalCost</em>.’</p>
<p class="wpc--darkluplite-element darkluplite--text">If you want to retrieve all purchases between Date A and Date B and within a cost range of X to Y, a composite index encompassing both ‘<em class="wpc--darkluplite-element darkluplite--text">date</em>‘ and ‘<em class="wpc--darkluplite-element darkluplite--text">totalCost</em>‘ can enhance the query’s performance. If questions frequently specify a specific date with a range of costs, then ‘<em class="wpc--darkluplite-element darkluplite--text">date</em>‘ should be the first field in the index, followed by ‘<em class="wpc--darkluplite-element darkluplite--text">totalCost</em>.’</p>
<p class="wpc--darkluplite-element darkluplite--text">Also, if the primary requirement is to sort the results by ‘date’ and then by ‘totalCost,’ then the ‘date’ field should precede the ‘totalCost’ field in the index.</p>
<p class="wpc--darkluplite-element darkluplite--text">Additionally, if there’s often a need to query just based on the ‘<em class="wpc--darkluplite-element darkluplite--text">date</em>‘ without specifying ‘<em class="wpc--darkluplite-element darkluplite--text">totalCost</em>,’ having ‘date’ as the first field in the composite index would also be beneficial, as databases can effectively use the index&#8217;s “prefix” for such queries.</p>
<h3 class="wpc--darkluplite-element darkluplite--text">Diagrams</h3>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud supports multiple diagrams for large domain models.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click “+” in the bottom left corner to add a new diagram.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2495" src="https://wizzdi.com/wp-content/uploads/2024/04/add-new-diagram-1.jpg" alt="" width="350" height="126" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-new-diagram-1.jpg 485w, https://wizzdi.com/wp-content/uploads/2024/04/add-new-diagram-1-300x108.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2496" src="https://wizzdi.com/wp-content/uploads/2024/04/delete-rename-diagram-1.jpg" alt="" width="350" height="250" srcset="https://wizzdi.com/wp-content/uploads/2024/04/delete-rename-diagram-1.jpg 367w, https://wizzdi.com/wp-content/uploads/2024/04/delete-rename-diagram-1-300x214.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element">Diagram Name Context Menu (right click)</p>
<p class="wpc--darkluplite-element darkluplite--text">Access the context menu by right-clicking on the diagram name to rename or delete a diagram.</p>
<p class="wpc--darkluplite-element darkluplite--text">The context menu is active only for the currently selected diagram.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Rename an Entity Diagram</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2498" src="https://wizzdi.com/wp-content/uploads/2024/04/rename-diagram-1.jpg" alt="" width="350" height="289" srcset="https://wizzdi.com/wp-content/uploads/2024/04/rename-diagram-1.jpg 321w, https://wizzdi.com/wp-content/uploads/2024/04/rename-diagram-1-300x248.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p>Rename a diagram</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Deleting an Entity Diagram</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">You can permanently delete the selected diagram from the context menu. This action is irreversible and cannot be undone.</p>
<p class="wpc--darkluplite-element darkluplite--text">Entities and Enums created in the diagram persist and can be imported into a new diagram.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Closing an Entity Diagram</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">You can close a diagram from #2 here.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2499" src="https://wizzdi.com/wp-content/uploads/2024/04/diagram-add-1.jpg" alt="" width="750" height="129" srcset="https://wizzdi.com/wp-content/uploads/2024/04/diagram-add-1.jpg 461w, https://wizzdi.com/wp-content/uploads/2024/04/diagram-add-1-300x51.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">When a diagram is closed, it can be reopened from the Add Diagram button.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2500" src="https://wizzdi.com/wp-content/uploads/2024/04/add-existing-diagram-1.jpg" alt="" width="750" height="177" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-existing-diagram-1.jpg 453w, https://wizzdi.com/wp-content/uploads/2024/04/add-existing-diagram-1-300x71.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3338" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3338"><figcaption id="caption-attachment-3338" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Add a closed diagram.</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">When a diagram becomes too large, you can create a new one and transfer or duplicate some entity shapes onto the new diagram. However, note that only the entity’s delegate on the diagram will be copied, not the entity itself. This makes it easy to divide large diagrams into smaller ones.</p>
<p class="wpc--darkluplite-element darkluplite--text">To connect entities on separate diagrams, you must first move or copy one of the entities to the diagram where the other entity is located. After the entities are connected, you may remove one of the entity shapes from one of the diagrams to simplify it.</p>
<p class="wpc--darkluplite-element darkluplite--text">Moving, removing, and copying entity shapes can be done from the three-dot menu on the entity shape.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2503" src="https://wizzdi.com/wp-content/uploads/2024/04/diagram-actions-on-entity.jpg" alt="" width="350" height="286" srcset="https://wizzdi.com/wp-content/uploads/2024/04/diagram-actions-on-entity.jpg 775w, https://wizzdi.com/wp-content/uploads/2024/04/diagram-actions-on-entity-300x245.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/diagram-actions-on-entity-768x628.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element"><p>The post <a href="https://wizzdi.com/docs/documentation/domain-model/">Domain Model</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/domain-model/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Consumed APIs</title>
		<link>https://wizzdi.com/docs/documentation/consumed-apis/</link>
					<comments>https://wizzdi.com/docs/documentation/consumed-apis/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 18:22:33 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1714</guid>

					<description><![CDATA[<p>Introduction Consumed APIs refer to the specific definitions of external services offered by vendors such as Google, SendGrid, and WhatsApp. These APIs enable the integration and access of their services directly from your applications. Additionally, consumed APIs facilitate the interconnection of various applications on the Wizzdi cloud, utilizing the principles of Service-Oriented Architecture (SOA). Consumed [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/consumed-apis/">Consumed APIs</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="wpc--darkluplite-element darkluplite--text">Introduction</h1>
<p class="wpc--darkluplite-element darkluplite--text">Consumed APIs refer to the specific definitions of external services offered by vendors such as Google, SendGrid, and WhatsApp. These APIs enable the integration and access of their services directly from your applications. Additionally, consumed APIs facilitate the interconnection of various applications on the Wizzdi cloud, utilizing the principles of Service-Oriented Architecture (SOA).</p>
<p class="wpc--darkluplite-element darkluplite--text">Consumed APIs can be used to:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Broaden Functional Scope</strong>: By integrating with external services, your app can extend its capabilities without building every feature from scratch.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Streamline Processes</strong>: Utilizing pre-existing and well-established services like SendGrid ensures that specific processes, such as email delivery, are handled efficiently.</li>
</ul>
<h1>How to</h1>
<p class="wpc--darkluplite-element darkluplite--text">Consumed APIs can be defined in two ways:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">OpenAPI Import</strong>: Most service providers provide definitions of OpenAPI (previously known as <em class="wpc--darkluplite-element darkluplite--text">Swagger</em>). These documents present a structured explanation of each of the API’s endpoints, responses, request formats, and other essential details. Wizzdi Cloud streamlines the import process of these files, automating the setup of the used API endpoints. This helps save time and guarantees that your backend conforms to the recommended standards and constructions of the external service.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Manual Definition</strong>: If an <a class="darkluplite--link" href="https://www.openapis.org/">OpenAPI</a> file is unavailable, Wizzdi Cloud allows you to manually set up and define the consumed API endpoints. This must be done to match the documentation of the said API accurately.</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">The Consumed APIs section in Wizzdi Cloud serves as a bridge, connecting your backend to the broader ecosystem of web services. Whether you plug in manually or import an OpenAPI specification, this integration ensures your application remains versatile, dynamic, and capable of leveraging the best of what the digital world offers.</p>
<div class="flex-1 overflow-hidden wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-79elbk h-full dark:bg-gray-800 wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-1n7m0yu wpc--darkluplite-element">
<div class="flex flex-col text-sm dark:bg-gray-800 wpc--darkluplite-element">
<div class="group w-full text-token-text-primary border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654] wpc--darkluplite-element">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-[38rem] xl:max-w-3xl md:py-6 lg:px-0 m-auto wpc--darkluplite-element">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)] wpc--darkluplite-element">
<div class="flex flex-grow flex-col gap-3 wpc--darkluplite-element">
<div class="min-h-[20px] flex flex-col items-start gap-3 overflow-x-auto whitespace-pre-wrap break-words wpc--darkluplite-element">
<div class="markdown prose w-full break-words dark:prose-invert dark wpc--darkluplite-element">
<p class="wpc--darkluplite-element">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="absolute bottom-0 left-0 w-full border-t md:border-t-0 dark:border-white/20 md:border-transparent md:dark:border-transparent md:bg-vert-light-gradient bg-white dark:bg-gray-800 md:!bg-transparent dark:md:bg-vert-dark-gradient pt-2 md:pl-2 md:w-[calc(100%-.5rem)] wpc--darkluplite-element">
<form class="stretch mx-2 flex flex-row gap-3 last:mb-2 md:mx-4 md:last:mb-6 lg:mx-auto lg:max-w-2xl xl:max-w-3xl wpc--darkluplite-element">
<div class="relative flex h-full flex-1 items-stretch md:flex-col wpc--darkluplite-element">
<div class="h-full flex ml-1 md:w-full md:m-auto md:mb-4 gap-0 md:gap-2 justify-center wpc--darkluplite-element">
<div class="flex items-center md:items-end wpc--darkluplite-element">
<div class="wpc--darkluplite-element" data-projection-id="97">
<p>&nbsp;</p>
<h2 class="flex w-full gap-2 items-center justify-center wpc--darkluplite-element darkluplite--text">Open API</h2>
<p class="wpc--darkluplite-element darkluplite--text">Select <em class="wpc--darkluplite-element darkluplite--text">Consumed Apis </em>from the left side menu.</p>
<figure id="attachment_2667" aria-describedby="caption-attachment-2667" style="width: 750px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2667" src="https://wizzdi.com/wp-content/uploads/2024/04/consumed-1.jpg" alt="" width="750" height="330" srcset="https://wizzdi.com/wp-content/uploads/2024/04/consumed-1.jpg 1917w, https://wizzdi.com/wp-content/uploads/2024/04/consumed-1-300x132.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/consumed-1-1024x450.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/consumed-1-768x338.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/consumed-1-1536x675.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption id="caption-attachment-2667" class="wp-caption-text">The consumed API interface, no API defined</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Select the <em class="wpc--darkluplite-element darkluplite--text">MANAGE </em>option; two options are presented; use the pointer to see and select an option.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2128" src="https://wizzdi.com/wp-content/uploads/2024/04/consumed-api-menu.jpg" alt="" width="350" height="371" srcset="https://wizzdi.com/wp-content/uploads/2024/04/consumed-api-menu.jpg 492w, https://wizzdi.com/wp-content/uploads/2024/04/consumed-api-menu-283x300.jpg 283w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">This menu offers two options: manually adding an endpoint or importing an OpenAPI file. However, the former should be avoided if the latter is available.</p>
<p class="wpc--darkluplite-element darkluplite--text">This is the top option; select it, and you should see this dialog.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2129" src="https://wizzdi.com/wp-content/uploads/2024/04/upload-file.jpg" alt="" width="350" height="451" srcset="https://wizzdi.com/wp-content/uploads/2024/04/upload-file.jpg 912w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-233x300.jpg 233w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-794x1024.jpg 794w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-768x990.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Import from a URL</strong></h3>
</div>
<div class="wpc--darkluplite-element" data-projection-id="97">
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">If an OpenAPI JSON file URL is available, paste it into the top text box and click ‘Save Changes.’ For instance, we will use the URL from OpenAPI’s GitHub account:</li>
</ul>
<p class="wpc--darkluplite-element"><em class="wpc--darkluplite-element darkluplite--text">https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v3.0/link-example.json</em></p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Import from a File.</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">Sometimes, if a URL is not provided, you can directly upload the API definition JSON/YAML file into the system. An example file is available <a class="darkluplite--link" href="https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.json">here</a>.</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2129" src="https://wizzdi.com/wp-content/uploads/2024/04/upload-file.jpg" alt="" width="350" height="451" srcset="https://wizzdi.com/wp-content/uploads/2024/04/upload-file.jpg 912w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-233x300.jpg 233w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-794x1024.jpg 794w, https://wizzdi.com/wp-content/uploads/2024/04/upload-file-768x990.jpg 768w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">After a short while, you should see the following screen</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2642" src="https://wizzdi.com/wp-content/uploads/2024/04/link-example-scaled.jpg" alt="" width="750" height="49" srcset="https://wizzdi.com/wp-content/uploads/2024/04/link-example-scaled.jpg 2560w, https://wizzdi.com/wp-content/uploads/2024/04/link-example-300x20.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/link-example-1024x67.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/link-example-768x50.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/link-example-1536x100.jpg 1536w, https://wizzdi.com/wp-content/uploads/2024/04/link-example-2048x133.jpg 2048w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Each API, whether imported or manually built, appears as one line.</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on Manage to view the imported endpoints, including their type, input objects, and parameters. You should see a screen like the one :</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2130" src="https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1.jpg" alt="" width="750" height="296" srcset="https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1-300x118.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1-1024x404.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1-768x303.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/manage-api-screen-2048x807-1-1536x605.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">
</div>
</div>
</div>
</div>
</form>
</div>
<p class="wpc--darkluplite-element darkluplite--text">API endpoints are specific URLs that software clients (web apps, mobile apps, other systems) use to request specific actions or data. Think of them like particular addresses within a city (the API), where each address offers a different service or information. They are usually accessed using methods like “GET” (retrieve data) or “POST” (submit data and receive data).</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on <em class="wpc--darkluplite-element darkluplite--text">EndPoints </em>To Access the API endpoints.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2131" src="https://wizzdi.com/wp-content/uploads/2024/04/endpoints-menu.jpg" alt="" width="350" height="263" srcset="https://wizzdi.com/wp-content/uploads/2024/04/endpoints-menu.jpg 637w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-menu-300x225.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">You should see a screen similar to this one:</p>
<p class="wpc--darkluplite-element darkluplite--text"><img loading="lazy" decoding="async" class="aligncenter wp-image-2151" src="https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1.jpg" alt="" width="750" height="364" srcset="https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1.jpg 2048w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1-300x145.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1-1024x497.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1-768x372.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-overview-2048x993-1-1536x745.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Refraining from modifying imported APIs is crucial, as it represents a binding agreement between the provider and any system using their services.</p>
<h2 class="wpc--darkluplite-element darkluplite--text">Manual definition</h2>
<p class="wpc--darkluplite-element darkluplite--text">Click the ‘ADD API +’ button to add an API manually.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2127" src="https://wizzdi.com/wp-content/uploads/2024/04/add-api.jpg" alt="" width="350" height="297" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-api.jpg 399w, https://wizzdi.com/wp-content/uploads/2024/04/add-api-300x255.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">The new API dialog appears.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2154" src="https://wizzdi.com/wp-content/uploads/2024/04/add-api-details-1.jpg" alt="" width="350" height="594" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-api-details-1.jpg 720w, https://wizzdi.com/wp-content/uploads/2024/04/add-api-details-1-177x300.jpg 177w, https://wizzdi.com/wp-content/uploads/2024/04/add-api-details-1-604x1024.jpg 604w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Update the following mandatory fields:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Name: </strong>The name should start with a capital letter.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Package Name Suffix: </strong>This should be the suffix used for the package of this API and can be any valid part of a Java package name, such as the API name.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Base Path: </strong>The API owner must provide the base path, which cannot be modified arbitrarily. For instance, the base path for Apps in the Wizzdi Customers’ cluster is:</li>
<li class="wpc--darkluplite-element"><em class="wpc--darkluplite-element darkluplite--text">https://[app-name].[user].[workspace-name].cluster.wizzdi.com/ </em></li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Description: </strong>Describes the API. This field is mandatory and cannot be left blank.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Theme Color: </strong>Select a color for the API icon. This field cannot be left empty.</li>
</ul>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Endpoints</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">Select the endpoints menu option and then click on <em class="wpc--darkluplite-element darkluplite--text">Add Endpoint:</em></p>
<p class="wpc--darkluplite-element"><em class="wpc--darkluplite-element"> <img loading="lazy" decoding="async" class="aligncenter wp-image-2155" src="https://wizzdi.com/wp-content/uploads/2024/04/endpoints.png" alt="" width="750" height="347" srcset="https://wizzdi.com/wp-content/uploads/2024/04/endpoints.png 1284w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-300x139.png 300w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-1024x474.png 1024w, https://wizzdi.com/wp-content/uploads/2024/04/endpoints-768x355.png 768w" sizes="(max-width: 750px) 100vw, 750px" /></em></p>
<p class="wpc--darkluplite-element darkluplite--text">Once you click on +ADD ENDPOINT, a dialog similar to this appears:</p>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element darkluplite--text"><img loading="lazy" decoding="async" class="aligncenter wp-image-2156" src="https://wizzdi.com/wp-content/uploads/2024/04/create-endpoint.png" alt="" width="350" height="653" srcset="https://wizzdi.com/wp-content/uploads/2024/04/create-endpoint.png 395w, https://wizzdi.com/wp-content/uploads/2024/04/create-endpoint-161x300.png 161w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Endpoint Fields<br class="wpc--darkluplite-element" /></strong></h4>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Endpoint: </strong>this is the unique definition of the ‘address’ of the endpoint, for example,<em class="wpc--darkluplite-element darkluplite--text">/api/ActiveOnCall/createActiveOnCall </em><br class="wpc--darkluplite-element" />When defining an external service’s endpoints, the definition must match the external service behavior.</p>
<p class="wpc--darkluplite-element darkluplite--text"><b class="wpc--darkluplite-element darkluplite--text">Name: </b>This is the name assigned to the endpoint method. It must start with a non-capital letter and conform to Java method naming conventions.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Method: </strong>Select one of the available options matching the required method as documented in the external (consumed) API. See <a class="darkluplite--link" href="https://www.techtarget.com/searchapparchitecture/tip/The-5-essential-HTTP-methods-in-RESTful-API-development" target="_blank" rel="noopener">here.</a></p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Description: </strong>This is for internal documentation of the endpoint.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Tags: </strong>Endpoints within an API can be categorized using multiple labels known as tags. Generally, a tag represents a collection of APIs with a common theme or function. An endpoint may be associated with several tags, facilitating better organization and more straightforward navigation of related API functions. When adding a tag to an endpoint, you can use an existing tag or add a new one. Tags are case-insensitive.</p>
<p class="wpc--darkluplite-element darkluplite--text">When the App runs, regardless of location, the Swagger interface can access the API; below is a sample screen capture of the Swagger interface of a set of endpoints under a single tag, <strong class="wpc--darkluplite-element darkluplite--text">WeeklyTime.</strong></p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2157" src="https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample.jpg" alt="" width="1852" height="278" srcset="https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample.jpg 1852w, https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample-300x45.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample-1024x154.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample-768x115.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/Swagger-and-Tags-sample-1536x231.jpg 1536w" sizes="(max-width: 1852px) 100vw, 1852px" /></p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Endpoint Management</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">An endpoint is displayed under all of the associated tags in a similar way to Swagger:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2158" src="https://wizzdi.com/wp-content/uploads/2024/04/ednpoints.jpg" alt="" width="750" height="236" srcset="https://wizzdi.com/wp-content/uploads/2024/04/ednpoints.jpg 1598w, https://wizzdi.com/wp-content/uploads/2024/04/ednpoints-300x94.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/ednpoints-1024x322.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/ednpoints-768x242.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/ednpoints-1536x483.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Use the pencil icon to edit the fields above or click on the arrow down <img loading="lazy" decoding="async" class="alignnone wp-image-2776 darkluplite--img" src="https://wizzdi.com/wp-content/uploads/2024/05/arrow-down.jpg" alt="" width="38" height="20" /> to define other properties of the endpoint.</p>
<p class="wpc--darkluplite-element darkluplite--text">Once the arrow-down is clicked, a dialog like this is opened:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2159" src="https://wizzdi.com/wp-content/uploads/2024/04/request-select-1.jpg" alt="" width="750" height="244" srcset="https://wizzdi.com/wp-content/uploads/2024/04/request-select-1.jpg 1547w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-300x98.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1024x334.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-768x250.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1536x500.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">This dialog manually defines the endpoint to match the consumed API details fully.</p>
<p class="wpc--darkluplite-element darkluplite--text">We have selected to edit the <em class="wpc--darkluplite-element darkluplite--text">login </em>endpoint. Our imaginary external service (the consumed API) uses <em class="wpc--darkluplite-element darkluplite--text">basic authentication</em>, and the username and password need to be defined in a Request rather than<strong class="wpc--darkluplite-element"> </strong>in the endpoint headers. Consequently, our method type should be <em class="wpc--darkluplite-element darkluplite--text">POST.</em></p>
<p class="wpc--darkluplite-element darkluplite--text">A <em class="wpc--darkluplite-element darkluplite--text">POST</em> method requires a <em class="wpc--darkluplite-element darkluplite--text">Request </em> (sometimes called a <em class="wpc--darkluplite-element darkluplite--text">Body</em>).</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">The <em class="wpc--darkluplite-element darkluplite--text">Request </em>object</strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">Select the ‘<em class="wpc--darkluplite-element darkluplite--text">select’</em> menu for the <em class="wpc--darkluplite-element darkluplite--text">Request</em> object:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2160" src="https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1.jpg" alt="" width="750" height="244" srcset="https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1.jpg 1547w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1-300x98.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1-1024x334.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1-768x250.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/request-select-1-1-1536x500.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<figure id="attachment_3402" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3402"></figure>
<p class="wpc--darkluplite-element">Define a request object</p>
<p class="wpc--darkluplite-element darkluplite--text">When clicking on <em class="wpc--darkluplite-element darkluplite--text">Select,</em> the following options are available:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2161" src="https://wizzdi.com/wp-content/uploads/2024/04/select-Body-options.jpg" alt="" width="350" height="325" /></p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Select Existing:</strong> This option allows you to reuse objects you have already defined elsewhere in the app or dependent apps. In the current version of Wizzdi Cloud, when such an object is referenced. One should not change it.</p>
<p class="wpc--darkluplite-element darkluplite--text">When Select Existing is selected, a dialog like this one appears. Use the <em class="wpc--darkluplite-element darkluplite--text">Search </em>text box to find the object you need.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2162" src="https://wizzdi.com/wp-content/uploads/2024/04/select-existing-1-183x300-1.jpg" alt="" width="350" height="574" /></p>
<p class="wpc--darkluplite-element darkluplite--text"><b class="wpc--darkluplite-element darkluplite--text">Create Custom: </b>Use the tools described below to build a new object.</p>
<p class="wpc--darkluplite-element darkluplite--text">Define the Class name for the new Object; it should start with a capital letter.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2163" src="https://wizzdi.com/wp-content/uploads/2024/04/create-custom-object.jpg" alt="" width="350" height="367" srcset="https://wizzdi.com/wp-content/uploads/2024/04/create-custom-object.jpg 394w, https://wizzdi.com/wp-content/uploads/2024/04/create-custom-object-286x300.jpg 286w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element"> </strong></p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element"> </strong>Click on the newly created Object to view it.</p>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2164" src="https://wizzdi.com/wp-content/uploads/2024/04/click-custom-to-edit.jpg" alt="" width="350" height="166" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Expand to view the current object structure.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2165" src="https://wizzdi.com/wp-content/uploads/2024/04/expand-to-edit-1.jpg" alt="" width="350" height="99" srcset="https://wizzdi.com/wp-content/uploads/2024/04/expand-to-edit-1.jpg 345w, https://wizzdi.com/wp-content/uploads/2024/04/expand-to-edit-1-300x85.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Optionally<strong class="wpc--darkluplite-element darkluplite--text">, </strong>Click the pencil to edit the Object properties, the name, and the description. <img loading="lazy" decoding="async" class="alignnone wp-image-2795 darkluplite--img" src="https://wizzdi.com/wp-content/uploads/2024/05/pencil.jpg" alt="" width="40" height="30" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the plus icon to add a property to the Request Object.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2166" src="https://wizzdi.com/wp-content/uploads/2024/04/new-object.png" alt="" width="350" height="213" /></p>
<p class="wpc--darkluplite-element"><em class="wpc--darkluplite-element"> </em></p>
<p class="wpc--darkluplite-element darkluplite--text">Click the [+] button to add a new property.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2167" src="https://wizzdi.com/wp-content/uploads/2024/04/create-property.jpg" alt="" width="350" height="480" srcset="https://wizzdi.com/wp-content/uploads/2024/04/create-property.jpg 266w, https://wizzdi.com/wp-content/uploads/2024/04/create-property-219x300.jpg 219w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_967" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-967"></figure>
<p class="wpc--darkluplite-element">The Create Property Dialog</p>
<p class="wpc--darkluplite-element darkluplite--text">The property <strong class="wpc--darkluplite-element darkluplite--text">name</strong> should be a noncapital word.</p>
<p class="wpc--darkluplite-element darkluplite--text">The <strong class="wpc--darkluplite-element darkluplite--text">Description</strong> is for documentation purposes.</p>
<p class="wpc--darkluplite-element darkluplite--text">To search for a <strong class="wpc--darkluplite-element darkluplite--text">Type,</strong> you can start typing its name in the Type field and select it from the list that appears. Alternatively, click the Type field to open a new Type creation dialog. You can also click on the three dots button to open a more detailed type search dialog.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Import JSON: </strong>You can paste a JSON object to create a new object. This useful option lets you define the JSON structure without using the Create Custom option. Additionally, it can be easier for some users to type out the JSON structure directly.</p>
<p class="wpc--darkluplite-element darkluplite--text">We will first use Import JSON  to define the <em class="wpc--darkluplite-element darkluplite--text">Person</em> Object (as an example).</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2168" src="https://wizzdi.com/wp-content/uploads/2024/04/import-json-1-1.jpg" alt="" width="350" height="438" /></p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">When the Import JSON dialog is displayed, fill in the required data here.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2169" src="https://wizzdi.com/wp-content/uploads/2024/04/import-JSON-1.jpg" alt="" width="350" height="530" srcset="https://wizzdi.com/wp-content/uploads/2024/04/import-JSON-1.jpg 313w, https://wizzdi.com/wp-content/uploads/2024/04/import-JSON-1-198x300.jpg 198w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"> Now, we have the Request object defined as a <em class="wpc--darkluplite-element darkluplite--text">Person. </em><em class="wpc--darkluplite-element darkluplite--text"><br />
</em></li>
<li><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2170" src="https://wizzdi.com/wp-content/uploads/2024/04/person-1.jpg" alt="" width="1552" height="79" srcset="https://wizzdi.com/wp-content/uploads/2024/04/person-1.jpg 1552w, https://wizzdi.com/wp-content/uploads/2024/04/person-1-300x15.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/person-1-1024x52.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/person-1-768x39.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/person-1-1536x78.jpg 1536w" sizes="(max-width: 1552px) 100vw, 1552px" /></li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">Importing JSON is limited; only basic data types such as <em>String,</em> <em>float</em>, <em>boolean, integer,</em> and <em>long</em> can be used.</p>
<p class="wpc--darkluplite-element darkluplite--text">Importing JSON Schema is not supported.</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Building a Complex Object </strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">Click on Select at the right of the request object, then Select the Create Custom option.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2171" src="https://wizzdi.com/wp-content/uploads/2024/04/crete-custom-0.jpg" alt="" width="350" height="414" /></p>
<figure id="attachment_3404" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-3404"></figure>
<p class="wpc--darkluplite-element">Building a custom object.</p>
<p class="wpc--darkluplite-element darkluplite--text">The following dialog allows a selection of an existing Object or the creation of a new one.</p>
<p>0</p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the Type text box to access the ‘Create Custom Object’ button. Click on it to show the ‘Create Custom Object’ dialog.</p>
<p class="wpc--darkluplite-element darkluplite--text">Define a name for the object. The name should start with a capital letter.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2173" src="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object.jpg" alt="" width="350" height="377" /></p>
<figure id="attachment_857" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-857"></figure>
<p class="wpc--darkluplite-element">Save the new custom object</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2172" src="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-2.jpg" alt="" width="350" height="235" /></p>
<figure id="attachment_858" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-858"></figure>
<p class="wpc--darkluplite-element">Save the Request Object using the created Family Create</p>
<p class="wpc--darkluplite-element darkluplite--text">Once the object is defined, we may populate it while editing the request object.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2174" src="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3.jpg" alt="" width="750" height="67" srcset="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3.jpg 1641w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3-300x27.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3-1024x92.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3-768x69.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-3-1536x138.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">To modify the Object name and description, click the pencil icon on the right.</p>
<p class="wpc--darkluplite-element darkluplite--text">To expand the <em class="wpc--darkluplite-element darkluplite--text">Request Object </em>for editing, click on the left-side arrow marked in yellow.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2175" src="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1.jpg" alt="" width="750" height="66" srcset="https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1.jpg 1640w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1-300x27.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1-1024x91.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1-768x68.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/save-custom-object-1-1536x136.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Click on the [+] to create a new property.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2176" src="https://wizzdi.com/wp-content/uploads/2024/04/create-property-1.jpg" alt="" width="350" height="480" srcset="https://wizzdi.com/wp-content/uploads/2024/04/create-property-1.jpg 266w, https://wizzdi.com/wp-content/uploads/2024/04/create-property-1-219x300.jpg 219w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element">Create Property</p>
<p class="wpc--darkluplite-element darkluplite--text">Property names should start with a lowercase character.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Property Type</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">There are three options here:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Start typing and select an existing type.</li>
<li class="wpc--darkluplite-element darkluplite--text">Click on the <em class="wpc--darkluplite-element darkluplite--text">Type</em> field to open the Type/Object creation dialog.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2177" src="https://wizzdi.com/wp-content/uploads/2024/04/click-to-show-create-type.jpg" alt="" width="350" height="206" /></p>
<p class="wpc--darkluplite-element">Click on the Type field to allow selection or creation.</p>
<p class="wpc--darkluplite-element darkluplite--text">When Create Custom Object is selected, type the new Object’s name, starting with a Capital letter. Then click on ‘Save Custom Object’.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2179" src="https://wizzdi.com/wp-content/uploads/2024/04/create-new-object-from-property.jpg" alt="" width="350" height="309" /></p>
<figure id="attachment_868" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-868"></figure>
<p class="wpc--darkluplite-element">Create a new Object.</p>
<p class="wpc--darkluplite-element darkluplite--text">Once a new Property Type has been defined, you can start defining new properties (fields) inside the newly defined Type/Object.</p>
<p class="wpc--darkluplite-element darkluplite--text">The new Object has no fields initially. Use the [+] button to add properties to the new Object, including nested objects and Lists/Maps.</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Lists and Maps</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">Lists and Maps are often required when implementing consumed or exposed API endpoints. They can be nested: a List of Lists or Maps containing Lists. Nesting is supported to any required depth.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note:<br class="wpc--darkluplite-element" /></strong>Type safety is a core principle in Wizzdi Cloud, ensuring that data structures, including Lists and Maps, enforce consistency of element types</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Lists</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">If the endpoint you’re using requires an array of properties, follow these steps:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Click on the <img loading="lazy" decoding="async" class="alignnone size-full wp-image-921 darkluplite--img" src="https://wizzdi.com/wp-content/uploads/2024/03/plus.jpg" alt="" width="34" height="28" /> icon.</li>
<li class="wpc--darkluplite-element darkluplite--text">Select the <img loading="lazy" decoding="async" class="alignnone wp-image-922 darkluplite--img" src="https://wizzdi.com/wp-content/uploads/2024/03/property-2.jpg" alt="" width="81" height="28" /> button.</li>
<li class="wpc--darkluplite-element darkluplite--text">In the Create Property menu, choose List as the type. Start typing List and select the option below.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2180" src="https://wizzdi.com/wp-content/uploads/2024/04/create-property-1-1.jpg" alt="" width="350" height="503" srcset="https://wizzdi.com/wp-content/uploads/2024/04/create-property-1-1.jpg 265w, https://wizzdi.com/wp-content/uploads/2024/04/create-property-1-1-209x300.jpg 209w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<figure id="attachment_923" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-923"></figure>
<p class="wpc--darkluplite-element">Selecting the List type</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Once the List is selected, the following dialog appears:</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2182" src="https://wizzdi.com/wp-content/uploads/2024/04/list-2.jpg" alt="" width="350" height="605" srcset="https://wizzdi.com/wp-content/uploads/2024/04/list-2.jpg 261w, https://wizzdi.com/wp-content/uploads/2024/04/list-2-174x300.jpg 174w" sizes="(max-width: 350px) 100vw, 350px" /></p>
<p class="wpc--darkluplite-element">Select the inner type of a list</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Click on the Type field (marked in yellow) to perform one of the following options:
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Start typing the name for the inner type.</li>
<li class="wpc--darkluplite-element darkluplite--text">Click on the three dots button to open an expanded dialog for searching for a type.</li>
<li class="wpc--darkluplite-element darkluplite--text">Select Create Custom Object to create a new Object.</li>
</ol>
</li>
<li class="wpc--darkluplite-element darkluplite--text">For option 3, see the subsequent steps:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Create a new Object (Custom Type)</li>
</ul>
</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2181" src="https://wizzdi.com/wp-content/uploads/2024/04/family-member-1.jpg" alt="" width="258" height="506" srcset="https://wizzdi.com/wp-content/uploads/2024/04/family-member-1.jpg 258w, https://wizzdi.com/wp-content/uploads/2024/04/family-member-1-153x300.jpg 153w" sizes="(max-width: 258px) 100vw, 258px" /></p>
<figure id="attachment_925" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-925"></figure>
<p class="wpc--darkluplite-element">Create a new Custom Type (Object) for the List.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Once the inner Custom Type (Object) is created, the List inner type changes:</li>
</ul>
<figure aria-describedby="caption-attachment-926"></figure>
<figure id="attachment_926" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-926"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2183" src="https://wizzdi.com/wp-content/uploads/2024/04/family-member-3.jpg" alt="" width="268" height="399" srcset="https://wizzdi.com/wp-content/uploads/2024/04/family-member-3.jpg 268w, https://wizzdi.com/wp-content/uploads/2024/04/family-member-3-202x300.jpg 202w" sizes="(max-width: 268px) 100vw, 268px" /></figure>
<p class="wpc--darkluplite-element">The List inner type changed to <em class="wpc--darkluplite-element darkluplite--text">&lt;FamilyMember&gt;</em></p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Maps</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">A map is a data structure constructed from a list of entries containing a <em class="wpc--darkluplite-element darkluplite--text">key</em> and a <em class="wpc--darkluplite-element darkluplite--text">value</em>. The <em class="wpc--darkluplite-element darkluplite--text">key</em> is used to retrieve the value efficiently.</p>
<p class="wpc--darkluplite-element darkluplite--text">Key and Value can be Objects, including Lists or Maps. Contained Maps or Lists are similarly defined.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>Although rare, there are instances where such a data structure is used in API endpoints.</p>
<p class="wpc--darkluplite-element darkluplite--text">To create a property of a Map type, proceed as follows:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Start typing map in the Create Property dialog and select the Map type from the list below.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2184" src="https://wizzdi.com/wp-content/uploads/2024/04/map-206x300-1.jpg" alt="" width="206" height="300" /></p>
<p class="wpc--darkluplite-element">Create a property of Map type.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">The map is shown with the generic designation of &lt;K, V&gt;, where K stands for key and V stands for value.</li>
</ul>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2185" src="https://wizzdi.com/wp-content/uploads/2024/04/map-1.jpg" alt="" width="262" height="491" srcset="https://wizzdi.com/wp-content/uploads/2024/04/map-1.jpg 262w, https://wizzdi.com/wp-content/uploads/2024/04/map-1-160x300.jpg 160w" sizes="(max-width: 262px) 100vw, 262px" /></p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Select the data type by typing, using the three dots menu, or creating a new type by clicking in the type text box. You can also use List or Map as nested types.</li>
<li><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2186" src="https://wizzdi.com/wp-content/uploads/2024/04/map-and-nested-list.jpg" alt="" width="261" height="532" srcset="https://wizzdi.com/wp-content/uploads/2024/04/map-and-nested-list.jpg 261w, https://wizzdi.com/wp-content/uploads/2024/04/map-and-nested-list-147x300.jpg 147w" sizes="(max-width: 261px) 100vw, 261px" /></li>
</ul>
<figure id="attachment_970" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-970"></figure>
<p class="wpc--darkluplite-element">A String as a Key and a List of AppUser as a value.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">In the above image, the final type of the Map is displayed in <strong class="wpc--darkluplite-element darkluplite--text">1.</strong></li>
<li class="wpc--darkluplite-element darkluplite--text">The type of the Key is displayed in <strong class="wpc--darkluplite-element darkluplite--text">2.</strong></li>
<li class="wpc--darkluplite-element darkluplite--text">The type of the Value is displayed in <strong class="wpc--darkluplite-element darkluplite--text">3.</strong></li>
<li class="wpc--darkluplite-element darkluplite--text">The value’s inner type (a List) is displayed in <strong class="wpc--darkluplite-element darkluplite--text">4.</strong></li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">When selecting the Type as a List or a Map, a text box for the List type and two text boxes for a Map will open.</p>
<p class="wpc--darkluplite-element darkluplite--text">In the image above, 2 and 3 were opened when Map was selected. Then, when the map value’s type was changed to List, 4 was opened to define the list’s type.</p>
<h3 class="wpc--darkluplite-element"></h3>
<h2 class="wpc--darkluplite-element darkluplite--text">Authentication</h2>
<p class="wpc--darkluplite-element darkluplite--text">When defining consumed API, we must define how API access is authenticated. We have two options:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Basic Authentication</strong>: This method requires sending a username and password with each API request. The credentials are encoded and passed in the HTTP request’s header. It’s simple but less secure and is often used for less complex or internal systems.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Token-Based Authentication</strong>: This method uses a token for access instead of credentials. Users authenticate once to receive a token, which is then used for subsequent requests. It’s more secure and scalable, suitable for modern web and mobile applications.</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>when dealing with consumed (external) API, the authentication definitions should match the external API (consumed) definitions.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2187" src="https://wizzdi.com/wp-content/uploads/2024/04/authentication-setup-1.jpg" alt="" width="683" height="278" srcset="https://wizzdi.com/wp-content/uploads/2024/04/authentication-setup-1.jpg 683w, https://wizzdi.com/wp-content/uploads/2024/04/authentication-setup-1-300x122.jpg 300w" sizes="(max-width: 683px) 100vw, 683px" /></p>
<figure id="attachment_2851" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2851"></figure>
<p class="wpc--darkluplite-element">Authentication Setup for consumed API</p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Basic Authentication </strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">This is the default setup. There is nothing to set. Add authentication parameters following the external/consumed API documentation when defining each secured endpoint. These parameters are automatically defined if an OpenAPI document is available for import.</p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Token Based Authentication</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">In token-based authentication, the login endpoint (sign-in) retrieves a token. It<em class="wpc--darkluplite-element"> </em>is defined as any other endpoint (see login example above) and returns a token. The path and parameters of this endpoint are usually documented in the external service documentation.</p>
<p class="wpc--darkluplite-element darkluplite--text">The retrieved token is usually automatically sent with any subsequent endpoint call. The consumed API interface provides a way to define this behavior following the consumed API definitions.</p>
<p class="wpc--darkluplite-element darkluplite--text">To set the common location where the token will be sent in every subsequent call to the API’s endpoints:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2188" src="https://wizzdi.com/wp-content/uploads/2024/04/Authorise-token-1.jpg" alt="" width="321" height="408" srcset="https://wizzdi.com/wp-content/uploads/2024/04/Authorise-token-1.jpg 321w, https://wizzdi.com/wp-content/uploads/2024/04/Authorise-token-1-236x300.jpg 236w" sizes="(max-width: 321px) 100vw, 321px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">In the above dialog, every endpoint call is amended under the hood, with the token obtained in the <em class="wpc--darkluplite-element darkluplite--text">login</em> endpoint using a header parameter named <em class="wpc--darkluplite-element darkluplite--text">authenticationKey</em>.</p>
<h2 class="wpc--darkluplite-element darkluplite--text"><span class="wpc--darkluplite-element darkluplite--text">Consumed APIs in Multiple Apps</span></h2>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Leveraging Service-Oriented Architecture for Enhanced System Interconnectivity</strong></p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Overview</strong>:</p>
<p class="wpc--darkluplite-element darkluplite--text">Service-Oriented Architecture (SOA) emphasizes building easily reusable and interchangeable software components. With the rise of microservices and distributed architectures, SOA’s principles have gained significant traction. In this context, Wizzdi Cloud offers a unique advantage by allowing one app to interact with another seamlessly.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">1. Consumed APIs in an SOA Ecosystem</strong>:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">OpenAPI for Inter-App Communication</strong>: Consumed APIs are not restricted to external services like Gmail or SendGrid. When working within the Wizzdi Cloud ecosystem, one app can directly import the OpenAPI of another Wizzdi Cloud app. This paves the way for fluid data exchange and service usage between different apps, fostering a cohesive network of interconnected applications.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Standardization with OpenAPI</strong>: By leveraging the OpenAPI specification, Wizzdi Cloud ensures that app-to-app communication adheres to a recognized and consistent format. This standardization reduces integration overhead and potential discrepancies, allowing for a smoother interoperability experience.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Multiple Options for Reusability:</strong>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Adding Dependencies</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">***************************</li>
</ul>
</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Integration without SOA</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud allows users to add dependencies to their apps. This means that users can incorporate additional functionalities or components into their applications. These components can be self-developed or sourced from the Wizzdi or other Market Places.</li>
<li class="wpc--darkluplite-element darkluplite--text">When components are added this way, the original backend of the app is merged with the backend of the external elements. This creates a unified, singular backend system.</li>
<li class="wpc--darkluplite-element darkluplite--text">As a result of this merging, the database created is a collective of entities (or pieces of data) from all the incorporated components. This implies a more integrated data structure.</li>
<li class="wpc--darkluplite-element darkluplite--text">These components’ services (or functionalities) communicate internally in this approach. There isn’t a need for external calls or connections; everything is managed within the unified system.</li>
</ul>
</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Integration with SOA</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">SOA, or Service-Oriented Architecture, is a design principle where services (functionalities) are made available to other parts of an organization through APIs (Application Programming Interfaces).</li>
<li class="wpc--darkluplite-element darkluplite--text">In the context of Wizzdi Cloud, when using an SOA approach, each service or component becomes a separate instance in the Wizzdi Customer’s Cluster. This means each service operates independently and is like its own mini-application. You have the option to deploy the apps either on-premise or on a different cloud service.</li>
<li class="wpc--darkluplite-element darkluplite--text">The integration or communication between these services happens purely through their respective APIs. Instead of having a single, merged backend, each service communicates externally with other services.</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<h3 class="wpc--darkluplite-element darkluplite--text">Summary:</h3>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Without SOA</strong>: Consider blending ingredients to make a single smoothie. You can’t distinguish the individual components; they are fully integrated. This is how Wizzdi Cloud allows apps and their dependencies to merge.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">With SOA</strong>: Imagine a tray of different cups with a distinct beverage. You must sip from each cup separately if you want a taste of two or more. They remain distinct; it’s an external process if you want them to interact. This represents the separate instances communicating through APIs in Wizzdi’s SOA approach.</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">These two approaches would depend on the project’s specific needs and design preferences. Some may prefer the seamless integration of the non-SOA method, while others might find the modular and independent nature of the SOA approach more suitable.</p>
</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">2. Benefits of SOA Integration in Wizzdi Cloud</strong>:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Reusable Components</strong>: Embracing SOA principles means you can design an app component once and then deploy and utilize it across multiple applications. This not only reduces redundant effort but also ensures consistency across projects.***********</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Scalability &amp; Flexibility</strong>: As your system grows, you can easily add or modify new services without disrupting the entire application ecosystem.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Optimized Maintenance &amp; Upgrades</strong>: With distinct apps handling specific services, updating or patching one service doesn’t necessitate taking down the entire system. This modular approach streamlines maintenance tasks and minimizes downtime.</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">3. OpenAPI Publishing in Wizzdi Cloud</strong>:</p>
<p class="wpc--darkluplite-element darkluplite--text">Every app built on Wizzdi Cloud automatically publishes its <em class="wpc--darkluplite-element darkluplite--text">exposed APIs</em> via an OpenAPI document. This self-documenting feature means that any other app, within or outside the Wizzdi Cloud environment, can access and understand the functionalities. It acts as an open invitation, encouraging other systems to leverage the services provided by the app.</p>
<p class="wpc--darkluplite-element darkluplite--text">In summary, Wizzdi Cloud’s support for SOA principles and its inherent capabilities around Consumed APIs position it as a robust platform for creating intricate, interconnected software ecosystems. Whether you’re aiming for a vast web of interlinked applications or want two apps to share resources, Wizzdi Cloud provides the tools and frameworks to make it happen effortlessly.</p><p>The post <a href="https://wizzdi.com/docs/documentation/consumed-apis/">Consumed APIs</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/consumed-apis/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Custom Queries</title>
		<link>https://wizzdi.com/docs/documentation/custom-queries/</link>
					<comments>https://wizzdi.com/docs/documentation/custom-queries/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 18:25:33 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1718</guid>

					<description><![CDATA[<p>Advanced data Queries Wizzdi Cloud strives to simplify the backend development process by automating foundational aspects, like creating repositories and generating code for CRUD operations on entities. However, real-world applications often demand more granular control and nuanced data interactions. Recognizing this need, Wizzdi Cloud offers advanced tools such as the custom query builder.  Automated Entity [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/custom-queries/">Custom Queries</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Advanced data Queries</strong></h1>
<hr class="wpc--darkluplite-element darkluplite--border" />
<p class="wpc--darkluplite-element darkluplite--text">
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud strives to simplify the backend development process by automating foundational aspects, like creating repositories and generating code for CRUD operations on entities. However, real-world applications often demand more granular control and nuanced data interactions. Recognizing this need, Wizzdi Cloud offers advanced tools such as the custom query builder.</p>
<h2 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text"> Automated Entity Management</strong></h2>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Instant Repository &amp; Service Generation</strong>: As you sculpt entities within Wizzdi Cloud, the system recognizes these entities and instantaneously crafts the requisite data repositories and accompanying services to facilitate basic CRUD operations.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Smart Data Retrieval</strong>: Wizzdi Cloud is designed with an innate understanding of entity relationships. For instance, when querying for an entity related to another entity, the system automatically fetches relevant connected data. This feature ensures that data remains contextually rich and relevant. Using the authors and books example, when books are queried, their corresponding author is nested within the retrieved data, providing comprehensive insights without additional requests. This happens only when you retrieve the ‘many’ side of the relation, in this case, the Book. When an Author is retrieved, no book list is populated.</li>
</ul>
<h2 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Custom Query Builder</strong></h2>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Beyond Basic CRUD</strong>: While automated CRUD operations suffice for many scenarios, there are times when the default isn’t enough. Whether it’s complex filtering, advanced aggregations, or specific data transformations, there are myriad cases where a more hands-on approach to data access is warranted.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Intuitive Interface</strong>: The custom query builder is designed with user-friendliness in mind. It provides a visual platform to define specific data retrieval conditions, ensuring you get the exact slice of data you need in your desired format.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Integrated Code &amp; Repository Creation</strong>: As with entity creation, Wizzdi Cloud takes over the heavy lifting once you design a custom query. It generates the necessary data repository structures and crafts the service code, ensuring that your custom queries are not just designs but instantly actionable components of your backend.</li>
</ul>
<h1 class="wpc--darkluplite-element darkluplite--text">How To</h1>
<h2 class="wpc--darkluplite-element darkluplite--text">General</h2>
<p class="wpc--darkluplite-element darkluplite--text">A custom query is usually connected to an API <em class="wpc--darkluplite-element darkluplite--text">endpoint</em> or is called from a <em class="wpc--darkluplite-element darkluplite--text">Flow. </em></p>
<p class="wpc--darkluplite-element darkluplite--text">These associations are defined using the user interface, if you are interested, like all other elements created in Wizzdi Cloud, and regardless of the deployment method, a custom query becomes generated code behind the scenes. Some of us, sometimes, may want to look at the code, change it, or enhance it. Otherwise, it is just interesting to know.</p>
<p class="wpc--darkluplite-element darkluplite--text">When we create a custom query, we use the domain model. Custom Queries provide a way to retrieve data beyond the data retrieval provided by the exposed CRUD APIs.</p>
<p class="wpc--darkluplite-element darkluplite--text">Like the data retrieval services created by the system, data is efficiently fetched using the system’s database engine.</p>
<p class="wpc--darkluplite-element darkluplite--text">The process of creating a query is usually along these lines:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Define the entities participating in the query; these must be entities from our project and entities from referenced projects, be it from other workspaces or marketplaces.</li>
<li class="wpc--darkluplite-element darkluplite--text">Define the data structure passed to the query; usually, filtering parameters are passed this way. This is called the <em class="wpc--darkluplite-element darkluplite--text">Request.</em></li>
<li class="wpc--darkluplite-element darkluplite--text">Define the data structure the query returns; this is called the R<em class="wpc--darkluplite-element darkluplite--text">esponse</em>.<em class="wpc--darkluplite-element"> </em>Besides exceptional cases, most queries return a list of the response object type.</li>
<li class="wpc--darkluplite-element darkluplite--text">Define the <em class="wpc--darkluplite-element darkluplite--text">conditions</em> narrowing the result set; for example, fetch all Students studying mathematics.</li>
<li class="wpc--darkluplite-element darkluplite--text">Define optional <em class="wpc--darkluplite-element darkluplite--text">sorting</em>.</li>
<li class="wpc--darkluplite-element darkluplite--text">Define optional <em class="wpc--darkluplite-element darkluplite--text">grouping. Grouping</em> is an essential concept in queries; for example, calculate the number of students in each class passing minimum average exam result.</li>
</ul>
<h2 class="wpc--darkluplite-element darkluplite--text">The User Interface<br class="wpc--darkluplite-element" /><img loading="lazy" decoding="async" class="aligncenter wp-image-2150" src="https://wizzdi.com/wp-content/uploads/2024/04/start.jpg" alt="" width="656" height="305" srcset="https://wizzdi.com/wp-content/uploads/2024/04/start.jpg 1655w, https://wizzdi.com/wp-content/uploads/2024/04/start-300x140.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/start-1024x476.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/start-768x357.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/start-1536x715.jpg 1536w" sizes="(max-width: 656px) 100vw, 656px" /></h2>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Add Query: </strong>To add a new custom query with name and description fields, the name must conform to Java class names.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Manage: </strong>edit a query after it is created.</p>
<h4 class="wpc--darkluplite-element darkluplite--text"></h4>
<figure id="attachment_2140" aria-describedby="caption-attachment-2140" style="width: 750px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2140" src="https://wizzdi.com/wp-content/uploads/2024/04/main-UI.jpg" alt="" width="750" height="311" srcset="https://wizzdi.com/wp-content/uploads/2024/04/main-UI.jpg 1919w, https://wizzdi.com/wp-content/uploads/2024/04/main-UI-300x124.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/main-UI-1024x424.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/main-UI-768x318.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/main-UI-1536x636.jpg 1536w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption id="caption-attachment-2140" class="wp-caption-text">User Interface Overview</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Root and Connections (joins): </strong> here, we define what are the entities participating in the query.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Root Entity</strong>: In query construction, the root entity is the primary Entity from which the query starts. The central table in your query emanates from all paths (joins) to related tables. Select it by right-clicking on a space on the left side of the screen.</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="aligncenter wp-image-2146" src="https://wizzdi.com/wp-content/uploads/2024/04/right-click-for-root.jpg" alt="" width="750" height="459" srcset="https://wizzdi.com/wp-content/uploads/2024/04/right-click-for-root.jpg 538w, https://wizzdi.com/wp-content/uploads/2024/04/right-click-for-root-300x183.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<h4 class="wpc--darkluplite-element"></h4>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Searching for a root entity.</strong></p>
<figure id="attachment_2148" aria-describedby="caption-attachment-2148" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2148" src="https://wizzdi.com/wp-content/uploads/2024/04/search-entity-2.jpg" alt="" width="350" height="256" srcset="https://wizzdi.com/wp-content/uploads/2024/04/search-entity-2.jpg 642w, https://wizzdi.com/wp-content/uploads/2024/04/search-entity-2-300x219.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-2148" class="wp-caption-text">Search for a root entity.</figcaption></figure>
<figure id="attachment_3393" class="wp-caption wpc--darkluplite-element alignnone" aria-describedby="caption-attachment-3393"><figcaption id="caption-attachment-3393" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<figure id="attachment_3394" class="wp-caption wpc--darkluplite-element alignnone" aria-describedby="caption-attachment-3394">
<p><figure id="attachment_2147" aria-describedby="caption-attachment-2147" style="width: 350px" class="wp-caption aligncenter wpc--darkluplite-element"><img loading="lazy" decoding="async" class="wp-image-2147" src="https://wizzdi.com/wp-content/uploads/2024/04/root-created-2.jpg" alt="" width="350" height="175" srcset="https://wizzdi.com/wp-content/uploads/2024/04/root-created-2.jpg 393w, https://wizzdi.com/wp-content/uploads/2024/04/root-created-2-300x150.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-2147" class="wp-caption-text">Root created</figcaption></figure><figcaption id="caption-attachment-3394" class="wp-caption-text wpc--darkluplite-element darkluplite--text">&nbsp;</p>
</figcaption></figure>
<figure id="attachment_2139" aria-describedby="caption-attachment-2139" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2139" src="https://wizzdi.com/wp-content/uploads/2024/04/how-root-is-marked-1.jpg" alt="" width="350" height="174" srcset="https://wizzdi.com/wp-content/uploads/2024/04/how-root-is-marked-1.jpg 629w, https://wizzdi.com/wp-content/uploads/2024/04/how-root-is-marked-1-300x149.jpg 300w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-2139" class="wp-caption-text">Root designation (the yellow square)</figcaption></figure>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Adding entities</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">Why we need to include other entities via cascaded joins from the root entity:</p>
<ol class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Response Composition</strong>: Include related data from different entities in a single query response.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Condition Application</strong>: Apply conditions involving fields from multiple entities.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Result Sorting</strong>: Use fields from included entities to sort query results.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Data Grouping</strong>: Group data by fields from multiple entities in aggregate functions.</li>
</ol>
<p class="wpc--darkluplite-element darkluplite--text">Joins are essential when data is normalized across multiple entities, requiring compilation or comparison of information from those entities.</p>
<p class="wpc--darkluplite-element darkluplite--text">We can use reference fields on the root item to add more entities. (in the image above, we have the <em class="wpc--darkluplite-element darkluplite--text">Teacher</em> and <em class="wpc--darkluplite-element darkluplite--text">MainSubject)</em></p>
<p class="wpc--darkluplite-element darkluplite--text">Right-click on a reference field (if its type is <span class="wpc--darkluplite-element darkluplite--text">another</span> entity) and select <em class="wpc--darkluplite-element darkluplite--text">Join.</em></p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="wp-image-2132 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/add-entity.jpg" alt="" width="587" height="311" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-entity.jpg 702w, https://wizzdi.com/wp-content/uploads/2024/04/add-entity-300x159.jpg 300w" sizes="(max-width: 587px) 100vw, 587px" /></p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="wp-image-2152 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/two-more-entities.jpg" alt="" width="586" height="324" srcset="https://wizzdi.com/wp-content/uploads/2024/04/two-more-entities.jpg 1226w, https://wizzdi.com/wp-content/uploads/2024/04/two-more-entities-300x166.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/two-more-entities-1024x565.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/two-more-entities-768x424.jpg 768w" sizes="(max-width: 586px) 100vw, 586px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">You can continue adding more entities from the available reference fields on any entity on the diagram.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>When one-to-many relations relate entities, we normally find a field of the one side in the many-side entity. For example, a Child entity may have a Mother field in the underlying database, but there is no <em class="wpc--darkluplite-element darkluplite--text">Children </em>field in the <em class="wpc--darkluplite-element darkluplite--text">Mother </em>entity.</p>
<p class="wpc--darkluplite-element darkluplite--text">However, Wizzdi Cloud adds such a List to the one-side entity. This list is never populated, as it can be infinite in size. However, it is readily used in joins; for example, instead of using the <em class="wpc--darkluplite-element darkluplite--text">TeacherToMainSubject</em> entity as root, use ‘real’ references to add both <em class="wpc--darkluplite-element darkluplite--text">Teacher</em> and <em class="wpc--darkluplite-element darkluplite--text">MainSubject</em> entities to the diagram; we can start with either <em class="wpc--darkluplite-element darkluplite--text">Teacher</em> or <em class="wpc--darkluplite-element darkluplite--text">MainSubject</em> like this:</p>
<figure aria-describedby="caption-attachment-2870">
<h3 aria-describedby="caption-attachment-2870"><img loading="lazy" decoding="async" class="wp-image-2137 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/different-root.jpg" alt="" width="457" height="440" srcset="https://wizzdi.com/wp-content/uploads/2024/04/different-root.jpg 658w, https://wizzdi.com/wp-content/uploads/2024/04/different-root-300x289.jpg 300w" sizes="(max-width: 457px) 100vw, 457px" /></h3>
</figure>
<figure class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2870"><figcaption id="caption-attachment-2870" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Start from MainSubject and add joins in two hops.</figcaption></figure>
<p class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">The request</strong></p>
<p class="wpc--darkluplite-element darkluplite--text">Every query must define a <em class="wpc--darkluplite-element darkluplite--text">Request object</em>. This object provides the query with the required parameters affecting the result set.</p>
<figure id="attachment_2876" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 757px;" aria-describedby="caption-attachment-2876"><img loading="lazy" decoding="async" class="alignleft wp-image-2134" src="https://wizzdi.com/wp-content/uploads/2024/04/add-response.jpg" alt="" width="757" height="206" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-response.jpg 966w, https://wizzdi.com/wp-content/uploads/2024/04/add-response-300x82.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/add-response-768x209.jpg 768w" sizes="(max-width: 757px) 100vw, 757px" /></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Define a new request by right-clicking on the right side empty area.</p>
<p class="wpc--darkluplite-element darkluplite--text">Select Request from the right-side top menu, then right-click to define a request object.</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="wp-image-2145 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/request-object-1.jpg" alt="" width="734" height="143" srcset="https://wizzdi.com/wp-content/uploads/2024/04/request-object-1.jpg 796w, https://wizzdi.com/wp-content/uploads/2024/04/request-object-1-300x58.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/request-object-1-768x150.jpg 768w" sizes="(max-width: 734px) 100vw, 734px" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element darkluplite--text">The request object includes mandatory fields to control the size of the result set: <em class="wpc--darkluplite-element darkluplite--text">pageSize </em>and <em class="wpc--darkluplite-element darkluplite--text">currentPage.</em></p>
<p class="wpc--darkluplite-element darkluplite--text">Click the right-facing small arrow to open the <em class="wpc--darkluplite-element darkluplite--text">Request.</em></p>
<figure id="attachment_2878" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 648px;" aria-describedby="caption-attachment-2878"><img loading="lazy" decoding="async" class="alignleft wp-image-2141" src="https://wizzdi.com/wp-content/uploads/2024/04/minimal-request-object.jpg" alt="" width="648" height="229" srcset="https://wizzdi.com/wp-content/uploads/2024/04/minimal-request-object.jpg 789w, https://wizzdi.com/wp-content/uploads/2024/04/minimal-request-object-300x106.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/minimal-request-object-768x272.jpg 768w" sizes="(max-width: 648px) 100vw, 648px" /></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Minimal Request Object</p>
<h4 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Adding fields</strong></h4>
<figure id="attachment_2879" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 662px;" aria-describedby="caption-attachment-2879"><img loading="lazy" decoding="async" class="alignleft wp-image-2133" src="https://wizzdi.com/wp-content/uploads/2024/04/add-fields.jpg" alt="" width="662" height="241" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-fields.jpg 791w, https://wizzdi.com/wp-content/uploads/2024/04/add-fields-300x109.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/add-fields-768x280.jpg 768w" sizes="(max-width: 662px) 100vw, 662px" /><figcaption id="caption-attachment-2879" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Click on the ‘+’ sign to add Property or Object</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">The request object can include nested objects. To define a new object, click the <em class="wpc--darkluplite-element darkluplite--text">Object</em> button.</p>
<p class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="wp-image-2136 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/continue-editing-the-request-object.jpg" alt="" width="779" height="276" srcset="https://wizzdi.com/wp-content/uploads/2024/04/continue-editing-the-request-object.jpg 963w, https://wizzdi.com/wp-content/uploads/2024/04/continue-editing-the-request-object-300x106.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/continue-editing-the-request-object-768x272.jpg 768w" sizes="(max-width: 779px) 100vw, 779px" /></p>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element darkluplite--text">Using the respective ‘+’ sign, you can keep adding fields at the correct level; when adding a property, you can use the new types you have defined while creating Objects.</p>
<p class="wpc--darkluplite-element darkluplite--text">The fields from the <em class="wpc--darkluplite-element darkluplite--text">Request </em>object are usually used in conditions or the <em class="wpc--darkluplite-element darkluplite--text">response</em> object.</p>
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">The <em class="wpc--darkluplite-element darkluplite--text">Response</em></strong></h3>
<figure id="attachment_2881" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 713px;" aria-describedby="caption-attachment-2881"><img loading="lazy" decoding="async" class="alignleft wp-image-2134" src="https://wizzdi.com/wp-content/uploads/2024/04/add-response.jpg" alt="" width="713" height="194" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-response.jpg 966w, https://wizzdi.com/wp-content/uploads/2024/04/add-response-300x82.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/add-response-768x209.jpg 768w" sizes="(max-width: 713px) 100vw, 713px" /><figcaption id="caption-attachment-2881" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Add response object</figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">Available options when building a response object:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Create a property; the property has a name and a data source.</li>
<li class="wpc--darkluplite-element darkluplite--text">Create an Object accommodating a more complex structure in the response.</li>
</ul>
<h2 class="wpc--darkluplite-element"><img loading="lazy" decoding="async" class="wp-image-2138 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/empty-response-obejct.jpg" alt="" width="742" height="138" srcset="https://wizzdi.com/wp-content/uploads/2024/04/empty-response-obejct.jpg 952w, https://wizzdi.com/wp-content/uploads/2024/04/empty-response-obejct-300x56.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/empty-response-obejct-768x143.jpg 768w" sizes="(max-width: 742px) 100vw, 742px" /></h2>
<p><img loading="lazy" decoding="async" class="wp-image-2142 aligncenter" src="https://wizzdi.com/wp-content/uploads/2024/04/property-name-before-value.jpg" alt="" width="740" height="143" srcset="https://wizzdi.com/wp-content/uploads/2024/04/property-name-before-value.jpg 973w, https://wizzdi.com/wp-content/uploads/2024/04/property-name-before-value-300x58.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/property-name-before-value-768x148.jpg 768w" sizes="(max-width: 740px) 100vw, 740px" /></p>
<p class="wpc--darkluplite-element darkluplite--text">We can now select the data source for the <em class="wpc--darkluplite-element darkluplite--text">subjectName </em>property.</p>
<figure id="attachment_2885" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 750px;" aria-describedby="caption-attachment-2885"><img loading="lazy" decoding="async" class="alignleft wp-image-2149" src="https://wizzdi.com/wp-content/uploads/2024/04/select-field-from-entity.jpg" alt="" width="750" height="310" srcset="https://wizzdi.com/wp-content/uploads/2024/04/select-field-from-entity.jpg 956w, https://wizzdi.com/wp-content/uploads/2024/04/select-field-from-entity-300x124.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/select-field-from-entity-768x317.jpg 768w" sizes="(max-width: 750px) 100vw, 750px" /></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>While setting the data source for a property.</p>
<figure id="attachment_2886" class="wp-caption wpc--darkluplite-element aligncenter" style="width: 754px;" aria-describedby="caption-attachment-2886"><img loading="lazy" decoding="async" class="alignleft wp-image-2135" src="https://wizzdi.com/wp-content/uploads/2024/04/after-setting-field-in-the-response.jpg" alt="" width="754" height="138" srcset="https://wizzdi.com/wp-content/uploads/2024/04/after-setting-field-in-the-response.jpg 956w, https://wizzdi.com/wp-content/uploads/2024/04/after-setting-field-in-the-response-300x55.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/after-setting-field-in-the-response-768x141.jpg 768w" sizes="(max-width: 754px) 100vw, 754px" /><figcaption id="caption-attachment-2886" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Data source set</figcaption></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element darkluplite--text">Using functions in conjunction with fields.</p><p>The post <a href="https://wizzdi.com/docs/documentation/custom-queries/">Custom Queries</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/custom-queries/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exposed API</title>
		<link>https://wizzdi.com/docs/documentation/exposed-api/</link>
					<comments>https://wizzdi.com/docs/documentation/exposed-api/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 18:23:23 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1716</guid>

					<description><![CDATA[<p>Overview Exposed API is the collection of the REST endpoints the created backend exposes. These endpoints are usually consumed(used) by client-facing apps on mobile, web, or desktop. Other backends can also consume exposed Apis. When integrating with other systems, services offered by the backend you build can be utilized by other systems; these systems can be built [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/exposed-api/">Exposed API</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="flex-1 overflow-hidden wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-79elbk h-full dark:bg-gray-800 wpc--darkluplite-element">
<div class="react-scroll-to-bottom--css-upyyp-1n7m0yu wpc--darkluplite-element">
<div class="flex flex-col text-sm dark:bg-gray-800 wpc--darkluplite-element">
<div class="group w-full text-token-text-primary border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654] wpc--darkluplite-element">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-[38rem] xl:max-w-3xl md:py-6 lg:px-0 m-auto wpc--darkluplite-element">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)] wpc--darkluplite-element">
<div class="flex flex-grow flex-col gap-3 wpc--darkluplite-element">
<div class="min-h-[20px] flex flex-col items-start gap-3 overflow-x-auto whitespace-pre-wrap break-words wpc--darkluplite-element">
<div class="markdown prose w-full break-words dark:prose-invert dark wpc--darkluplite-element">
<h3 class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Overview</strong></h3>
<p class="wpc--darkluplite-element darkluplite--text">Exposed API is the collection of the <a class="darkluplite--link" href="https://en.wikipedia.org/wiki/REST">REST</a> endpoints the created backend exposes. These endpoints are usually consumed(used) by client-facing apps on mobile, web, or desktop.</p>
<p class="wpc--darkluplite-element darkluplite--text">Other backends can also consume exposed Apis. When integrating with other systems, services offered by the backend you build can be utilized by other systems; these systems can be built with Wizzdi Cloud or any other framework or programming language.</p>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud automatically generates API endpoints based on the entities you define within your domain model. This feature simplifies the backend development process, ensuring that every entity you create is instantly accessible and manageable. Additionally, Wizzdi Cloud offers flexibility in adding or importing API endpoints for advanced use cases or specific requirements.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note:</strong> The automatic generation of API endpoints from entities can be turned off.</p>
<p>&nbsp;</p>
<h4 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">1. Default API Generation</strong>:</h4>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Entity-Based Automation</strong>: As soon as you create entities in the domain model editor, Wizzdi Cloud generates corresponding API endpoints. These entities’ basic CRUD (Create, Read, Update, Delete) operations are instantly set up without further intervention.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Immediate Usability</strong>: With automatically generated APIs, your backend is instantly operational. As you evolve your domain model, the system adapts immediately, updating the available API endpoints as necessary.</li>
</ul>
<p>&nbsp;</p>
<h4 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">2. Advanced API Management</strong>:</h4>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Manual Endpoint Addition</strong>: There might be scenarios where you require custom API endpoints for specialized operations or to cater to unique functionalities. Wizzdi Cloud’s interface allows for the intuitive addition of individual API endpoints, granting you complete control over the specifics.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">OpenAPI Document Import</strong>: To streamline the process further and accommodate extensive API structures, Wizzdi Cloud supports importing OpenAPI documents. This feature is especially beneficial when migrating or integrating extensive systems, as it bypasses the need for manual entry. Upon importing, all the endpoints defined in the OpenAPI document are readily available within Wizzdi Cloud.</li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud’s approach to managing exposed API endpoints balances automation and customization. Whether building from scratch or integrating existing systems, the platform offers tools to ensure your backend is robust, responsive, and ready for deployment.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h3 class="h-32 md:h-48 flex-shrink-0 wpc--darkluplite-element darkluplite--text">Description</h3>
</div>
</div>
</div>
</div>
<div class="absolute bottom-0 left-0 w-full border-t md:border-t-0 dark:border-white/20 md:border-transparent md:dark:border-transparent md:bg-vert-light-gradient bg-white dark:bg-gray-800 md:!bg-transparent dark:md:bg-vert-dark-gradient pt-2 md:pl-2 md:w-[calc(100%-.5rem)] wpc--darkluplite-element">
<form class="stretch mx-2 flex flex-row gap-3 last:mb-2 md:mx-4 md:last:mb-6 lg:mx-auto lg:max-w-2xl xl:max-w-3xl wpc--darkluplite-element">
<div class="relative flex h-full flex-1 items-stretch md:flex-col wpc--darkluplite-element">
<p>&nbsp;</p>
<h4 class="h-full flex ml-1 md:w-full md:m-auto md:mb-4 gap-0 md:gap-2 justify-center wpc--darkluplite-element darkluplite--text">Controlling automated API generation</h4>
</div>
</form>
</div>
<p class="wpc--darkluplite-element darkluplite--text">By Default, Wizzdi Cloud generates CRUD API endpoints.  To change this behavior, select <em class="wpc--darkluplite-element darkluplite--text">Exposed API </em>from the menu.</p>
<p class="wpc--darkluplite-element darkluplite--text">Select <em class="wpc--darkluplite-element darkluplite--text">Settings </em><img loading="lazy" decoding="async" class="aligncenter wp-image-2646" src="https://wizzdi.com/wp-content/uploads/2024/04/screenshot-server-management-dev.wizzdi.com-2024.01.03-10_33_33-1.jpg" sizes="(max-width: 300px) 100vw, 300px" alt="" width="350" height="177" srcset="https://wizzdi.com/wp-content/uploads/2024/04/screenshot-server-management-dev.wizzdi.com-2024.01.03-10_33_33-1.jpg 375w, https://wizzdi.com/wp-content/uploads/2024/04/screenshot-server-management-dev.wizzdi.com-2024.01.03-10_33_33-1-300x152.jpg 300w" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Then, switch off the <em class="wpc--darkluplite-element darkluplite--text">Auto Generation </em>option. <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/auto-generate-endpoints.jpg" alt="" width="350" height="145" /></p>
<h4 class="wpc--darkluplite-element darkluplite--text">Importing an Open API API specifications</h4>
<p class="wpc--darkluplite-element darkluplite--text">Wizzdi Cloud supports the import of Open API definitions from a URL or a file. In both cases, the definitions can be JSON-based or YAML-based.</p>
<p class="wpc--darkluplite-element darkluplite--text">Importing Open API specifications is the first step in the Contract First approach. Alternatively, the API endpoints can be manually defined.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/import-1.jpg" alt="" width="350" height="145" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Select manage at the bottom right corner of the <em class="wpc--darkluplite-element darkluplite--text">Exposed Api </em>section, then select the top option.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/import-OpenAPI.jpg" alt="" width="350" height="145" /></p>
<figure id="attachment_2813" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2813"><figcaption id="caption-attachment-2813" class="wp-caption-text wpc--darkluplite-element darkluplite--text">Import Open API definitions.</figcaption></figure>
<h5 class="wpc--darkluplite-element darkluplite--text">Import Open API definitions from the URL into the Exposed API.</h5>
<p class="wpc--darkluplite-element darkluplite--text">Below is an example of an OpenAPI URL from <strong class="wpc--darkluplite-element darkluplite--text">another </strong>demo App deployed in Wizzdi Cloud Customer’s cluster, where Apps may run.</p>
<p class="wpc--darkluplite-element darkluplite--text">In such cases, the URL is <em class="wpc--darkluplite-element darkluplite--text">https://[<strong class="wpc--darkluplite-element darkluplite--text">appname</strong>].[<strong class="wpc--darkluplite-element darkluplite--text">workspace</strong>].cluster.wizzdi.com/api/v3/api-docs</em><br class="wpc--darkluplite-element" />for example, https://publish16.avishay-s-workspace.cluster.wizzdi.com/api/v3/api-docs.</p>
<p class="wpc--darkluplite-element darkluplite--text">Paste the URL in the upper text box of the import OpenAPI dialog.</p>
<p class="wpc--darkluplite-element darkluplite--text">Here is the <a class="darkluplite--link" href="https://publish16.avishay-s-workspace.cluster.wizzdi.com/api/v3/api-docs">link</a></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/import-with-URL-1.jpg" alt="" width="750" height="311" /></p>
<p class="wpc--darkluplite-element darkluplite--text">Hit the <em class="wpc--darkluplite-element darkluplite--text">Save Changes</em> button. After a while, you should see the endpoints in the exposed API view.</p>
<p class="wpc--darkluplite-element darkluplite--text">To import from a file, click <em class="wpc--darkluplite-element darkluplite--text">Upload File </em>and browse for a valid OpenAPI file on the local system.</p>
<p class="wpc--darkluplite-element darkluplite--text">The import can be executed as many times as required. Note that importing an existing endpoint will not change its signature.<br class="wpc--darkluplite-element" />Changing the EndPoint properties can be carried out by the built-in editor provided in Wizzdi Cloud.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/after-import.jpg" alt="" width="750" height="311" /></p>
<p class="wpc--darkluplite-element darkluplite--text">One needs to scroll to see all imported endpoints.</p>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note:</strong> We can see the endpoints if we deploy the application now. However, the endpoints are not currently linked to any actual actions. Linking the endpoints to ‘real’ actions requires the following steps:</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"> Infer the domain needed model from the endpoint definitions.</li>
<li class="wpc--darkluplite-element darkluplite--text">Create the domain model entities, enums, and relationships.</li>
<li class="wpc--darkluplite-element darkluplite--text">A Custom Query,  a Flow, or both for each endpoint.</li>
<li class="wpc--darkluplite-element darkluplite--text">The imported API defines the request and response objects required in the Custom Queries and Flows.</li>
</ul>
<h4>Manually Creating a Custom Endpoint</h4>
<p>In the exposed API section, click the &#8216;Manage&#8217; button at the bottom left of the screen and access the Add Custom Endpoint option.</p>
<figure id="attachment_4207" aria-describedby="caption-attachment-4207" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4207" src="https://wizzdi.com/wp-content/uploads/2024/04/add-custome-endpoint.jpg" alt="" width="350" height="387" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-custome-endpoint.jpg 403w, https://wizzdi.com/wp-content/uploads/2024/04/add-custome-endpoint-271x300.jpg 271w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-4207" class="wp-caption-text">Accessing the Add Custom Endpoint</figcaption></figure>
<p>First, define the primary properties of the new endpoint</p>
<figure id="attachment_4208" aria-describedby="caption-attachment-4208" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4208" src="https://wizzdi.com/wp-content/uploads/2024/04/custom-API-endpoint-properties.jpg" alt="" width="350" height="1149" srcset="https://wizzdi.com/wp-content/uploads/2024/04/custom-API-endpoint-properties.jpg 496w, https://wizzdi.com/wp-content/uploads/2024/04/custom-API-endpoint-properties-91x300.jpg 91w, https://wizzdi.com/wp-content/uploads/2024/04/custom-API-endpoint-properties-312x1024.jpg 312w, https://wizzdi.com/wp-content/uploads/2024/04/custom-API-endpoint-properties-468x1536.jpg 468w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-4208" class="wp-caption-text">Create a Custom exposed API endpoint</figcaption></figure>
<h5>Legend</h5>
<ol>
<li>This is the endpoint name used when calling the API.</li>
<li>This is the name of the method created in the corresponding <a href="https://www.baeldung.com/spring-controllers">controller</a>.</li>
<li><span style="box-sizing: border-box; margin: 0px; padding: 0px;">The <a href="https://restfulapi.net/http-methods/" target="_blank" rel="noopener">Method</a> of this endpoint, Wizzdi Cloud, supports the <em>Post, Get, Put, and Delete </em>methods.</span></li>
<li>The description of the endpoint for documentation purposes.</li>
<li>The Tags associated with the endpoint, Tags are used to group endpoints. Endpoints can be associated with multiple tags and displayed in the OpenAPI interface multiple times.</li>
<li>The list of tags associated with the endpoint. An endpoint must be associated with at least one tag.</li>
</ol>
<p>The above dialog is also available when editing an endpoint.</p>
<p>&nbsp;</p>
<h4></h4>
<h4></h4>
<h4></h4>
<h4 class="wpc--darkluplite-element darkluplite--text">Managing Exposed EndPoints.</h4>
<p class="wpc--darkluplite-element darkluplite--text">Once the API is imported, endpoints are visible under the corresponding tags in the OpenAPI document.</p>
<p>This is also true for an API that is created manually.</p>
<figure id="attachment_2394" aria-describedby="caption-attachment-2394" style="width: 750px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/after-import.jpg" alt="" width="750" height="311" /><figcaption id="caption-attachment-2394" class="wp-caption-text">Endpoints after the import</figcaption></figure>
<figure id="attachment_2817" class="wp-caption aligncenter wpc--darkluplite-element" aria-describedby="caption-attachment-2817"><figcaption id="caption-attachment-2817" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<p>&nbsp;</p>
<p class="wpc--darkluplite-element darkluplite--text">To enable an endpoint in a web application or API to perform specific actions, it must be integrated with either a Flow or a CustomQuery. A Flow refers to a predefined sequence of operations or tasks the endpoint will trigger and execute. These operations could include data processing, database interaction, calling other services, or other flows. On the other hand, CustomQuery is a user-defined operation tailored for complex or specific data retrieval. It involves using the Wizzdi Cloud custom query visual tool. By linking an endpoint to a Flow or a CustomQuery, you define the exact functionality that the endpoint will offer, essentially ‘programming’ it to respond to client requests meaningfully.</p>
<p>&nbsp;</p>
<figure id="attachment_2394" aria-describedby="caption-attachment-2394" style="width: 750px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/family-endpoint.jpg" alt="" width="750" height="311" /><figcaption id="caption-attachment-2394" class="wp-caption-text">collapsed endpoint</figcaption></figure>
<figure id="attachment_2822" class="wp-caption alignnone wpc--darkluplite-element" aria-describedby="caption-attachment-2822"><figcaption id="caption-attachment-2822" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<p class="wpc--darkluplite-element darkluplite--text">To edit an endpoint, click on the small open triangle to the right of its available tools.</p>
<h5>Endpoint primary properties</h5>
<p>Click on the small pencil icon to access the endpoint&#8217;s primary properties.</p>
<figure id="attachment_4209" aria-describedby="caption-attachment-4209" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4209" src="https://wizzdi.com/wp-content/uploads/2024/04/edit-primary-properties.jpg" alt="" width="350" height="704" srcset="https://wizzdi.com/wp-content/uploads/2024/04/edit-primary-properties.jpg 637w, https://wizzdi.com/wp-content/uploads/2024/04/edit-primary-properties-149x300.jpg 149w, https://wizzdi.com/wp-content/uploads/2024/04/edit-primary-properties-509x1024.jpg 509w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-4209" class="wp-caption-text">Editing the primary properties of an endpoint</figcaption></figure>
<p>To associate the endpoint with a tag, start typing the tag name; if the tag exists, you can use the + sign near the tag to associate it with the edited endpoint. The current version of Wizzdi Cloud doesn&#8217;t support multiple <em>tags</em> per endpoint.</p>
<p>If the tag does not exist, a button will appear, allowing you to add one and associate it with the edited endpoint.</p>
<figure id="attachment_4214" aria-describedby="caption-attachment-4214" style="width: 355px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4214" src="https://wizzdi.com/wp-content/uploads/2024/04/add-tag.jpg" alt="" width="355" height="204" srcset="https://wizzdi.com/wp-content/uploads/2024/04/add-tag.jpg 688w, https://wizzdi.com/wp-content/uploads/2024/04/add-tag-300x172.jpg 300w" sizes="(max-width: 355px) 100vw, 355px" /><figcaption id="caption-attachment-4214" class="wp-caption-text">Add a new tag</figcaption></figure>
<h5>Endpoint additional properties</h5>
<p>Once the endpoint has been created, its other properties can be set. This includes<span style="box-sizing: border-box; margin: 0px; padding: 0px;"> <em>the path, Header,</em> and <em>Query </em>parameters</span><em>.</em></p>
<p>Expand the view of the endpoint by clicking on the small arrow:</p>
<figure id="attachment_4215" aria-describedby="caption-attachment-4215" style="width: 750px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4215" src="https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-scaled.jpg" alt="" width="750" height="35" srcset="https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-scaled.jpg 2560w, https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-300x14.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-1024x48.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-768x36.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-1536x71.jpg 1536w, https://wizzdi.com/wp-content/uploads/2024/04/small-arrow-2048x95.jpg 2048w" sizes="(max-width: 750px) 100vw, 750px" /><figcaption id="caption-attachment-4215" class="wp-caption-text">Collapsed endpoint view</figcaption></figure>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-4217" src="https://wizzdi.com/wp-content/uploads/2024/04/expanded-1.jpg" alt="" width="750" height="233" srcset="https://wizzdi.com/wp-content/uploads/2024/04/expanded-1.jpg 2500w, https://wizzdi.com/wp-content/uploads/2024/04/expanded-1-300x93.jpg 300w, https://wizzdi.com/wp-content/uploads/2024/04/expanded-1-1024x319.jpg 1024w, https://wizzdi.com/wp-content/uploads/2024/04/expanded-1-768x239.jpg 768w, https://wizzdi.com/wp-content/uploads/2024/04/expanded-1-1536x478.jpg 1536w, https://wizzdi.com/wp-content/uploads/2024/04/expanded-1-2048x637.jpg 2048w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p><strong>1. Path parameters</strong></p>
<p>These are parameters embedded directly in the URL path to identify specific resources.</p>
<p><strong>2. Headers Parameters.</strong></p>
<p>These are metadata (key-value) or information included in the request headers but are not visible in the URL</p>
<p><strong>3. Headers Parameters.</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<figure id="attachment_2823" class="wp-caption alignnone wpc--darkluplite-element" aria-describedby="caption-attachment-2823"><figcaption id="caption-attachment-2823" class="wp-caption-text wpc--darkluplite-element darkluplite--text"></figcaption></figure>
<h5 class="wpc--darkluplite-element darkluplite--text">Adding <em class="wpc--darkluplite-element darkluplite--text">Request </em>object</h5>
<p class="wpc--darkluplite-element darkluplite--text">The Request Object is essential in a POST method. It contains a JSON body from the client, which the server uses to retrieve, create, or update resources.</p>
<p>&nbsp;</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/family-expanded.jpg" alt="" width="750" height="311" /></p>
<p>&nbsp;</p>
<figure id="attachment_4210" aria-describedby="caption-attachment-4210" style="width: 350px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-4210" src="https://wizzdi.com/wp-content/uploads/2024/04/set-the-request-body.jpg" alt="" width="350" height="430" srcset="https://wizzdi.com/wp-content/uploads/2024/04/set-the-request-body.jpg 353w, https://wizzdi.com/wp-content/uploads/2024/04/set-the-request-body-244x300.jpg 244w" sizes="(max-width: 350px) 100vw, 350px" /><figcaption id="caption-attachment-4210" class="wp-caption-text">Set the request body</figcaption></figure>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/request.jpg" alt="" width="350" height="145" /></p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Create a new object called <em class="wpc--darkluplite-element darkluplite--text">FamilyCreate.  <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/createFamily-request.jpg" sizes="(max-width: 298px) 100vw, 298px" alt="" width="350" height="145" /></em></li>
</ul>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"> Open the new object <strong class="wpc--darkluplite-element darkluplite--text">members </strong>editing by clicking on the two small arrows, first #1, then # 2 <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/expand-request-object-for-editing.jpg" sizes="(max-width: 253px) 100vw, 253px" alt="" width="350" height="145" /></li>
<li class="wpc--darkluplite-element darkluplite--text">Proceed by clicking on the ‘+’ sign to add a member.</li>
<li class="wpc--darkluplite-element darkluplite--text">Select <em class="wpc--darkluplite-element darkluplite--text">Object </em>here -&gt; <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/object.jpg" sizes="(max-width: 188px) 100vw, 188px" alt="" width="350" height="145" /></li>
<li class="wpc--darkluplite-element darkluplite--text">In  the Object Creation dialog, Select the <em class="wpc--darkluplite-element darkluplite--text">name -&gt; Person <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/person-1.jpg" sizes="(max-width: 300px) 100vw, 300px" alt="" width="350" height="145" /></em></li>
<li class="wpc--darkluplite-element darkluplite--text">The default name for the created <em class="wpc--darkluplite-element darkluplite--text">Person</em> object is &#8216;<em class="wpc--darkluplite-element darkluplite--text">person&#8217;; let’s</em> use the ‘pencil’ icon to change it to <em class="wpc--darkluplite-element darkluplite--text">Parent1 </em>as below:</li>
<li><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/editing-person.jpg" alt="" width="750" height="311" /></li>
<li class="wpc--darkluplite-element darkluplite--text">Let’s expand <em class="wpc--darkluplite-element darkluplite--text">person1 </em>using the small arrow to the left of its name and click on the ‘+’ sign to add two properties. A name and a birth date.</li>
<li><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/full-Person.jpg" alt="" width="750" height="311" /></li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>Adding these properties to the <em class="wpc--darkluplite-element darkluplite--text">parent1 </em> field in the request object <strong class="wpc--darkluplite-element darkluplite--text">changes</strong> the object <em class="wpc--darkluplite-element darkluplite--text">Person. </em>Other uses of the <em class="wpc--darkluplite-element darkluplite--text">Person </em>object are immediately affected.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Let’s add a new parent2 field. At this time, the <em class="wpc--darkluplite-element darkluplite--text">Person </em>object is defined, and we will create a <strong class="wpc--darkluplite-element darkluplite--text">Property </strong>of the type <strong class="wpc--darkluplite-element darkluplite--text">Person.</strong></li>
<li class="wpc--darkluplite-element darkluplite--text">Click on the ‘+’ sign at the highest level of the <em class="wpc--darkluplite-element darkluplite--text">Request </em>object and select <em class="wpc--darkluplite-element darkluplite--text">Property.  <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/arent2-1.jpg" alt="" width="350" height="145" /></em></li>
</ul>
<p class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Note: </strong>Please be cautious when selecting which ‘+’ sign you click on. In the image above, the upper ‘+’ adds fields to <em class="wpc--darkluplite-element darkluplite--text">parent1,</em> whereas the lower ‘+’ adds fields to the <em class="wpc--darkluplite-element darkluplite--text">request </em>object.</p>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Add the <em class="wpc--darkluplite-element darkluplite--text">name</em> parent2, then start typing &#8216;Perso&#8217; in the Type field. When the previously defined Type becomes available, select it.</li>
<li class="wpc--darkluplite-element darkluplite--text">Click on ‘Create Property’ to dismiss the dialog. <img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/create-parent2-1.jpg" alt="" width="350" height="145" /></li>
<li class="wpc--darkluplite-element darkluplite--text">Once both parents are added, you should see:</li>
<li><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/final-family.jpg" alt="" width="750" height="311" /></li>
<li></li>
<li class="wpc--darkluplite-element darkluplite--text">Let’s add a List of children to the FamilyCreate object:</li>
<li><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/create-parent2-1.jpg" alt="" width="350" height="145" /></li>
<li class="wpc--darkluplite-element"></li>
<li class="wpc--darkluplite-element darkluplite--text">We have added a familyName to the request object. The final object is below:</li>
<li><img loading="lazy" decoding="async" class="aligncenter wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/final-family.jpg" alt="" width="750" height="311" /></li>
</ul><p>The post <a href="https://wizzdi.com/docs/documentation/exposed-api/">Exposed API</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/exposed-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dependencies</title>
		<link>https://wizzdi.com/docs/documentation/dependencies/</link>
					<comments>https://wizzdi.com/docs/documentation/dependencies/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 18:26:00 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1720</guid>

					<description><![CDATA[<p>Introduction: Dependency management within Wizzdi Cloud ensures your application integrates seamlessly with other projects and artifacts. This facility allows for the incorporating and reusing of external resources, streamlining development by building upon existing components. Let’s explore this in more detail. Adding Dependencies: Workspace Dependencies: You can incorporate components from other projects within your current workspace. [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/dependencies/">Dependencies</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h3><strong>Introduction</strong>:</h3>
<p>Dependency management within Wizzdi Cloud ensures your application integrates seamlessly with other projects and artifacts. This facility allows for the incorporating and reusing of external resources, streamlining development by building upon existing components. Let’s explore this in more detail.</p>
<h4><strong>Adding Dependencies</strong>:</h4>
<ul>
<li><strong>Workspace Dependencies</strong>: You can incorporate components from other projects within your current workspace. This is especially helpful if you have multiple interrelated projects and want to leverage functionalities or data structures from one project in another.</li>
<li><strong>My Market Place Integration</strong>: Beyond your workspace, “My Market Place” is a repository to import external projects and artifacts. Once imported, these become available across all your workspaces, making integrating and reusing established components in various apps easy.</li>
</ul>
<h4><strong>Referencing and Utilization</strong>:</h4>
<ul>
<li><strong>Domain Model Integration</strong>: You can refer to or integrate entities from other domain models with the defined dependencies. This facilitates a modular approach, where specific domain components can be standardized and reused across multiple projects.</li>
<li><strong>Custom Queries and APIs</strong>: Dependencies aren’t limited to domain models. You can also reference and utilize custom queries and APIs from other projects, ensuring you don’t reinvent the wheel and maintain consistency in data access and manipulation.</li>
<li><strong>Business Flow Interactions</strong>: Business flows, which define your applications’ logic and operational flow, can also integrate functionalities from dependencies. This is particularly beneficial when standard operational patterns are established and must be replicated across applications.</li>
</ul>
<hr />
<p>Wizzdi Cloud’s dependency management is a modular and integrated application development cornerstone. Userd can ensure consistent, efficient, and integrated application functionalities across projects by defining and managing dependencies effectively.</p>
<h3>Reusability</h3>
<hr />
<p>In Wizzdi Cloud’s no-code platform, modularity and reusability are core principles. This allows users to efficiently construct applications by leveraging components from multiple projects. Here’s how it works:</p>
<ol>
<li><strong>Project References</strong>: Within a user’s workspace, it’s possible to reference other projects directly from the current project or application. This is achieved through the “dependencies” menu option.</li>
<li><strong>Workspace Reference: </strong>You can reference project components from other workspaces you can access. Workspace owners can invite other users to use their projects; access can be read-only, so invitees are blocked from changing them.</li>
<li><strong>Marketplace Workspaces: </strong>Wizzdi Marketplace workspaces are available for users of Wizzdi Cloud. The ever-growing repository of solutions can be the starting point for a new project or form most of it. Marketplace apps can either be imported to one of your workspaces, or their elements can be referenced directly from the marketplace. These elements can be</li>
<li><strong>Code access: </strong> Including dependencies in your code is possible from private and public repositories, such as Maven Central. This allows your business logic (flows) to access the methods and public classes defined in the referenced code. But, it is essential to have a basic understanding of Java code and the services that the referenced code offers.</li>
</ol>
<h4>External Entities Integration</h4>
<p>This section will provide a concrete example of how to reuse one app within another.</p>
<p><strong>The External App</strong></p>
<p>Here is the domain model for an app called <em><strong>Organization</strong></em>. It describes the organization’s structure, including its employees, branches, and addresses.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/organization-diagram-1024x602-2.jpg" alt="" width="1024" height="602" /></p>
<figure id="attachment_2717" aria-describedby="caption-attachment-2717"><figcaption id="caption-attachment-2717">Organization App Domain Model<br />
<img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/address-model-2048x1065-2.jpg" alt="" width="2048" height="1065" /></figcaption></figure>
<figure id="attachment_2723" aria-describedby="caption-attachment-2723"><figcaption id="caption-attachment-2723">The Address Model can be defined in yet another external project</figcaption></figure>
<p>Here, we have added the Address model to the Organization App.</p>
<p><strong>The dependent App</strong></p>
<p>Here is a very simplified domain model for an e-commerce app seller entity where the Organization entity is set to be the <em>Super Entity</em> of a Seller.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/ecommerce-domain.jpg" alt="" width="1776" height="1422" /></p>
<p><strong>Step By Step</strong></p>
<p><strong>Access the dependencies option from the left-side menu.</strong></p>
<p>After clicking, you may encounter a view similar to this:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/dependencies-2048x1033-2.jpg" alt="" width="759" height="383" /></p>
<p>Click on ‘+ Add Dependency’ to add one,</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/add-dependency-1.jpg" alt="" width="545" height="591" /></p>
<p>Click on <em>‘Search Projects’  </em> and start typing or<em>ganization; once</em> the <em>Organization-model </em>becomes visible, select it to make it accessible to your project. Once selected, all of the elements in this App are available to the dependent App. The external API the App exposes combines the Referenced App Apis and the Apis from the dependent App.</p>
<p><strong>Using entities from an external App</strong></p>
<p>Right-click on a space in the diagram and select <em>Import-&gt;Entity-&gt;External  </em><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/external-entities-1024x489-1.jpg" sizes="(max-width: 300px) 100vw, 300px" alt="" width="300" height="143" /></p>
<p>Then, please search for the desired entity and add it to the diagram <img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/05/external-entities-1-1024x860-1.jpg" sizes="(max-width: 300px) 100vw, 300px" alt="" width="300" height="252" /></p>
<p>Once visible on the diagram, it can be used in two distinctive strategies: <strong>Inheritance </strong>and <strong>composition.</strong></p>
<p><strong>Inheritance</strong></p>
<p>Select the circle above the Seller entity, drag it to the Organization entity, and then release it on its header.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/composition-2048x1051-1.jpg" alt="" width="608" height="312" /></p>
<p>Once released, the <em>Seller </em>entity includes the inherited fields from the <em>Organization</em> entity.</p>
<p>Two additional fields (not inherited) were added to the <em>Seller </em>entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/external-entities-3-2.jpg" alt="" width="665" height="346" /></p>
<p><strong>Composition</strong></p>
<p>Here, the Organization entity’s ID circle is dragged onto the Seller name, creating a one-to-many association where the Seller is the <em>many-</em> <em>side</em>.</p>
<p>The composition approach offers several benefits. Firstly, it ensures that unnecessary fields from the Organization are not incorporated into the Seller. This means that the Seller remains streamlined, containing only relevant data. Moreover, the composition method allows the Seller entity to encompass many external entities as fields. This adaptability allows for a more tailored and modular structure, accommodating a wide range of relationships and data sources without compromising the integrity or clarity of the Seller entity.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2394" src="https://wizzdi.com/wp-content/uploads/2024/04/composition-2048x1051-2.jpg" alt="" width="639" height="328" /></p><p>The post <a href="https://wizzdi.com/docs/documentation/dependencies/">Dependencies</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/dependencies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Components</title>
		<link>https://wizzdi.com/docs/documentation/components/</link>
					<comments>https://wizzdi.com/docs/documentation/components/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Apr 2024 18:27:50 +0000</pubDate>
				<guid isPermaLink="false">https://wizzdi.com/?post_type=docs&#038;p=1722</guid>

					<description><![CDATA[<p>Introduction: Imported Apps Components are used in Wizzdi Cloud when a different App is imported into the current App. Apps can be imported from Wizzdi MarketPlace, your MarketPlaces, and your workspaces. When an App is imported, it appears as a component in your app. Thus, you can always view its structure using the Wizzdi Cloud [&#8230;]</p>
<p>The post <a href="https://wizzdi.com/docs/documentation/components/">Components</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Introduction</strong>:</h2>
<h3><strong>Imported Apps</strong></h3>
<p>Components are used in Wizzdi Cloud when a different App is imported into the current App.</p>
<p>Apps can be imported from Wizzdi MarketPlace, your MarketPlaces, and your workspaces.</p>
<p>When an App is imported, it appears as a component in your app. Thus, you can always view its structure using the Wizzdi Cloud user interface.</p>
<h3>Flexicore Run Times</h3>
<p class="wpc--darkluplite-element darkluplite--text">In Wizzdi Cloud, when initiating a new application, users have a choice between two runtime environments: Spring Boot, a well-known framework, and its extension, FlexiCore Boot. FlexiCore boot has all the features of Spring, a Spring Boot with additional features.<br class="wpc--darkluplite-element" />
</p>
<h4 class="wpc--darkluplite-element darkluplite--text"><b>Features</b></h4>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Access Control</strong>:  Multi-tenancy, refined data, and API access control are often needed. FlexiCore Boot offers tools to address these requirements effectively.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Modularity in Action</strong>: Rather than confining feature modifications to the development stage, FlexiCore Boot supports real-time component integration or removal. It accomplishes this by treating these components as active plugins. This dynamic nature has several benefits:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Integration</strong>: Enables the smooth addition or removal of components without a complete system reset.</li>
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Adaptability</strong>: As application requirements shift or grow, it’s possible to introduce new functions seamlessly.</li>
</ul>
</li>
</ul>
<h4 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Component Types</strong></h4>
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Model Component</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Purpose</strong>: To define the domain model of the application.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Features</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Structures essential data entities and their interrelationships.</li>
<li class="wpc--darkluplite-element darkluplite--text">Dictates how data will be organized, preserved, and accessed.</li>
<li class="wpc--darkluplite-element darkluplite--text">Serves as the foundational framework for services, APIs, and business logic.</li>
</ul>
</li>
</ul>
</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Service Component</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Purpose</strong>: Handles nearly all functions outside of the domain model.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Features</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Manages both exposed and consumed APIs.</li>
<li class="wpc--darkluplite-element darkluplite--text">Supports custom queries and business flows, shaping the application’s interactions with its data and other systems.</li>
</ul>
</li>
</ul>
</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Module Component</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Purpose</strong>: Generates a usable module for integration into the FlexiCore Boot runtime.</li>
<li class="wpc--darkluplite-element"><strong class="wpc--darkluplite-element darkluplite--text">Features</strong>:
<ul class="wpc--darkluplite-element">
<li class="wpc--darkluplite-element darkluplite--text">Modular design for easy runtime integration.</li>
<li class="wpc--darkluplite-element darkluplite--text">Supports specific functionalities or features for modular addition or subtraction.</li>
<li class="wpc--darkluplite-element darkluplite--text">Facilitates scalability by allowing for the addition of new modules as needs change.</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 class="wpc--darkluplite-element darkluplite--text"><strong class="wpc--darkluplite-element darkluplite--text">Considerations</strong></h4>
<p class="wpc--darkluplite-element darkluplite--text">While FlexiCore Boot offers dynamic modularity and refined access control, it does come with a consideration. Applications developed using FlexiCore Boot become dependent on the FlexiCore framework. This dependency contrasts with the more universally applicable Spring Boot framework. To ensure flexibility and to cater to varied requirements, Wizzdi Cloud provides support for both runtime environments, allowing users to choose the one that aligns best with their needs and plans.</p>
<p class="wpc--darkluplite-element darkluplite--text">FlexiCore Boot and Felxicore are open-source and available on GitHub. Binary artifacts are available on Maven Central.</p><p>The post <a href="https://wizzdi.com/docs/documentation/components/">Components</a> first appeared on <a href="https://wizzdi.com">wizzdi</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://wizzdi.com/docs/documentation/components/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
