diff --git a/README.md b/README.md
index 54e8ff0734..3d2b53feea 100644
--- a/README.md
+++ b/README.md
@@ -67,3 +67,13 @@ As a general approach, licensing is as follows this pattern:
- documentation is Apache 2.0 or CC0-1.0
Nym Node Operators and Validators Terms and Conditions can be found [here](https://nym.com/operators-validators-terms).
+
+## Getting Started
+
+```bash
+yarn install
+```
+
+```bash
+yarn build
+```
diff --git a/explorer-v2/.eslintrc.json b/explorer-v2/.eslintrc.json
new file mode 100644
index 0000000000..3722418549
--- /dev/null
+++ b/explorer-v2/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": ["next/core-web-vitals", "next/typescript"]
+}
diff --git a/explorer-v2/.gitignore b/explorer-v2/.gitignore
new file mode 100644
index 0000000000..d32cc78b89
--- /dev/null
+++ b/explorer-v2/.gitignore
@@ -0,0 +1,40 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/explorer-v2/README.md b/explorer-v2/README.md
new file mode 100644
index 0000000000..e215bc4ccf
--- /dev/null
+++ b/explorer-v2/README.md
@@ -0,0 +1,36 @@
+This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+# or
+pnpm dev
+# or
+bun dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+
+This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/explorer-v2/biome.json b/explorer-v2/biome.json
new file mode 100644
index 0000000000..509af0d9bd
--- /dev/null
+++ b/explorer-v2/biome.json
@@ -0,0 +1,33 @@
+{
+ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
+ "vcs": {
+ "enabled": false,
+ "clientKind": "git",
+ "useIgnoreFile": false
+ },
+ "files": {
+ "ignoreUnknown": false,
+ "ignore": ["node_modules", ".next", "public"]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "space"
+ },
+ "organizeImports": {
+ "enabled": true
+ },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true,
+ "suspicious": {
+ "noExplicitAny": "warn"
+ }
+ }
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "double"
+ }
+ }
+}
diff --git a/explorer-v2/next.config.ts b/explorer-v2/next.config.ts
new file mode 100644
index 0000000000..9c0e03fea6
--- /dev/null
+++ b/explorer-v2/next.config.ts
@@ -0,0 +1,23 @@
+import type { NextConfig } from "next";
+
+const nextConfig: NextConfig = {
+ reactStrictMode: true,
+
+ basePath: "/explorer",
+ assetPrefix: "/explorer",
+ trailingSlash: false,
+
+ async redirects() {
+ return [
+ // Change the basePath to /explorer
+ {
+ source: "/",
+ destination: "/explorer",
+ basePath: false,
+ permanent: true,
+ },
+ ]
+ }
+};
+
+export default nextConfig;
diff --git a/explorer-v2/package.json b/explorer-v2/package.json
new file mode 100644
index 0000000000..9ec1f64cd8
--- /dev/null
+++ b/explorer-v2/package.json
@@ -0,0 +1,64 @@
+{
+ "name": "@nymproject/explorer-v2",
+ "version": "0.1.0",
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "build:prod": "yarn --cwd .. build && next build",
+ "start": "next start",
+ "lint": "biome check --fix"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "dependencies": {
+ "@chain-registry/types": "^0.50.36",
+ "@cosmos-kit/keplr-extension": "^2.14.0",
+ "@cosmos-kit/react": "^2.20.1",
+ "@emotion/cache": "^11.13.5",
+ "@emotion/react": "^11.13.5",
+ "@emotion/styled": "^11.13.5",
+ "@interchain-ui/react": "^1.26.1",
+ "@mui/icons-material": "^5.16.11",
+ "@mui/material": "^6.1.10",
+ "@mui/material-nextjs": "^6.1.9",
+ "@mui/x-date-pickers": "^7.23.2",
+ "@nivo/line": "^0.88.0",
+ "@nymproject/contract-clients": "^1.4.1",
+ "@nymproject/react": "1.0.0",
+ "@tanstack/react-query": "^5.64.2",
+ "@tanstack/react-query-devtools": "^5.64.2",
+ "@tanstack/react-query-next-experimental": "^5.66.0",
+ "@tanstack/react-table": "^8.20.6",
+ "@types/qs": "^6.9.18",
+ "@uidotdev/usehooks": "^2.4.1",
+ "chain-registry": "^1.69.64",
+ "cldr-compact-number": "^0.4.0",
+ "date-fns": "^4.1.0",
+ "i18next": "^24.2.2",
+ "i18next-resources-to-backend": "^1.2.1",
+ "isomorphic-dompurify": "^2.21.0",
+ "material-react-table": "^3.0.3",
+ "next": "^15.2.0",
+ "openapi-fetch": "^0.13.4",
+ "qrcode.react": "^4.1.0",
+ "qs": "^6.14.0",
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0",
+ "react-i18next": "^15.4.0",
+ "react-markdown": "^9.0.3",
+ "react-random-avatars": "^1.3.1",
+ "react-world-flags": "^1.6.0",
+ "zod": "^3.24.1"
+ },
+ "devDependencies": {
+ "@biomejs/biome": "1.9.4",
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "eslint": "^8",
+ "eslint-config-next": "15.0.3",
+ "lefthook": "^1.8.5",
+ "typescript": "^5"
+ }
+}
diff --git a/explorer-v2/public/file.svg b/explorer-v2/public/file.svg
new file mode 100644
index 0000000000..004145cddf
--- /dev/null
+++ b/explorer-v2/public/file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/globe.svg b/explorer-v2/public/globe.svg
new file mode 100644
index 0000000000..567f17b0d7
--- /dev/null
+++ b/explorer-v2/public/globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/icons/arrow-up-right.svg b/explorer-v2/public/icons/arrow-up-right.svg
new file mode 100644
index 0000000000..85c8811910
--- /dev/null
+++ b/explorer-v2/public/icons/arrow-up-right.svg
@@ -0,0 +1,61 @@
+
diff --git a/explorer-v2/public/icons/arrow.svg b/explorer-v2/public/icons/arrow.svg
new file mode 100644
index 0000000000..3e5d0f6f14
--- /dev/null
+++ b/explorer-v2/public/icons/arrow.svg
@@ -0,0 +1,7 @@
+
diff --git a/explorer-v2/public/icons/buy-card.svg b/explorer-v2/public/icons/buy-card.svg
new file mode 100644
index 0000000000..b51ac05a31
--- /dev/null
+++ b/explorer-v2/public/icons/buy-card.svg
@@ -0,0 +1,31 @@
+
diff --git a/explorer-v2/public/icons/chevron.svg b/explorer-v2/public/icons/chevron.svg
new file mode 100644
index 0000000000..d6426509f1
--- /dev/null
+++ b/explorer-v2/public/icons/chevron.svg
@@ -0,0 +1,13 @@
+
diff --git a/explorer-v2/public/icons/chevronMenu.svg b/explorer-v2/public/icons/chevronMenu.svg
new file mode 100644
index 0000000000..640cce1853
--- /dev/null
+++ b/explorer-v2/public/icons/chevronMenu.svg
@@ -0,0 +1,14 @@
+
diff --git a/explorer-v2/public/icons/copy-file.svg b/explorer-v2/public/icons/copy-file.svg
new file mode 100644
index 0000000000..ff12690bfb
--- /dev/null
+++ b/explorer-v2/public/icons/copy-file.svg
@@ -0,0 +1,35 @@
+
diff --git a/explorer-v2/public/icons/cross.svg b/explorer-v2/public/icons/cross.svg
new file mode 100644
index 0000000000..72732bb0b5
--- /dev/null
+++ b/explorer-v2/public/icons/cross.svg
@@ -0,0 +1,135 @@
+
diff --git a/explorer-v2/public/icons/discord.svg b/explorer-v2/public/icons/discord.svg
new file mode 100644
index 0000000000..ed48b19966
--- /dev/null
+++ b/explorer-v2/public/icons/discord.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/document.svg b/explorer-v2/public/icons/document.svg
new file mode 100644
index 0000000000..ba6c3209a4
--- /dev/null
+++ b/explorer-v2/public/icons/document.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/icons/download.svg b/explorer-v2/public/icons/download.svg
new file mode 100644
index 0000000000..88b6b35201
--- /dev/null
+++ b/explorer-v2/public/icons/download.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/icons/elips.svg b/explorer-v2/public/icons/elips.svg
new file mode 100644
index 0000000000..7f95c1055a
--- /dev/null
+++ b/explorer-v2/public/icons/elips.svg
@@ -0,0 +1,22 @@
+
diff --git a/explorer-v2/public/icons/explorer-card.svg b/explorer-v2/public/icons/explorer-card.svg
new file mode 100644
index 0000000000..d146f4c382
--- /dev/null
+++ b/explorer-v2/public/icons/explorer-card.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/gateway.svg b/explorer-v2/public/icons/gateway.svg
new file mode 100644
index 0000000000..50673da861
--- /dev/null
+++ b/explorer-v2/public/icons/gateway.svg
@@ -0,0 +1,79 @@
+
diff --git a/explorer-v2/public/icons/github.svg b/explorer-v2/public/icons/github.svg
new file mode 100644
index 0000000000..583e772c18
--- /dev/null
+++ b/explorer-v2/public/icons/github.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/nym-logo.svg b/explorer-v2/public/icons/nym-logo.svg
new file mode 100644
index 0000000000..d6c718150a
--- /dev/null
+++ b/explorer-v2/public/icons/nym-logo.svg
@@ -0,0 +1,14 @@
+
diff --git a/explorer-v2/public/icons/operate-card.svg b/explorer-v2/public/icons/operate-card.svg
new file mode 100644
index 0000000000..ccce4549ae
--- /dev/null
+++ b/explorer-v2/public/icons/operate-card.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/stake-card.svg b/explorer-v2/public/icons/stake-card.svg
new file mode 100644
index 0000000000..2b7c24e2a4
--- /dev/null
+++ b/explorer-v2/public/icons/stake-card.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/telegram.svg b/explorer-v2/public/icons/telegram.svg
new file mode 100644
index 0000000000..ab1bd1e5fd
--- /dev/null
+++ b/explorer-v2/public/icons/telegram.svg
@@ -0,0 +1,3 @@
+
diff --git a/explorer-v2/public/icons/token.svg b/explorer-v2/public/icons/token.svg
new file mode 100644
index 0000000000..6b56daa618
--- /dev/null
+++ b/explorer-v2/public/icons/token.svg
@@ -0,0 +1,23 @@
+
diff --git a/explorer-v2/public/icons/twitter.svg b/explorer-v2/public/icons/twitter.svg
new file mode 100644
index 0000000000..2fa76f9dd9
--- /dev/null
+++ b/explorer-v2/public/icons/twitter.svg
@@ -0,0 +1,4 @@
+
diff --git a/explorer-v2/public/icons/youtube.svg b/explorer-v2/public/icons/youtube.svg
new file mode 100644
index 0000000000..3899653f45
--- /dev/null
+++ b/explorer-v2/public/icons/youtube.svg
@@ -0,0 +1,5 @@
+
diff --git a/explorer-v2/public/icons/youtubeInverted.svg b/explorer-v2/public/icons/youtubeInverted.svg
new file mode 100644
index 0000000000..d89e357463
--- /dev/null
+++ b/explorer-v2/public/icons/youtubeInverted.svg
@@ -0,0 +1,4 @@
+
diff --git a/explorer-v2/public/images/Network.webp b/explorer-v2/public/images/Network.webp
new file mode 100644
index 0000000000..f8eec41111
Binary files /dev/null and b/explorer-v2/public/images/Network.webp differ
diff --git a/explorer-v2/public/images/buy-article.webp b/explorer-v2/public/images/buy-article.webp
new file mode 100644
index 0000000000..7d59ca36ac
Binary files /dev/null and b/explorer-v2/public/images/buy-article.webp differ
diff --git a/explorer-v2/public/images/placeholder.webp b/explorer-v2/public/images/placeholder.webp
new file mode 100644
index 0000000000..2c5e4325ee
Binary files /dev/null and b/explorer-v2/public/images/placeholder.webp differ
diff --git a/explorer-v2/public/images/stake-article.webp b/explorer-v2/public/images/stake-article.webp
new file mode 100644
index 0000000000..7ea416c3ec
Binary files /dev/null and b/explorer-v2/public/images/stake-article.webp differ
diff --git a/explorer-v2/public/next.svg b/explorer-v2/public/next.svg
new file mode 100644
index 0000000000..5174b28c56
--- /dev/null
+++ b/explorer-v2/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/profileImagePlaceholder.png b/explorer-v2/public/profileImagePlaceholder.png
new file mode 100644
index 0000000000..bbeef84ed0
Binary files /dev/null and b/explorer-v2/public/profileImagePlaceholder.png differ
diff --git a/explorer-v2/public/vercel.svg b/explorer-v2/public/vercel.svg
new file mode 100644
index 0000000000..7705396033
--- /dev/null
+++ b/explorer-v2/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/explorer-v2/public/window.svg b/explorer-v2/public/window.svg
new file mode 100644
index 0000000000..b2b2a44f6e
--- /dev/null
+++ b/explorer-v2/public/window.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/explorer-v2/src/app/(pages)/account/[address]/not-found/page.tsx b/explorer-v2/src/app/(pages)/account/[address]/not-found/page.tsx
new file mode 100644
index 0000000000..2cbac6434d
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/account/[address]/not-found/page.tsx
@@ -0,0 +1,62 @@
+// import BlogArticlesCards from "@/components/blogs/BlogArticleCards";
+import { ContentLayout } from "@/components/contentLayout/ContentLayout";
+import SectionHeading from "@/components/headings/SectionHeading";
+import ExplorerButtonGroup from "@/components/toggleButton/ToggleButton";
+import { Box, Typography } from "@mui/material";
+import Grid from "@mui/material/Grid2";
+import Markdown from "react-markdown";
+
+export default async function Account({
+ params,
+}: {
+ params: Promise<{ address: string }>;
+}) {
+ try {
+ const address = (await params).address;
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ This account does’t have a Nym node bonded. Is this your account?
+ Start [setting up your node](https://nym.com/docs) today!
+
+
+ {/*
+
+
+
+
+ */}
+
+ );
+ } catch (error) {
+ let errorMessage = "An error occurred";
+ if (error instanceof Error) {
+ errorMessage = error.message;
+ }
+ throw new Error(errorMessage);
+ }
+}
diff --git a/explorer-v2/src/app/(pages)/account/[address]/page.tsx b/explorer-v2/src/app/(pages)/account/[address]/page.tsx
new file mode 100644
index 0000000000..d426de30bf
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/account/[address]/page.tsx
@@ -0,0 +1,67 @@
+import { fetchNodes } from "@/app/api";
+import type { NodeData } from "@/app/api/types";
+import { Box, Typography } from "@mui/material";
+import Grid from "@mui/material/Grid2";
+import { AccountBalancesCard } from "../../../../components/accountPageComponents/AccountBalancesCard";
+import { AccountInfoCard } from "../../../../components/accountPageComponents/AccountInfoCard";
+import { ContentLayout } from "../../../../components/contentLayout/ContentLayout";
+import SectionHeading from "../../../../components/headings/SectionHeading";
+import ExplorerButtonGroup from "../../../../components/toggleButton/ToggleButton";
+
+export default async function Account({
+ params,
+}: {
+ params: Promise<{ address: string }>;
+}) {
+ try {
+ const address = (await params).address;
+
+ const nymNodes: NodeData[] = await fetchNodes();
+
+ const nymNode = nymNodes.find(
+ (node) => node.bond_information.owner === address,
+ );
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ } catch (error) {
+ console.error("error :>> ", error);
+ return Error loading account data;
+ }
+}
diff --git a/explorer-v2/src/app/(pages)/nym-node/[id]/page.tsx b/explorer-v2/src/app/(pages)/nym-node/[id]/page.tsx
new file mode 100644
index 0000000000..84daa3c76c
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/nym-node/[id]/page.tsx
@@ -0,0 +1,128 @@
+import { fetchNodeIdByIdentityKey, fetchNodeInfo } from "@/app/api";
+import { ContentLayout } from "@/components/contentLayout/ContentLayout";
+import SectionHeading from "@/components/headings/SectionHeading";
+import { BasicInfoCard } from "@/components/nymNodePageComponents/BasicInfoCard";
+import { NodeDataCard } from "@/components/nymNodePageComponents/NodeDataCard";
+// import { NodeChatCard } from "@/components/nymNodePageComponents/ChatCard";
+import NodeDelegationsCard from "@/components/nymNodePageComponents/NodeDelegationsCard";
+import { NodeParametersCard } from "@/components/nymNodePageComponents/NodeParametersCard";
+import { NodeProfileCard } from "@/components/nymNodePageComponents/NodeProfileCard";
+import { NodeRoleCard } from "@/components/nymNodePageComponents/NodeRoleCard";
+import ExplorerButtonGroup from "@/components/toggleButton/ToggleButton";
+import { Box } from "@mui/material";
+import Grid from "@mui/material/Grid2";
+
+export default async function NymNode({
+ params,
+}: {
+ params: Promise<{ id: string }>; // node_id or identity_key
+}) {
+ try {
+ let id: string | number;
+ const paramsId = (await params).id;
+
+ // check if the params id is a node_id or identity_key
+
+ if (paramsId.length > 10) {
+ id = await fetchNodeIdByIdentityKey(paramsId);
+ } else {
+ id = Number(paramsId);
+ }
+
+ const observatoryNymNode = await fetchNodeInfo(id);
+
+ if (!observatoryNymNode) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+ {observatoryNymNode.bonding_address && (
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/*
+
+
+ */}
+
+
+ );
+ } catch (error) {
+ let errorMessage = "An error occurred";
+ if (error instanceof Error) {
+ errorMessage = error.message;
+ }
+ throw new Error(errorMessage);
+ }
+}
diff --git a/explorer-v2/src/app/(pages)/onboarding/[slug]/page.tsx b/explorer-v2/src/app/(pages)/onboarding/[slug]/page.tsx
new file mode 100644
index 0000000000..07eed3224c
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/onboarding/[slug]/page.tsx
@@ -0,0 +1,155 @@
+import TableOfContents from "@/components/blogs/TableOfContents";
+import type BlogArticle from "@/components/blogs/types";
+import { Breadcrumbs } from "@/components/breadcrumbs/Breadcrumbs";
+import { ContentLayout } from "@/components/contentLayout/ContentLayout";
+import SectionHeading from "@/components/headings/SectionHeading";
+import { Link } from "@/components/muiLink";
+import { Wrapper } from "@/components/wrapper";
+import { Box, Stack, Typography } from "@mui/material";
+import Grid from "@mui/material/Grid2";
+import { format } from "date-fns";
+import Image from "next/image";
+import Markdown from "react-markdown";
+
+export default async function BlogPage({
+ params,
+}: {
+ params: Promise<{ slug: string }>;
+}) {
+ const { slug } = await params;
+
+ try {
+ const blogArticle: BlogArticle = await import(`@/data/${slug}.json`);
+
+ const breadcrumbItems = [
+ {
+ label: "Onboarding",
+ href: "/onboarding",
+ },
+ { label: blogArticle.title, isCurrentPage: true },
+ ];
+ return (
+
+
+
+
+
+
+
+
+
+
+ Author
+ {(blogArticle?.attributes?.blogAuthors?.length ?? 0) > 1
+ ? "s"
+ : ""}
+ :{" "}
+ {blogArticle?.attributes?.blogAuthors?.map(
+ (author: string) => (
+
+ {author}
+
+ )
+ )}
+
+
+
+
+ {blogArticle.attributes.readingTime}{" "}
+ {blogArticle.attributes.readingTime > 1 ? "mins" : "min"}{" "}
+ read
+
+
+
+
+ {blogArticle.overview.content.map(({ text }) => (
+
+
+
+ {text}
+
+
+
+ ))}
+
+ {blogArticle.sections.map((section) => (
+
+
+ {section.text.map(({ text }) => (
+
+
+
+ {text}
+
+
+
+ ))}
+
+ ))}
+
+
+
+ ({
+ heading: section.heading,
+ id: section.id,
+ }))}
+ />
+
+
+
+
+ );
+ } catch (error) {
+ console.log(error);
+
+ return (
+
+
+
+
+ Oops! Looks like the page you’re looking for got mixed up in the
+ noise. Don’t worry, your privacy is intact. Let’s get you
+ back to the homepage.
+
+
+
+ );
+ }
+}
diff --git a/explorer-v2/src/app/(pages)/onboarding/page.tsx b/explorer-v2/src/app/(pages)/onboarding/page.tsx
new file mode 100644
index 0000000000..9808a075b0
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/onboarding/page.tsx
@@ -0,0 +1,15 @@
+import BlogArticlesCards from "@/components/blogs/BlogArticleCards";
+import { ContentLayout } from "@/components/contentLayout/ContentLayout";
+import SectionHeading from "@/components/headings/SectionHeading";
+import Grid from "@mui/material/Grid2";
+
+export default function OnboardingPage() {
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/explorer-v2/src/app/(pages)/stake/page.tsx b/explorer-v2/src/app/(pages)/stake/page.tsx
new file mode 100644
index 0000000000..0ce0d012ed
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/stake/page.tsx
@@ -0,0 +1,24 @@
+// import BlogArticlesCards from "@/components/blogs/BlogArticleCards";
+// import Grid from "@mui/material/Grid2";
+import { ContentLayout } from "../../../components/contentLayout/ContentLayout";
+import SectionHeading from "../../../components/headings/SectionHeading";
+import OverviewCards from "../../../components/staking/OverviewCards";
+import StakeTableWithAction from "../../../components/staking/StakeTableWithAction";
+import SubHeaderRow from "../../../components/staking/SubHeaderRow";
+
+export default async function StakingPage() {
+ return (
+
+
+
+
+
+ {/*
+
+
+
+
+ */}
+
+ );
+}
diff --git a/explorer-v2/src/app/(pages)/table/page.tsx b/explorer-v2/src/app/(pages)/table/page.tsx
new file mode 100644
index 0000000000..7e6fb4b62d
--- /dev/null
+++ b/explorer-v2/src/app/(pages)/table/page.tsx
@@ -0,0 +1,30 @@
+// import BlogArticlesCards from "@/components/blogs/BlogArticleCards";
+import { ContentLayout } from "@/components/contentLayout/ContentLayout";
+import SectionHeading from "@/components/headings/SectionHeading";
+import NodeTableWithAction from "@/components/nodeTable/NodeTableWithAction";
+import NodeAndAddressSearch from "@/components/search/NodeAndAddressSearch";
+import { Wrapper } from "@/components/wrapper";
+import { Box, Stack } from "@mui/material";
+// import Grid from "@mui/material/Grid2";
+
+export default function ExplorerPage() {
+ return (
+
+
+
+
+
+
+
+
+
+ {/*
+
+
+
+
+ */}
+
+
+ );
+}
diff --git a/explorer-v2/src/app/api/index.tsx b/explorer-v2/src/app/api/index.tsx
new file mode 100644
index 0000000000..a89b17bc49
--- /dev/null
+++ b/explorer-v2/src/app/api/index.tsx
@@ -0,0 +1,271 @@
+import { addSeconds } from "date-fns";
+/* eslint-disable @typescript-eslint/no-explicit-any */
+import type {
+ CurrentEpochData,
+ ExplorerData,
+ GatewayStatus,
+ IAccountBalancesInfo,
+ IObservatoryNode,
+ IPacketsAndStakingData,
+ NodeData,
+ NodeRewardDetails,
+ NymTokenomics,
+ ObservatoryBalance,
+} from "./types";
+import {
+ CURRENT_EPOCH,
+ CURRENT_EPOCH_REWARDS,
+ DATA_OBSERVATORY_BALANCES_URL,
+ DATA_OBSERVATORY_NODES_DELEGATIONS_URL,
+ DATA_OBSERVATORY_NODES_URL,
+ NS_API_MIXNODES_STATS,
+ NYM_ACCOUNT_ADDRESS,
+ NYM_NODES,
+ NYM_PRICES_API,
+ OBSERVATORY_GATEWAYS_URL,
+} from "./urls";
+
+// Fetch function for epoch rewards
+export const fetchEpochRewards = async (): Promise<
+ ExplorerData["currentEpochRewardsData"]
+> => {
+ const response = await fetch(CURRENT_EPOCH_REWARDS, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ cache: "no-store", // Ensures fresh data on every request
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch epoch rewards");
+ }
+
+ return response.json();
+};
+
+// Fetch gateway status based on identity key
+export const fetchGatewayStatus = async (
+ identityKey: string,
+): Promise => {
+ const response = await fetch(`${OBSERVATORY_GATEWAYS_URL}/${identityKey}`);
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch gateway status");
+ }
+
+ return response.json();
+};
+
+export const fetchNodeInfo = async (
+ id: number,
+): Promise => {
+ const nodes = await fetchObservatoryNodes();
+ return nodes?.find((node) => node.node_id === id);
+};
+
+export const fetchNodeIdByIdentityKey = async (
+ identity_key: string,
+): Promise => {
+ const nodes = await fetchObservatoryNodes();
+ const node = nodes?.find((node) => node.identity_key === identity_key);
+ return node?.node_id || 0;
+};
+
+export const fetchNodeDelegations = async (
+ id: number,
+): Promise => {
+ const response = await fetch(
+ `${DATA_OBSERVATORY_NODES_DELEGATIONS_URL}/${id}/delegations`,
+ {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ },
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch delegations");
+ }
+
+ return response.json();
+};
+
+export const fetchCurrentEpoch = async () => {
+ const response = await fetch(CURRENT_EPOCH, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ cache: "no-store", // Ensures fresh data on every request
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch current epoch data");
+ }
+
+ const data: CurrentEpochData = await response.json();
+ const epochEndTime = addSeconds(
+ new Date(data.current_epoch_start),
+ data.epoch_length.secs,
+ ).toISOString();
+
+ return { ...data, current_epoch_end: epochEndTime };
+};
+
+// Fetch balances based on the address
+export const fetchBalances = async (address: string): Promise => {
+ const response = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch balances");
+ }
+
+ const balances: ObservatoryBalance = await response.json();
+
+ // Calculate total stake
+ return (
+ Number(balances.rewards.staking_rewards.amount) +
+ Number(balances.delegated.amount)
+ );
+};
+
+// Fetch function to get total staker rewards
+export const fetchTotalStakerRewards = async (
+ address: string,
+): Promise => {
+ const response = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch balances");
+ }
+
+ const balances: ObservatoryBalance = await response.json();
+
+ // Return the staking rewards amount
+ return Number(balances.rewards.staking_rewards.amount);
+};
+
+// Fetch function to get the original stake
+export const fetchOriginalStake = async (address: string): Promise => {
+ const response = await fetch(`${DATA_OBSERVATORY_BALANCES_URL}/${address}`, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch balances");
+ }
+
+ const balances: ObservatoryBalance = await response.json();
+
+ // Return the delegated amount
+ return Number(balances.delegated.amount);
+};
+
+export const fetchNoise = async (): Promise => {
+ const response = await fetch(NS_API_MIXNODES_STATS, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+
+ const data: IPacketsAndStakingData[] = await response.json();
+ return data;
+};
+
+// Fetch Account Balance
+export const fetchAccountBalance = async (
+ address: string,
+): Promise => {
+ const res = await fetch(`${NYM_ACCOUNT_ADDRESS}/${address}`, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+ if (!res.ok) {
+ throw new Error("Failed to fetch account balance error from api");
+ }
+
+ const data: IAccountBalancesInfo = await res.json();
+ return data;
+};
+
+// 🔹 Fetch Nodes
+export const fetchNodes = async (): Promise => {
+ const res = await fetch(NYM_NODES, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+ if (!res.ok) {
+ throw new Error("Failed to fetch nodes");
+ }
+ const data: NodeData[] = await res.json();
+ return data;
+};
+
+export const fetchObservatoryNodes = async (): Promise => {
+ const allNodes: IObservatoryNode[] = [];
+ let page = 1;
+ const PAGE_SIZE = 200;
+ let hasMoreData = true;
+
+ while (hasMoreData) {
+ const response = await fetch(
+ `${DATA_OBSERVATORY_NODES_URL}?page=${page}&limit=${PAGE_SIZE}`,
+ {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ },
+ );
+
+ if (!response.ok) {
+ throw new Error(`Failed to fetch observatory nodes (page ${page})`);
+ }
+
+ const nodes: IObservatoryNode[] = await response.json();
+ allNodes.push(...nodes);
+
+ if (nodes.length < PAGE_SIZE) {
+ hasMoreData = false; // Stop fetching when the last page has fewer than 200 items
+ } else {
+ page++; // Move to the next page
+ }
+ }
+
+ return allNodes;
+};
+
+// 🔹 Fetch NYM Price
+export const fetchNymPrice = async (): Promise => {
+ const res = await fetch(NYM_PRICES_API, {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ });
+ if (!res.ok) {
+ throw new Error("Failed to fetch NYM price");
+ }
+ const data: NymTokenomics = await res.json();
+ return data;
+};
diff --git a/explorer-v2/src/app/api/strapi.d.ts b/explorer-v2/src/app/api/strapi.d.ts
new file mode 100644
index 0000000000..2c177527cb
--- /dev/null
+++ b/explorer-v2/src/app/api/strapi.d.ts
@@ -0,0 +1,23417 @@
+/**
+ * This file was auto-generated by openapi-typescript.
+ * Do not make direct changes to the file.
+ */
+
+export interface paths {
+ "/about-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/about-page"];
+ put: operations["put/about-page"];
+ post?: never;
+ delete: operations["delete/about-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/about-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/about-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/basic-pages": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/basic-pages"];
+ put?: never;
+ post: operations["post/basic-pages"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/basic-pages/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/basic-pages/{id}"];
+ put: operations["put/basic-pages/{id}"];
+ post?: never;
+ delete: operations["delete/basic-pages/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/basic-pages/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/basic-pages/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-authors": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-authors"];
+ put?: never;
+ post: operations["post/blog-authors"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-authors/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-authors/{id}"];
+ put: operations["put/blog-authors/{id}"];
+ post?: never;
+ delete: operations["delete/blog-authors/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-authors/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/blog-authors/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-categories": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-categories"];
+ put?: never;
+ post: operations["post/blog-categories"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-categories/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-categories/{id}"];
+ put: operations["put/blog-categories/{id}"];
+ post?: never;
+ delete: operations["delete/blog-categories/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-categories/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/blog-categories/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-page"];
+ put: operations["put/blog-page"];
+ post?: never;
+ delete: operations["delete/blog-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/blog-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-posts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-posts"];
+ put?: never;
+ post: operations["post/blog-posts"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-posts/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/blog-posts/{id}"];
+ put: operations["put/blog-posts/{id}"];
+ post?: never;
+ delete: operations["delete/blog-posts/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/blog-posts/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/blog-posts/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/downloads": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/downloads"];
+ put?: never;
+ post: operations["post/downloads"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/downloads/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/downloads/{id}"];
+ put: operations["put/downloads/{id}"];
+ post?: never;
+ delete: operations["delete/downloads/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/downloads/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/downloads/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/downloads-menu": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/downloads-menu"];
+ put: operations["put/downloads-menu"];
+ post?: never;
+ delete: operations["delete/downloads-menu"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/downloads-menu/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/downloads-menu/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/features": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/features"];
+ put?: never;
+ post: operations["post/features"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/features/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/features/{id}"];
+ put: operations["put/features/{id}"];
+ post?: never;
+ delete: operations["delete/features/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/features/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/features/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/feature-categories": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/feature-categories"];
+ put?: never;
+ post: operations["post/feature-categories"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/feature-categories/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/feature-categories/{id}"];
+ put: operations["put/feature-categories/{id}"];
+ post?: never;
+ delete: operations["delete/feature-categories/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/feature-categories/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/feature-categories/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/features-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/features-page"];
+ put: operations["put/features-page"];
+ post?: never;
+ delete: operations["delete/features-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/features-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/features-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/footer": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/footer"];
+ put: operations["put/footer"];
+ post?: never;
+ delete: operations["delete/footer"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/footer/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/footer/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/glossary-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/glossary-page"];
+ put: operations["put/glossary-page"];
+ post?: never;
+ delete: operations["delete/glossary-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/glossary-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/glossary-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/glossary-terms": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/glossary-terms"];
+ put?: never;
+ post: operations["post/glossary-terms"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/glossary-terms/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/glossary-terms/{id}"];
+ put: operations["put/glossary-terms/{id}"];
+ post?: never;
+ delete: operations["delete/glossary-terms/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/glossary-terms/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/glossary-terms/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/home-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/home-page"];
+ put: operations["put/home-page"];
+ post?: never;
+ delete: operations["delete/home-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/home-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/home-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/litepaper": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/litepaper"];
+ put: operations["put/litepaper"];
+ post?: never;
+ delete: operations["delete/litepaper"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/litepaper/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/litepaper/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/navigation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/navigation"];
+ put: operations["put/navigation"];
+ post?: never;
+ delete: operations["delete/navigation"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/navigation/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/navigation/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/network-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/network-page"];
+ put: operations["put/network-page"];
+ post?: never;
+ delete: operations["delete/network-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/network-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/network-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/page-not-found": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/page-not-found"];
+ put: operations["put/page-not-found"];
+ post?: never;
+ delete: operations["delete/page-not-found"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/page-not-found/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/page-not-found/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/press-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/press-page"];
+ put: operations["put/press-page"];
+ post?: never;
+ delete: operations["delete/press-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/press-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/press-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/press-posts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/press-posts"];
+ put?: never;
+ post: operations["post/press-posts"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/press-posts/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/press-posts/{id}"];
+ put: operations["put/press-posts/{id}"];
+ post?: never;
+ delete: operations["delete/press-posts/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/press-posts/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/press-posts/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/team-members": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/team-members"];
+ put?: never;
+ post: operations["post/team-members"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/team-members/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/team-members/{id}"];
+ put: operations["put/team-members/{id}"];
+ post?: never;
+ delete: operations["delete/team-members/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/team-members/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/team-members/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-advisors-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-advisors-page"];
+ put: operations["put/trust-center-advisors-page"];
+ post?: never;
+ delete: operations["delete/trust-center-advisors-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-advisors-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/trust-center-advisors-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-categories": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-categories"];
+ put?: never;
+ post: operations["post/trust-center-categories"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-categories/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-categories/{id}"];
+ put: operations["put/trust-center-categories/{id}"];
+ post?: never;
+ delete: operations["delete/trust-center-categories/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-categories/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/trust-center-categories/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-page"];
+ put: operations["put/trust-center-page"];
+ post?: never;
+ delete: operations["delete/trust-center-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/trust-center-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-posts": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-posts"];
+ put?: never;
+ post: operations["post/trust-center-posts"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-posts/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/trust-center-posts/{id}"];
+ put: operations["put/trust-center-posts/{id}"];
+ post?: never;
+ delete: operations["delete/trust-center-posts/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/trust-center-posts/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/trust-center-posts/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/use-cases": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/use-cases"];
+ put?: never;
+ post: operations["post/use-cases"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/use-cases/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/use-cases/{id}"];
+ put: operations["put/use-cases/{id}"];
+ post?: never;
+ delete: operations["delete/use-cases/{id}"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/use-cases/{id}/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/use-cases/{id}/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/use-cases-page": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: operations["get/use-cases-page"];
+ put: operations["put/use-cases-page"];
+ post?: never;
+ delete: operations["delete/use-cases-page"];
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/use-cases-page/localizations": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ post: operations["post/use-cases-page/localizations"];
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/upload": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Upload files */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Upload files */
+ requestBody: {
+ content: {
+ "multipart/form-data": {
+ /** @description The folder where the file(s) will be uploaded to (only supported on strapi-provider-upload-aws-s3). */
+ path?: string;
+ /** @description The ID of the entry which the file(s) will be linked to */
+ refId?: string;
+ /** @description The unique ID (uid) of the model which the file(s) will be linked to (api::restaurant.restaurant). */
+ ref?: string;
+ /** @description The field of the entry which the file(s) will be precisely linked to. */
+ field?: string;
+ files: string[];
+ };
+ };
+ };
+ responses: {
+ /** @description response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadFile"][];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/upload?id={id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** @description Upload file information */
+ post: {
+ parameters: {
+ query: {
+ /** @description File id */
+ id: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** @description Upload files */
+ requestBody: {
+ content: {
+ "multipart/form-data": {
+ fileInfo?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ };
+ /** Format: binary */
+ files?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description response */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadFile"][];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/upload/files": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get a list of files */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadFile"][];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/upload/files/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Get a specific file */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadFile"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Delete a file */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["UploadFile"];
+ };
+ };
+ };
+ };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/connect/{provider}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /**
+ * Login with a provider
+ * @description Redirects to provider login before being redirect to /auth/{provider}/callback
+ */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Provider name */
+ provider: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Redirect response */
+ 301: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/local": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Local login
+ * @description Returns a jwt token and user info
+ */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "identifier": "foobar",
+ * "password": "Test1234"
+ * } */
+ "application/json": {
+ identifier?: string;
+ password?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Connection */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-UserRegistration"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/local/register": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /**
+ * Register a user
+ * @description Returns a jwt token and user info
+ */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "username": "foobar",
+ * "email": "foo.bar@strapi.io",
+ * "password": "Test1234"
+ * } */
+ "application/json": {
+ username?: string;
+ email?: string;
+ password?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Successful registration */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-UserRegistration"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/{provider}/callback": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Default Callback from provider auth */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description Provider name */
+ provider: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns a jwt token and user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-UserRegistration"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/forgot-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Send rest password email */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "email": "foo.bar@strapi.io"
+ * } */
+ "application/json": {
+ email?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns ok */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @enum {string} */
+ ok?: true;
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/reset-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Rest user password */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "password": "Test1234",
+ * "passwordConfirmation": "Test1234",
+ * "code": "zertyoaizndoianzodianzdonaizdoinaozdnia"
+ * } */
+ "application/json": {
+ password?: string;
+ passwordConfirmation?: string;
+ code?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns a jwt token and user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-UserRegistration"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/change-password": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Update user's own password */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ password: string;
+ currentPassword: string;
+ passwordConfirmation: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns a jwt token and user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-UserRegistration"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/email-confirmation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Confirm user email */
+ get: {
+ parameters: {
+ query?: {
+ /** @description confirmation token received by email */
+ confirmation?: string;
+ };
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Redirects to the configure email confirmation redirect url */
+ 301: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content?: never;
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/auth/send-email-confirmation": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ put?: never;
+ /** Send confirmation email */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ "application/json": {
+ email?: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns email and boolean to confirm email was sent */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ email?: string;
+ /** @enum {string} */
+ sent?: true;
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users-permissions/permissions": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get default generated permissions */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns the permissions tree */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ permissions?: components["schemas"]["Users-Permissions-PermissionsTree"];
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users-permissions/roles": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** List roles */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns list of roles */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ roles?: (components["schemas"]["Users-Permissions-Role"] & {
+ nb_users?: number;
+ })[];
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ /** Create a role */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["Users-Permissions-RoleRequest"];
+ responses: {
+ /** @description Returns ok if the role was create */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @enum {string} */
+ ok?: true;
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users-permissions/roles/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a role */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description role Id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns the role */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ role?: components["schemas"]["Users-Permissions-Role"];
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users-permissions/roles/{role}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ get?: never;
+ /** Update a role */
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description role Id */
+ role: string;
+ };
+ cookie?: never;
+ };
+ requestBody: components["requestBodies"]["Users-Permissions-RoleRequest"];
+ responses: {
+ /** @description Returns ok if the role was udpated */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @enum {string} */
+ ok?: true;
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ post?: never;
+ /** Delete a role */
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description role Id */
+ role: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns ok if the role was delete */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": {
+ /** @enum {string} */
+ ok?: true;
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get list of users */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns an array of users */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"][];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ /** Create a user */
+ post: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "username": "foo",
+ * "email": "foo@strapi.io",
+ * "password": "foo-password"
+ * } */
+ "application/json": {
+ email: string;
+ username: string;
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns created user info */
+ 201: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"] & {
+ role?: components["schemas"]["Users-Permissions-Role"];
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users/{id}": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get a user */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description user Id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns a user */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ /** Update a user */
+ put: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description user Id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody: {
+ content: {
+ /** @example {
+ * "username": "foo",
+ * "email": "foo@strapi.io",
+ * "password": "foo-password"
+ * } */
+ "application/json": {
+ email: string;
+ username: string;
+ password: string;
+ };
+ };
+ };
+ responses: {
+ /** @description Returns updated user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"] & {
+ role?: components["schemas"]["Users-Permissions-Role"];
+ };
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ post?: never;
+ /** Delete a user */
+ delete: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path: {
+ /** @description user Id */
+ id: string;
+ };
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns deleted user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users/me": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get authenticated user info */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns user info */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Users-Permissions-User"];
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+ "/users/count": {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ /** Get user count */
+ get: {
+ parameters: {
+ query?: never;
+ header?: never;
+ path?: never;
+ cookie?: never;
+ };
+ requestBody?: never;
+ responses: {
+ /** @description Returns a number */
+ 200: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": number;
+ };
+ };
+ /** @description Error */
+ default: {
+ headers: {
+ [name: string]: unknown;
+ };
+ content: {
+ "application/json": components["schemas"]["Error"];
+ };
+ };
+ };
+ };
+ put?: never;
+ post?: never;
+ delete?: never;
+ options?: never;
+ head?: never;
+ patch?: never;
+ trace?: never;
+ };
+}
+export type webhooks = Record;
+export interface components {
+ schemas: {
+ Error: {
+ data?: (Record | Record[]) | null;
+ error: {
+ status?: number;
+ name?: string;
+ message?: string;
+ details?: Record;
+ };
+ };
+ AboutPageLocalizationRequest: {
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ )[];
+ locale: string;
+ };
+ AboutPageRequest: {
+ data: {
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ )[];
+ locale?: string;
+ };
+ };
+ AboutPageResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["AboutPage"];
+ };
+ AboutPageLocalizationResponse: {
+ data?: components["schemas"]["AboutPageResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ AboutPageListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["AboutPage"];
+ };
+ AboutPageLocalizationListResponse: {
+ data?: components["schemas"]["AboutPageListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ AboutPageListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["AboutPage"];
+ };
+ AboutPageListResponse: {
+ data?: components["schemas"]["AboutPageListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ AboutPage: {
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ )[];
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["AboutPageListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ AboutPageResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["AboutPage"];
+ };
+ AboutPageResponse: {
+ data?: components["schemas"]["AboutPageResponseDataObject"];
+ meta?: Record;
+ };
+ SharedSeoComponent: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ pathId?: number;
+ parent?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ children?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ files?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ firstname?: string;
+ lastname?: string;
+ username?: string;
+ /** Format: email */
+ email?: string;
+ resetPasswordToken?: string;
+ registrationToken?: string;
+ isActive?: boolean;
+ roles?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ code?: string;
+ description?: string;
+ users?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ permissions?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ action?: string;
+ actionParameters?: unknown;
+ subject?: string;
+ properties?: unknown;
+ conditions?: unknown;
+ role?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ };
+ }[];
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ blocked?: boolean;
+ preferedLanguage?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ path?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ UiLinkComponent: {
+ id?: number;
+ title?: string;
+ url?: string;
+ };
+ DynamicZoneValuePropositionWithTextComponent: {
+ id?: number;
+ __component?: string;
+ title?: string;
+ text?: string;
+ links?: components["schemas"]["UiLinkComponent"][];
+ media?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** @enum {string} */
+ direction?: "text-right" | "text-left";
+ };
+ UiBulletWithImageComponent: {
+ id?: number;
+ title?: string;
+ text?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ };
+ DynamicZoneValuePropositionWithBulletsComponent: {
+ id?: number;
+ __component?: string;
+ title?: string;
+ links?: components["schemas"]["UiLinkComponent"][];
+ media?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** @enum {string} */
+ direction?: "text-right" | "text-left";
+ bullets?: components["schemas"]["UiBulletWithImageComponent"][];
+ };
+ UiHeadingComponent: {
+ id?: number;
+ title?: string;
+ /** @enum {string} */
+ level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
+ };
+ TilesTileComponent: {
+ id?: number;
+ title?: string;
+ subtitle?: string;
+ description?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ url?: string;
+ };
+ DynamicZoneTilesComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ tiles?: components["schemas"]["TilesTileComponent"][];
+ };
+ DynamicZoneTeamMembersComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ subtitle?: string;
+ teamMembers?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ role?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ bio?: string;
+ socialNetworks?: {
+ id?: number;
+ links?: {
+ id?: number;
+ url?: string;
+ /** @enum {string} */
+ network?: "linkedin" | "twitter" | "wikipedia" | "website";
+ }[];
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ };
+ QuotesQuoteComponent: {
+ id?: number;
+ title?: string;
+ quote?: string;
+ };
+ DynamicZoneQuotesComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ quotes?: components["schemas"]["QuotesQuoteComponent"][];
+ };
+ UiHeadingExtendedComponent: {
+ id?: number;
+ title?: string;
+ /** @enum {string} */
+ level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
+ /** @enum {string} */
+ style?: "h1" | "h2" | "h3" | "h4";
+ /** @enum {string} */
+ alignment?: "left" | "center";
+ };
+ DynamicZoneParagraphWithTitleComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingExtendedComponent"];
+ text?: string;
+ primaryLinks?: components["schemas"]["UiLinkComponent"][];
+ secondaryLinks?: components["schemas"]["UiLinkComponent"][];
+ background?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ };
+ DynamicZoneLogoCarouselComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ isStatic?: boolean;
+ images?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ };
+ TilesContentTileComponent: {
+ id?: number;
+ title?: string;
+ subtitle?: string;
+ text?: string;
+ label1?: string;
+ label2?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ button?: {
+ id?: number;
+ title?: string;
+ url?: string;
+ };
+ dataTable?: string;
+ };
+ DynamicZoneContentTilesComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ tiles?: components["schemas"]["TilesContentTileComponent"][];
+ };
+ DynamicZoneBlogPostsComponent: {
+ id?: number;
+ __component?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ heading?: components["schemas"]["UiHeadingComponent"];
+ };
+ BlocksBlockComponent: {
+ id?: number;
+ title?: string;
+ description?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ };
+ DynamicZoneBlocksComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ subtitle?: string;
+ blocks?: components["schemas"]["BlocksBlockComponent"][];
+ /** @enum {string} */
+ type?: "high-density" | "low-density";
+ };
+ FaqsQuestionComponent: {
+ id?: number;
+ question?: string;
+ answer?: string;
+ };
+ FaqsFaQsComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ questions?: components["schemas"]["FaqsQuestionComponent"][];
+ };
+ CarouselCarouselSlideQuoteComponent: {
+ id?: number;
+ quote?: string;
+ source?: string;
+ };
+ DynamicZoneCarouselQuoteComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ slides?: components["schemas"]["CarouselCarouselSlideQuoteComponent"][];
+ };
+ CarouselCarouselSlideTextImageComponent: {
+ id?: number;
+ text?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ };
+ DynamicZoneCarouselTextImageComponent: {
+ id?: number;
+ __component?: string;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ slides?: components["schemas"]["CarouselCarouselSlideTextImageComponent"][];
+ };
+ BasicPageLocalizationRequest: {
+ title: string;
+ slug: string;
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneRichTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ )[];
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ locale: string;
+ };
+ BasicPageRequest: {
+ data: {
+ title: string;
+ slug: string;
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneRichTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ )[];
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ locale?: string;
+ };
+ };
+ BasicPageResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BasicPage"];
+ };
+ BasicPageLocalizationResponse: {
+ data?: components["schemas"]["BasicPageResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ BasicPageListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BasicPage"];
+ };
+ BasicPageLocalizationListResponse: {
+ data?: components["schemas"]["BasicPageListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BasicPageListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["BasicPage"];
+ };
+ BasicPageListResponse: {
+ data?: components["schemas"]["BasicPageListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BasicPage: {
+ title: string;
+ slug: string;
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneRichTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ )[];
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["BasicPageListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ BasicPageResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["BasicPage"];
+ };
+ BasicPageResponse: {
+ data?: components["schemas"]["BasicPageResponseDataObject"];
+ meta?: Record;
+ };
+ DynamicZoneRichTextComponent: {
+ id?: number;
+ __component?: string;
+ content?: string;
+ tableOfContents?: boolean;
+ heading?: components["schemas"]["UiHeadingComponent"];
+ };
+ BlogAuthorLocalizationRequest: {
+ name: string;
+ bio?: string;
+ /** @example string or id */
+ avatar?: number | string;
+ slug: string;
+ blogPosts?: (number | string)[];
+ role?: string;
+ locale: string;
+ };
+ BlogAuthorRequest: {
+ data: {
+ name: string;
+ bio?: string;
+ /** @example string or id */
+ avatar?: number | string;
+ slug: string;
+ blogPosts?: (number | string)[];
+ role?: string;
+ locale?: string;
+ };
+ };
+ BlogAuthorResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogAuthor"];
+ };
+ BlogAuthorLocalizationResponse: {
+ data?: components["schemas"]["BlogAuthorResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ BlogAuthorListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogAuthor"];
+ };
+ BlogAuthorLocalizationListResponse: {
+ data?: components["schemas"]["BlogAuthorListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogAuthorListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["BlogAuthor"];
+ };
+ BlogAuthorListResponse: {
+ data?: components["schemas"]["BlogAuthorListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogAuthor: {
+ name: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ pathId?: number;
+ parent?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ children?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ files?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ firstname?: string;
+ lastname?: string;
+ username?: string;
+ /** Format: email */
+ email?: string;
+ resetPasswordToken?: string;
+ registrationToken?: string;
+ isActive?: boolean;
+ roles?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ code?: string;
+ description?: string;
+ users?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ permissions?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ action?: string;
+ actionParameters?: unknown;
+ subject?: string;
+ properties?: unknown;
+ conditions?: unknown;
+ role?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ };
+ }[];
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ blocked?: boolean;
+ preferedLanguage?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ path?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["BlogAuthorListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ BlogAuthorResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["BlogAuthor"];
+ };
+ BlogAuthorResponse: {
+ data?: components["schemas"]["BlogAuthorResponseDataObject"];
+ meta?: Record;
+ };
+ BlogCategoryLocalizationRequest: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogPosts?: (number | string)[];
+ description?: string;
+ locale: string;
+ };
+ BlogCategoryRequest: {
+ data: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogPosts?: (number | string)[];
+ description?: string;
+ locale?: string;
+ };
+ };
+ BlogCategoryResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogCategory"];
+ };
+ BlogCategoryLocalizationResponse: {
+ data?: components["schemas"]["BlogCategoryResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ BlogCategoryListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogCategory"];
+ };
+ BlogCategoryLocalizationListResponse: {
+ data?: components["schemas"]["BlogCategoryListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogCategoryListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["BlogCategory"];
+ };
+ BlogCategoryListResponse: {
+ data?: components["schemas"]["BlogCategoryListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogCategory: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["BlogCategoryListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ BlogCategoryResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["BlogCategory"];
+ };
+ BlogCategoryResponse: {
+ data?: components["schemas"]["BlogCategoryResponseDataObject"];
+ meta?: Record;
+ };
+ BlogPageLocalizationRequest: {
+ featuredPosts?: (number | string)[];
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ title: string;
+ categoriesFilter?: (number | string)[];
+ featuredCategories?: (number | string)[];
+ locale: string;
+ };
+ BlogPageRequest: {
+ data: {
+ featuredPosts?: (number | string)[];
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ title: string;
+ categoriesFilter?: (number | string)[];
+ featuredCategories?: (number | string)[];
+ locale?: string;
+ };
+ };
+ BlogPageResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPage"];
+ };
+ BlogPageLocalizationResponse: {
+ data?: components["schemas"]["BlogPageResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ BlogPageListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPage"];
+ };
+ BlogPageLocalizationListResponse: {
+ data?: components["schemas"]["BlogPageListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogPageListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPage"];
+ };
+ BlogPageListResponse: {
+ data?: components["schemas"]["BlogPageListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogPage: {
+ featuredPosts?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ pathId?: number;
+ parent?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ children?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ files?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ firstname?: string;
+ lastname?: string;
+ username?: string;
+ /** Format: email */
+ email?: string;
+ resetPasswordToken?: string;
+ registrationToken?: string;
+ isActive?: boolean;
+ roles?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ code?: string;
+ description?: string;
+ users?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ }[];
+ };
+ permissions?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ action?: string;
+ actionParameters?: unknown;
+ subject?: string;
+ properties?: unknown;
+ conditions?: unknown;
+ role?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ };
+ }[];
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record<
+ string,
+ never
+ >;
+ };
+ };
+ };
+ }[];
+ };
+ blocked?: boolean;
+ preferedLanguage?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ }[];
+ };
+ path?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ title: string;
+ categoriesFilter?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ featuredCategories?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["BlogPageListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ BlogPageResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPage"];
+ };
+ BlogPageResponse: {
+ data?: components["schemas"]["BlogPageResponseDataObject"];
+ meta?: Record;
+ };
+ BlogPostLocalizationRequest: {
+ title: string;
+ slug: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogCategories?: (number | string)[];
+ blogAuthors?: (number | string)[];
+ relatedPosts?: (number | string)[];
+ /** @example string or id */
+ image?: number | string;
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ locale: string;
+ };
+ BlogPostRequest: {
+ data: {
+ title: string;
+ slug: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogCategories?: (number | string)[];
+ blogAuthors?: (number | string)[];
+ relatedPosts?: (number | string)[];
+ /** @example string or id */
+ image?: number | string;
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ locale?: string;
+ };
+ };
+ BlogPostResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPost"];
+ };
+ BlogPostLocalizationResponse: {
+ data?: components["schemas"]["BlogPostResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ BlogPostListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPost"];
+ };
+ BlogPostLocalizationListResponse: {
+ data?: components["schemas"]["BlogPostListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogPostListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPost"];
+ };
+ BlogPostListResponse: {
+ data?: components["schemas"]["BlogPostListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ BlogPost: {
+ title: string;
+ slug: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ title?: string;
+ slug?: string;
+ subtitle?: string;
+ content?: string;
+ excerpt?: string;
+ SEO?: {
+ id?: number;
+ metaTitle?: string;
+ metaDescription?: string;
+ metaImage?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ keywords?: string;
+ metaRobots?: string;
+ structuredData?: unknown;
+ canonicalURL?: string;
+ };
+ blogCategories?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ bio?: string;
+ avatar?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ slug?: string;
+ blogPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ role?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ description?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: unknown[];
+ };
+ locale?: string;
+ };
+ }[];
+ };
+ blogAuthors?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ relatedPosts?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ }[];
+ };
+ folder?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ folderPath?: string;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ };
+ };
+ };
+ /** Format: date */
+ date?: string;
+ readingTime?: number;
+ /** Format: date-time */
+ createdAt?: string;
+ /** Format: date-time */
+ updatedAt?: string;
+ /** Format: date-time */
+ publishedAt?: string;
+ createdBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ updatedBy?: {
+ data?: {
+ id?: number;
+ attributes?: Record;
+ };
+ };
+ localizations?: {
+ data?: components["schemas"]["BlogPostListResponseDataItemLocalized"][];
+ };
+ locale?: string;
+ };
+ BlogPostResponseDataObject: {
+ id?: number;
+ attributes?: components["schemas"]["BlogPost"];
+ };
+ BlogPostResponse: {
+ data?: components["schemas"]["BlogPostResponseDataObject"];
+ meta?: Record;
+ };
+ DownloadLocalizationRequest: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ bullets?: components["schemas"]["UiBulletWithImageComponent"][];
+ info?: string;
+ /** @example string or id */
+ image?: number | string;
+ /** @example string or id */
+ menuIcon?: number | string;
+ buttons?: components["schemas"]["UiButtonComponent"][];
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneInstallComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ )[];
+ menuTitle?: string;
+ minimumSupport?: string;
+ locale: string;
+ };
+ DownloadRequest: {
+ data: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ bullets?: components["schemas"]["UiBulletWithImageComponent"][];
+ info?: string;
+ /** @example string or id */
+ image?: number | string;
+ /** @example string or id */
+ menuIcon?: number | string;
+ buttons?: components["schemas"]["UiButtonComponent"][];
+ dynamicZone?: (
+ | components["schemas"]["DynamicZoneValuePropositionWithTextComponent"]
+ | components["schemas"]["DynamicZoneValuePropositionWithBulletsComponent"]
+ | components["schemas"]["DynamicZoneTilesComponent"]
+ | components["schemas"]["DynamicZoneTeamMembersComponent"]
+ | components["schemas"]["DynamicZoneQuotesComponent"]
+ | components["schemas"]["DynamicZoneParagraphWithTitleComponent"]
+ | components["schemas"]["DynamicZoneLogoCarouselComponent"]
+ | components["schemas"]["DynamicZoneContentTilesComponent"]
+ | components["schemas"]["DynamicZoneBlogPostsComponent"]
+ | components["schemas"]["DynamicZoneBlocksComponent"]
+ | components["schemas"]["FaqsFaQsComponent"]
+ | components["schemas"]["DynamicZoneInstallComponent"]
+ | components["schemas"]["DynamicZoneCarouselTextImageComponent"]
+ | components["schemas"]["DynamicZoneCarouselQuoteComponent"]
+ )[];
+ menuTitle?: string;
+ minimumSupport?: string;
+ locale?: string;
+ };
+ };
+ DownloadResponseDataObjectLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["Download"];
+ };
+ DownloadLocalizationResponse: {
+ data?: components["schemas"]["DownloadResponseDataObjectLocalized"];
+ meta?: Record;
+ };
+ DownloadListResponseDataItemLocalized: {
+ id?: number;
+ attributes?: components["schemas"]["Download"];
+ };
+ DownloadLocalizationListResponse: {
+ data?: components["schemas"]["DownloadListResponseDataItemLocalized"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ DownloadListResponseDataItem: {
+ id?: number;
+ attributes?: components["schemas"]["Download"];
+ };
+ DownloadListResponse: {
+ data?: components["schemas"]["DownloadListResponseDataItem"][];
+ meta?: {
+ pagination?: {
+ page?: number;
+ pageSize?: number;
+ pageCount?: number;
+ total?: number;
+ };
+ };
+ };
+ Download: {
+ title: string;
+ slug: string;
+ SEO?: components["schemas"]["SharedSeoComponent"];
+ bullets?: components["schemas"]["UiBulletWithImageComponent"][];
+ info?: string;
+ image?: {
+ data?: {
+ id?: number;
+ attributes?: {
+ name?: string;
+ alternativeText?: string;
+ caption?: string;
+ width?: number;
+ height?: number;
+ formats?: unknown;
+ hash?: string;
+ ext?: string;
+ mime?: string;
+ /** Format: float */
+ size?: number;
+ url?: string;
+ previewUrl?: string;
+ provider?: string;
+ provider_metadata?: unknown;
+ related?: {
+ data?: {
+ id?: number;
+ attributes?: Record