@lukoweb/apitogo 0.2.22 → 0.2.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -94
- package/cli.js +13 -13
- package/client.d.ts +8 -8
- package/dist/cli/cli.js +561 -232
- package/dist/declarations/cli/platform/client/platform-api.d.ts +18 -0
- package/dist/declarations/config/validators/InputNavigationSchema.d.ts +7 -7
- package/dist/declarations/config/validators/ZudokuConfig.d.ts +1 -1
- package/docs/cli/commands.md +75 -75
- package/docs/cli/go-live.md +123 -123
- package/docs/cli/overview.md +91 -91
- package/docs/cli/setup.md +141 -141
- package/docs/cli/shape.md +127 -127
- package/docs/components/alert.mdx +130 -130
- package/docs/components/badge.mdx +70 -70
- package/docs/components/button.mdx +132 -132
- package/docs/components/callout.mdx +112 -112
- package/docs/components/card.mdx +104 -104
- package/docs/components/checkbox.mdx +72 -72
- package/docs/components/client-only.mdx +79 -79
- package/docs/components/code-tabs.mdx +179 -179
- package/docs/components/dialog.mdx +167 -167
- package/docs/components/head.mdx +200 -200
- package/docs/components/icons.mdx +27 -27
- package/docs/components/input.mdx +96 -96
- package/docs/components/label.mdx +86 -86
- package/docs/components/link.mdx +242 -242
- package/docs/components/markdown.mdx +151 -151
- package/docs/components/mermaid.mdx +81 -81
- package/docs/components/playground.mdx +85 -85
- package/docs/components/secret.mdx +79 -79
- package/docs/components/select.mdx +176 -176
- package/docs/components/shadcn.mdx +73 -73
- package/docs/components/slider.mdx +108 -108
- package/docs/components/slot.mdx +119 -119
- package/docs/components/stepper.mdx +138 -138
- package/docs/components/switch.mdx +96 -96
- package/docs/components/syntax-highlight.mdx +602 -602
- package/docs/components/textarea.mdx +78 -78
- package/docs/components/tooltip.mdx +195 -195
- package/docs/components/typography.mdx +61 -61
- package/docs/components.mdx +60 -60
- package/docs/concepts/auth-provider-api-identities.md +105 -105
- package/docs/configuration/ai-assistants.md +65 -65
- package/docs/configuration/api-catalog.md +109 -109
- package/docs/configuration/api-reference.md +397 -397
- package/docs/configuration/authentication-auth0.md +181 -181
- package/docs/configuration/authentication-azure-ad.md +245 -245
- package/docs/configuration/authentication-clerk.md +117 -117
- package/docs/configuration/authentication-firebase.md +69 -69
- package/docs/configuration/authentication-pingfederate.md +143 -143
- package/docs/configuration/authentication-supabase.md +233 -233
- package/docs/configuration/authentication.md +159 -159
- package/docs/configuration/build-configuration.mdx +147 -147
- package/docs/configuration/docs.md +282 -282
- package/docs/configuration/footer.mdx +118 -118
- package/docs/configuration/gateway.md +221 -221
- package/docs/configuration/llms.md +90 -90
- package/docs/configuration/make-config.mdx +124 -124
- package/docs/configuration/manifest.md +128 -128
- package/docs/configuration/navigation.mdx +421 -421
- package/docs/configuration/overview.md +166 -166
- package/docs/configuration/plans.md +153 -153
- package/docs/configuration/protected-routes.md +150 -150
- package/docs/configuration/search.md +164 -164
- package/docs/configuration/sentry.mdx +44 -44
- package/docs/configuration/site.md +124 -124
- package/docs/configuration/slots.mdx +125 -125
- package/docs/configuration/vite-config.md +18 -18
- package/docs/custom-plugins.md +285 -285
- package/docs/customization/colors-theme.mdx +278 -278
- package/docs/customization/fonts.md +110 -110
- package/docs/customization/landing-page.md +188 -188
- package/docs/deploy/apache-nginx.md +41 -41
- package/docs/deploy/apitogo.md +17 -17
- package/docs/deploy/cloudflare-pages.md +74 -74
- package/docs/deploy/direct-upload.md +17 -17
- package/docs/deploy/github-pages.md +49 -49
- package/docs/deploy/vercel.md +101 -101
- package/docs/deployment.md +9 -9
- package/docs/extending/events.md +124 -124
- package/docs/guides/custom-pages.md +110 -110
- package/docs/guides/environment-variables.md +94 -94
- package/docs/guides/managing-api-keys-and-identities.md +89 -89
- package/docs/guides/mermaid.mdx +70 -70
- package/docs/guides/navigation-rules.mdx +203 -203
- package/docs/guides/processors.mdx +234 -234
- package/docs/guides/static-files.md +55 -55
- package/docs/guides/transforming-examples.md +156 -156
- package/docs/guides/using-multiple-apis.md +87 -87
- package/docs/markdown/admonitions.md +128 -128
- package/docs/markdown/code-blocks.md +196 -196
- package/docs/markdown/frontmatter.md +173 -173
- package/docs/markdown/mdx.md +68 -68
- package/docs/markdown/overview.md +275 -275
- package/docs/mcp/go-live.md +100 -100
- package/docs/mcp/overview.md +76 -76
- package/docs/mcp/setup.md +173 -173
- package/docs/mcp/shape.md +77 -77
- package/docs/mcp/tools.md +102 -102
- package/docs/plugins.md +24 -24
- package/docs/quickstart.md +72 -72
- package/docs/writing.mdx +72 -72
- package/package.json +1 -1
- package/src/app/ZuploBuildConfig.ts +36 -36
- package/src/app/apitogoBrandTheme.ts +47 -47
- package/src/app/defaultTheme.css +77 -77
- package/src/app/demo-cdn.html +37 -37
- package/src/app/demo.html +21 -21
- package/src/app/demo.tsx +77 -77
- package/src/app/entry.client.tsx +107 -107
- package/src/app/entry.server.tsx +160 -160
- package/src/app/env.ts +40 -40
- package/src/app/main.css +400 -400
- package/src/app/main.tsx +167 -167
- package/src/app/polyfills.ts +47 -47
- package/src/app/processRoutes.tsx +51 -51
- package/src/app/sentry.ts +24 -24
- package/src/app/standalone.html +23 -23
- package/src/app/standalone.tsx +60 -60
- package/src/app/utils/createRedirectRoutes.ts +11 -11
- package/src/config/apitogo-config-core.ts +7 -3
- package/src/config/apitogo-config-loader.browser.ts +17 -17
- package/src/config/apitogo-config-loader.node.ts +88 -88
- package/src/config/apitogo-config-loader.ts +6 -6
- package/src/config/build-apitogo-config.ts +61 -61
- package/src/config/config.ts +74 -74
- package/src/config/create-plugin.ts +71 -71
- package/src/config/default-landing-content.ts +149 -149
- package/src/config/file-exists.ts +6 -6
- package/src/config/gateway-limits.ts +128 -128
- package/src/config/landing-manifest.ts +11 -11
- package/src/config/landing-openapi-showcase.ts +124 -124
- package/src/config/loader.ts +375 -375
- package/src/config/local-manifest.ts +545 -545
- package/src/config/resolve-modules.ts +354 -354
- package/src/config/v2/__fixtures__/scenario-a-docs-only.json +6 -6
- package/src/config/v2/__fixtures__/scenario-b-managed-origin.json +14 -14
- package/src/config/v2/__fixtures__/scenario-c-proxy-oidc.json +15 -15
- package/src/config/v2/__fixtures__/scenario-h-full-stack.json +28 -28
- package/src/config/v2/docs-navigation.ts +72 -72
- package/src/config/v2/errors.ts +42 -42
- package/src/config/v2/gateway-reference.ts +220 -220
- package/src/config/v2/gateway-request.ts +123 -123
- package/src/config/v2/home-redirect.ts +98 -98
- package/src/config/v2/index.ts +126 -126
- package/src/config/v2/init.ts +273 -273
- package/src/config/v2/layout.ts +237 -237
- package/src/config/v2/ledger.ts +235 -235
- package/src/config/v2/link-directory.ts +34 -0
- package/src/config/v2/load.ts +70 -70
- package/src/config/v2/manifest.ts +452 -452
- package/src/config/v2/parse.ts +214 -214
- package/src/config/v2/paths.ts +54 -54
- package/src/config/v2/portal-profile.ts +88 -88
- package/src/config/v2/resolve.ts +188 -188
- package/src/config/v2/rules.ts +714 -714
- package/src/config/v2/schema.ts +245 -245
- package/src/config/v2/services.ts +663 -663
- package/src/config/v2/workspace.ts +3 -2
- package/src/config/v2/wrapper.ts +24 -2
- package/src/config/validators/BuildSchema.ts +95 -95
- package/src/config/validators/HeaderNavigationSchema.ts +44 -44
- package/src/config/validators/InputNavigationSchema.test-d.ts +178 -178
- package/src/config/validators/InputNavigationSchema.ts +206 -206
- package/src/config/validators/ModulesSchema.ts +502 -502
- package/src/config/validators/NavigationSchema.ts +352 -352
- package/src/config/validators/ProtectedRoutesSchema.ts +35 -35
- package/src/config/validators/ZudokuConfig.ts +792 -792
- package/src/config/validators/auth.ts +3 -3
- package/src/config/validators/reason-codes.ts +7 -7
- package/src/env.d.ts +11 -11
- package/src/index.ts +83 -83
- package/src/lib/MissingIcon.tsx +22 -22
- package/src/lib/assets/language-icons/bun.tsx +50 -50
- package/src/lib/assets/language-icons/c.tsx +31 -31
- package/src/lib/assets/language-icons/commonlisp.tsx +22 -22
- package/src/lib/assets/language-icons/cpp.tsx +35 -35
- package/src/lib/assets/language-icons/csharp.tsx +35 -35
- package/src/lib/assets/language-icons/css.tsx +36 -36
- package/src/lib/assets/language-icons/dart.tsx +39 -39
- package/src/lib/assets/language-icons/elixir.tsx +19 -19
- package/src/lib/assets/language-icons/go.tsx +19 -19
- package/src/lib/assets/language-icons/graphql.tsx +19 -19
- package/src/lib/assets/language-icons/html.tsx +24 -24
- package/src/lib/assets/language-icons/java.tsx +35 -35
- package/src/lib/assets/language-icons/javascript.tsx +11 -11
- package/src/lib/assets/language-icons/json.tsx +19 -19
- package/src/lib/assets/language-icons/kotlin.tsx +30 -30
- package/src/lib/assets/language-icons/markdown.tsx +19 -19
- package/src/lib/assets/language-icons/mdx.tsx +23 -23
- package/src/lib/assets/language-icons/npm.tsx +15 -15
- package/src/lib/assets/language-icons/objectivec.tsx +23 -23
- package/src/lib/assets/language-icons/ocaml.tsx +34 -34
- package/src/lib/assets/language-icons/php.tsx +19 -19
- package/src/lib/assets/language-icons/pnpm.tsx +32 -32
- package/src/lib/assets/language-icons/powershell.tsx +27 -27
- package/src/lib/assets/language-icons/python.tsx +23 -23
- package/src/lib/assets/language-icons/react.tsx +21 -21
- package/src/lib/assets/language-icons/ruby.tsx +19 -19
- package/src/lib/assets/language-icons/rust.tsx +19 -19
- package/src/lib/assets/language-icons/scala.tsx +19 -19
- package/src/lib/assets/language-icons/shell.tsx +19 -19
- package/src/lib/assets/language-icons/swift.tsx +19 -19
- package/src/lib/assets/language-icons/toml.tsx +23 -23
- package/src/lib/assets/language-icons/typescript.tsx +23 -23
- package/src/lib/assets/language-icons/xml.tsx +19 -19
- package/src/lib/assets/language-icons/yaml.tsx +23 -23
- package/src/lib/assets/language-icons/yarn.tsx +17 -17
- package/src/lib/assets/language-icons/zig.tsx +32 -32
- package/src/lib/auth/issuer.ts +34 -34
- package/src/lib/authentication/AuthenticationPlugin.tsx +33 -33
- package/src/lib/authentication/auth-header-nav.ts +46 -46
- package/src/lib/authentication/authentication.ts +51 -51
- package/src/lib/authentication/components/CallbackHandler.tsx +45 -45
- package/src/lib/authentication/components/OAuthErrorPage.tsx +197 -197
- package/src/lib/authentication/components/ProductionUnlockPage.tsx +26 -26
- package/src/lib/authentication/components/SignIn.tsx +46 -46
- package/src/lib/authentication/components/SignOut.tsx +15 -15
- package/src/lib/authentication/components/SignUp.tsx +48 -48
- package/src/lib/authentication/constants.ts +1 -1
- package/src/lib/authentication/errors.ts +34 -34
- package/src/lib/authentication/header-nav-filter.ts +35 -35
- package/src/lib/authentication/hook.ts +141 -141
- package/src/lib/authentication/providers/auth0.tsx +91 -91
- package/src/lib/authentication/providers/azureb2c.tsx +223 -223
- package/src/lib/authentication/providers/clerk.tsx +224 -224
- package/src/lib/authentication/providers/dev-portal-auth-pages.tsx +602 -602
- package/src/lib/authentication/providers/dev-portal-constants.ts +38 -38
- package/src/lib/authentication/providers/dev-portal-demo.ts +151 -151
- package/src/lib/authentication/providers/dev-portal-utils.ts +279 -279
- package/src/lib/authentication/providers/dev-portal.tsx +448 -448
- package/src/lib/authentication/providers/firebase.tsx +486 -486
- package/src/lib/authentication/providers/openid.tsx +516 -516
- package/src/lib/authentication/providers/supabase.tsx +412 -412
- package/src/lib/authentication/providers/util.ts +26 -26
- package/src/lib/authentication/state.ts +180 -180
- package/src/lib/authentication/ui/AuthCard.tsx +7 -7
- package/src/lib/authentication/ui/EmailLinkCallbackUi.tsx +129 -129
- package/src/lib/authentication/ui/EmailLinkSentUi.tsx +105 -105
- package/src/lib/authentication/ui/EmailLinkSignInUi.tsx +100 -100
- package/src/lib/authentication/ui/EmailVerificationUi.tsx +128 -128
- package/src/lib/authentication/ui/ZudokuAuthUi.tsx +620 -620
- package/src/lib/authentication/ui/icons/Apple.tsx +10 -10
- package/src/lib/authentication/ui/icons/Facebook.tsx +15 -15
- package/src/lib/authentication/ui/icons/Github.tsx +16 -16
- package/src/lib/authentication/ui/icons/Google.tsx +16 -16
- package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -12
- package/src/lib/authentication/ui/icons/X.tsx +10 -10
- package/src/lib/authentication/utils/relativeRedirectUrl.ts +16 -16
- package/src/lib/components/AiAssistantMenuItems.tsx +102 -102
- package/src/lib/components/AnchorLink.tsx +24 -24
- package/src/lib/components/Autocomplete.tsx +123 -123
- package/src/lib/components/Banner.tsx +52 -52
- package/src/lib/components/Bootstrap.tsx +77 -77
- package/src/lib/components/BuildCheck.tsx +87 -87
- package/src/lib/components/CategoryHeading.tsx +19 -19
- package/src/lib/components/ClientOnly.tsx +19 -19
- package/src/lib/components/DeveloperHint.tsx +39 -39
- package/src/lib/components/ErrorPage.tsx +26 -26
- package/src/lib/components/Footer.tsx +146 -146
- package/src/lib/components/Framed.tsx +51 -51
- package/src/lib/components/Header.tsx +261 -261
- package/src/lib/components/HeaderAuthActions.tsx +32 -32
- package/src/lib/components/HeaderNavigation.tsx +176 -176
- package/src/lib/components/Heading.tsx +84 -84
- package/src/lib/components/InlineCode.tsx +15 -15
- package/src/lib/components/LandingLayout.tsx +27 -27
- package/src/lib/components/LanguageIcon.tsx +199 -199
- package/src/lib/components/Layout.tsx +59 -59
- package/src/lib/components/Main.tsx +52 -52
- package/src/lib/components/Markdown.tsx +55 -55
- package/src/lib/components/Mermaid.tsx +74 -74
- package/src/lib/components/Meta.tsx +46 -46
- package/src/lib/components/MobileTopNavigation.tsx +283 -283
- package/src/lib/components/MultiSelect.tsx +86 -86
- package/src/lib/components/NotFoundPage.tsx +37 -37
- package/src/lib/components/PageProgress.tsx +28 -28
- package/src/lib/components/PagefindSearchMeta.tsx +14 -14
- package/src/lib/components/Pagination.tsx +44 -44
- package/src/lib/components/PathRenderer.tsx +61 -61
- package/src/lib/components/PluginHeads.tsx +17 -17
- package/src/lib/components/Search.tsx +70 -70
- package/src/lib/components/SiteTitle.tsx +58 -58
- package/src/lib/components/Slot.tsx +65 -65
- package/src/lib/components/Spinner.tsx +5 -5
- package/src/lib/components/StatusPage.tsx +96 -96
- package/src/lib/components/ThemeSwitch.tsx +99 -99
- package/src/lib/components/TopNavigation.tsx +90 -90
- package/src/lib/components/Typography.tsx +12 -12
- package/src/lib/components/Zudoku.tsx +105 -105
- package/src/lib/components/cache.ts +27 -27
- package/src/lib/components/context/RenderContext.ts +11 -11
- package/src/lib/components/context/RouterEventsEmitter.tsx +19 -19
- package/src/lib/components/context/SlotProvider.tsx +149 -149
- package/src/lib/components/context/ViewportAnchorContext.tsx +137 -137
- package/src/lib/components/context/ZudokuContext.ts +140 -140
- package/src/lib/components/context/ZudokuProvider.tsx +20 -20
- package/src/lib/components/context/ZudokuReactContext.tsx +17 -17
- package/src/lib/components/index.ts +36 -36
- package/src/lib/components/navigation/Navigation.tsx +51 -51
- package/src/lib/components/navigation/NavigationBadge.tsx +48 -48
- package/src/lib/components/navigation/NavigationCategory.tsx +157 -157
- package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -28
- package/src/lib/components/navigation/NavigationFilterInput.tsx +35 -35
- package/src/lib/components/navigation/NavigationItem.tsx +181 -181
- package/src/lib/components/navigation/NavigationWrapper.tsx +49 -49
- package/src/lib/components/navigation/PoweredByZudoku.tsx +39 -39
- package/src/lib/components/navigation/Toc.tsx +137 -137
- package/src/lib/components/navigation/ZudokuLogo.tsx +25 -25
- package/src/lib/components/navigation/ZuploLogo.tsx +14 -14
- package/src/lib/components/navigation/utils.ts +234 -234
- package/src/lib/core/RouteGuard.tsx +260 -260
- package/src/lib/core/ZudokuContext.ts +272 -272
- package/src/lib/core/plugins.ts +139 -139
- package/src/lib/core/react-query.ts +1 -1
- package/src/lib/core/router.ts +1 -1
- package/src/lib/core/transform-config.ts +67 -67
- package/src/lib/demo/DemoAnnouncement.tsx +17 -17
- package/src/lib/errors/ErrorAlert.tsx +28 -28
- package/src/lib/errors/ErrorMessage.tsx +50 -50
- package/src/lib/errors/RouterError.tsx +18 -18
- package/src/lib/errors/ServerError.tsx +5 -5
- package/src/lib/errors/TopLevelError.tsx +6 -6
- package/src/lib/hooks/index.ts +13 -13
- package/src/lib/hooks/useEvent.ts +41 -41
- package/src/lib/hooks/useHighlighter.ts +15 -15
- package/src/lib/hooks/useHotkey.ts +70 -70
- package/src/lib/icons.ts +2 -2
- package/src/lib/navigation/applyRules.ts +127 -127
- package/src/lib/navigation/pathMatcher.ts +81 -81
- package/src/lib/oas/graphql/circular.ts +69 -69
- package/src/lib/oas/graphql/constants.ts +2 -2
- package/src/lib/oas/graphql/index.ts +791 -791
- package/src/lib/oas/parser/dereference/index.ts +84 -84
- package/src/lib/oas/parser/dereference/resolveRef.ts +32 -32
- package/src/lib/oas/parser/index.ts +129 -129
- package/src/lib/oas/parser/schemas/v3.0.json +1489 -1489
- package/src/lib/oas/parser/schemas/v3.1.json +1298 -1298
- package/src/lib/oas/parser/upgrade/index.ts +174 -174
- package/src/lib/plugins/api-catalog/Catalog.tsx +80 -80
- package/src/lib/plugins/api-catalog/index.tsx +119 -119
- package/src/lib/plugins/api-keys/CreateApiKey.tsx +128 -128
- package/src/lib/plugins/api-keys/CreateApiKeyDialog.tsx +49 -49
- package/src/lib/plugins/api-keys/ProtectedRoute.tsx +33 -33
- package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +72 -72
- package/src/lib/plugins/api-keys/index.tsx +274 -274
- package/src/lib/plugins/api-keys/settings/ApiKeyItem.tsx +342 -342
- package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -67
- package/src/lib/plugins/api-keys/settings/RevealApiKey.tsx +127 -127
- package/src/lib/plugins/custom-pages/index.tsx +32 -32
- package/src/lib/plugins/markdown/MdxPage.tsx +260 -260
- package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -11
- package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -19
- package/src/lib/plugins/markdown/index.tsx +82 -82
- package/src/lib/plugins/openapi/ApiHeader.tsx +96 -96
- package/src/lib/plugins/openapi/CollapsibleCode.tsx +88 -88
- package/src/lib/plugins/openapi/ColorizedParam.tsx +115 -115
- package/src/lib/plugins/openapi/DownloadSchemaButton.tsx +94 -94
- package/src/lib/plugins/openapi/Endpoint.tsx +85 -85
- package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -52
- package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -273
- package/src/lib/plugins/openapi/OasProvider.tsx +74 -74
- package/src/lib/plugins/openapi/OperationList.tsx +275 -275
- package/src/lib/plugins/openapi/OperationListItem.tsx +183 -183
- package/src/lib/plugins/openapi/ParamInfos.tsx +96 -96
- package/src/lib/plugins/openapi/ParameterList.tsx +53 -53
- package/src/lib/plugins/openapi/ParameterListItem.tsx +161 -161
- package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +67 -67
- package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +63 -63
- package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +120 -120
- package/src/lib/plugins/openapi/SchemaInfo.tsx +344 -344
- package/src/lib/plugins/openapi/SchemaList.tsx +113 -113
- package/src/lib/plugins/openapi/Sidecar.tsx +314 -314
- package/src/lib/plugins/openapi/SidecarBox.tsx +57 -57
- package/src/lib/plugins/openapi/SidecarExamples.tsx +177 -177
- package/src/lib/plugins/openapi/SimpleSelect.tsx +46 -46
- package/src/lib/plugins/openapi/client/GraphQLClient.tsx +73 -73
- package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -16
- package/src/lib/plugins/openapi/client/createServer.ts +35 -35
- package/src/lib/plugins/openapi/client/useCreateQuery.ts +44 -44
- package/src/lib/plugins/openapi/components/ConstValue.tsx +24 -24
- package/src/lib/plugins/openapi/components/EnumValues.tsx +58 -58
- package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -22
- package/src/lib/plugins/openapi/components/ResponseContent.tsx +117 -117
- package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -29
- package/src/lib/plugins/openapi/context.tsx +16 -16
- package/src/lib/plugins/openapi/graphql/fragment-masking.ts +104 -104
- package/src/lib/plugins/openapi/graphql/gql.ts +95 -95
- package/src/lib/plugins/openapi/graphql/graphql.ts +835 -835
- package/src/lib/plugins/openapi/graphql/index.ts +2 -2
- package/src/lib/plugins/openapi/index.tsx +221 -221
- package/src/lib/plugins/openapi/interfaces.ts +100 -100
- package/src/lib/plugins/openapi/playground/BodyPanel.tsx +274 -274
- package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +51 -51
- package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +60 -60
- package/src/lib/plugins/openapi/playground/Headers.tsx +194 -194
- package/src/lib/plugins/openapi/playground/IdentityDialog.tsx +75 -75
- package/src/lib/plugins/openapi/playground/IdentitySelector.tsx +38 -38
- package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +45 -45
- package/src/lib/plugins/openapi/playground/PathParams.tsx +53 -53
- package/src/lib/plugins/openapi/playground/Playground.tsx +602 -602
- package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +62 -62
- package/src/lib/plugins/openapi/playground/QueryParams.tsx +151 -151
- package/src/lib/plugins/openapi/playground/RequestLoginDialog.tsx +70 -70
- package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -87
- package/src/lib/plugins/openapi/playground/createUrl.ts +25 -25
- package/src/lib/plugins/openapi/playground/fileUtils.ts +36 -36
- package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -26
- package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -91
- package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -31
- package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +29 -29
- package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +340 -340
- package/src/lib/plugins/openapi/playground/result-panel/AudioPlayer.tsx +50 -50
- package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +117 -117
- package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +355 -355
- package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +106 -106
- package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -36
- package/src/lib/plugins/openapi/playground/serializeQueryParams.ts +125 -125
- package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +23 -23
- package/src/lib/plugins/openapi/processors/injectApitogoGatewayServer.ts +36 -36
- package/src/lib/plugins/openapi/processors/removeExtensions.ts +29 -29
- package/src/lib/plugins/openapi/processors/removeParameters.ts +103 -103
- package/src/lib/plugins/openapi/processors/removePaths.ts +57 -57
- package/src/lib/plugins/openapi/processors/traverse.ts +1 -1
- package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +39 -39
- package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +189 -189
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +299 -299
- package/src/lib/plugins/openapi/schema/UnionView.tsx +132 -132
- package/src/lib/plugins/openapi/schema/union-helpers.ts +123 -123
- package/src/lib/plugins/openapi/schema/utils.ts +49 -49
- package/src/lib/plugins/openapi/state.ts +36 -36
- package/src/lib/plugins/openapi/util/buildTagCategories.ts +54 -54
- package/src/lib/plugins/openapi/util/createHttpSnippet.ts +135 -135
- package/src/lib/plugins/openapi/util/createNavigationCategory.tsx +39 -39
- package/src/lib/plugins/openapi/util/generateSchemaExample.ts +191 -191
- package/src/lib/plugins/openapi/util/getRoutes.tsx +265 -265
- package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -11
- package/src/lib/plugins/openapi/util/methodToColor.ts +27 -27
- package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -32
- package/src/lib/plugins/openapi/util/useWarmupSchema.ts +23 -23
- package/src/lib/plugins/search-inkeep/index.tsx +108 -108
- package/src/lib/plugins/search-inkeep/inkeep.ts +24 -24
- package/src/lib/plugins/search-pagefind/IndexingDialog.tsx +162 -162
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +202 -202
- package/src/lib/plugins/search-pagefind/ResultList.tsx +122 -122
- package/src/lib/plugins/search-pagefind/get-results.tsx +74 -74
- package/src/lib/plugins/search-pagefind/index.tsx +21 -21
- package/src/lib/plugins/search-pagefind/types.ts +118 -118
- package/src/lib/shiki-constants.ts +24 -24
- package/src/lib/shiki.ts +179 -179
- package/src/lib/testing/index.tsx +147 -147
- package/src/lib/ui/Accordion.tsx +55 -55
- package/src/lib/ui/ActionButton.tsx +21 -21
- package/src/lib/ui/Alert.tsx +84 -84
- package/src/lib/ui/AlertDialog.tsx +195 -195
- package/src/lib/ui/AspectRatio.tsx +5 -5
- package/src/lib/ui/Badge.tsx +48 -48
- package/src/lib/ui/Breadcrumb.tsx +115 -115
- package/src/lib/ui/Button.tsx +65 -65
- package/src/lib/ui/ButtonGroup.tsx +80 -80
- package/src/lib/ui/Callout.tsx +113 -113
- package/src/lib/ui/Card.tsx +95 -95
- package/src/lib/ui/Carousel.tsx +259 -259
- package/src/lib/ui/Checkbox.tsx +28 -28
- package/src/lib/ui/CodeBlock.tsx +92 -92
- package/src/lib/ui/CodeTabPanel.tsx +13 -13
- package/src/lib/ui/CodeTabs.tsx +161 -161
- package/src/lib/ui/Collapsible.tsx +31 -31
- package/src/lib/ui/Command.tsx +191 -191
- package/src/lib/ui/Dialog.tsx +138 -138
- package/src/lib/ui/DismissibleAlert.tsx +74 -74
- package/src/lib/ui/Drawer.tsx +121 -121
- package/src/lib/ui/DropdownMenu.tsx +254 -254
- package/src/lib/ui/EmbeddedCodeBlock.tsx +99 -99
- package/src/lib/ui/Form.tsx +176 -176
- package/src/lib/ui/Frame.tsx +81 -81
- package/src/lib/ui/HoverCard.tsx +26 -26
- package/src/lib/ui/Input.tsx +23 -23
- package/src/lib/ui/InputGroup.tsx +168 -168
- package/src/lib/ui/Item.tsx +213 -213
- package/src/lib/ui/Kbd.tsx +28 -28
- package/src/lib/ui/Label.tsx +23 -23
- package/src/lib/ui/NativeSelect.tsx +48 -48
- package/src/lib/ui/NavigationMenu.tsx +169 -169
- package/src/lib/ui/Pagination.tsx +115 -115
- package/src/lib/ui/Popover.tsx +28 -28
- package/src/lib/ui/Progress.tsx +25 -25
- package/src/lib/ui/RadioGroup.tsx +41 -41
- package/src/lib/ui/ReactComponentDoc.tsx +68 -68
- package/src/lib/ui/ScrollArea.tsx +45 -45
- package/src/lib/ui/Secret.tsx +133 -133
- package/src/lib/ui/Select.tsx +184 -184
- package/src/lib/ui/Separator.tsx +25 -25
- package/src/lib/ui/Skeleton.tsx +15 -15
- package/src/lib/ui/Slider.tsx +25 -25
- package/src/lib/ui/Stepper.tsx +8 -8
- package/src/lib/ui/Switch.tsx +26 -26
- package/src/lib/ui/SyntaxHighlight.tsx +54 -54
- package/src/lib/ui/Tabs.tsx +52 -52
- package/src/lib/ui/Textarea.tsx +22 -22
- package/src/lib/ui/Toggle.tsx +42 -42
- package/src/lib/ui/ToggleGroup.tsx +58 -58
- package/src/lib/ui/Tooltip.tsx +65 -65
- package/src/lib/ui/Value.tsx +42 -42
- package/src/lib/ui/util.tsx +8 -8
- package/src/lib/util/MdxComponents.tsx +150 -150
- package/src/lib/util/cn.ts +6 -6
- package/src/lib/util/createVariantComponent.tsx +61 -61
- package/src/lib/util/ensureArray.ts +3 -3
- package/src/lib/util/flattenAllOf.ts +72 -72
- package/src/lib/util/flattenAllOfProcessor.ts +74 -74
- package/src/lib/util/hastToJsx.tsx +67 -67
- package/src/lib/util/humanFileSize.ts +15 -15
- package/src/lib/util/invariant.ts +52 -52
- package/src/lib/util/joinUrl.ts +60 -60
- package/src/lib/util/logInit.ts +9 -9
- package/src/lib/util/objectEntries.ts +5 -5
- package/src/lib/util/os.ts +18 -18
- package/src/lib/util/pastellize.ts +25 -25
- package/src/lib/util/problemJson.ts +63 -63
- package/src/lib/util/readFrontmatter.ts +14 -14
- package/src/lib/util/renderIf.ts +4 -4
- package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -18
- package/src/lib/util/slugify.ts +21 -21
- package/src/lib/util/syncZustandState.ts +22 -22
- package/src/lib/util/traverse.ts +70 -70
- package/src/lib/util/types.ts +7 -7
- package/src/lib/util/url.ts +18 -18
- package/src/lib/util/useCopyToClipboard.ts +17 -17
- package/src/lib/util/useExposedProps.tsx +27 -27
- package/src/lib/util/useIsomorphicLayoutEffect.ts +6 -6
- package/src/lib/util/useLatest.ts +18 -18
- package/src/lib/util/useOnScreen.ts +34 -34
- package/src/lib/util/useScrollToAnchor.ts +75 -75
- package/src/lib/util/useScrollToTop.ts +18 -18
- package/src/types.d.ts +66 -66
- package/src/vite/api/SchemaManager.ts +371 -371
- package/src/vite/api/schema-codegen.ts +163 -163
- package/src/vite/build.ts +237 -237
- package/src/vite/config.ts +273 -273
- package/src/vite/css/collect.ts +42 -42
- package/src/vite/css/plugin.ts +105 -105
- package/src/vite/debug.ts +18 -18
- package/src/vite/dev-portal-env.ts +29 -29
- package/src/vite/dev-server.ts +294 -294
- package/src/vite/html.ts +52 -52
- package/src/vite/index.ts +2 -2
- package/src/vite/llms.ts +99 -99
- package/src/vite/mdx/rehype-extract-toc-with-jsx-export.ts +19 -19
- package/src/vite/mdx/rehype-extract-toc-with-jsx.ts +70 -70
- package/src/vite/mdx/remark-code-tabs.ts +47 -47
- package/src/vite/mdx/remark-inject-filepath.ts +13 -13
- package/src/vite/mdx/remark-last-modified.ts +103 -103
- package/src/vite/mdx/remark-link-rewrite.ts +23 -23
- package/src/vite/mdx/remark-normalize-image-url.ts +15 -15
- package/src/vite/mdx/remark-static-generation.ts +149 -149
- package/src/vite/mdx/utils.ts +32 -32
- package/src/vite/output.ts +261 -261
- package/src/vite/package-root.ts +12 -12
- package/src/vite/pagefind-dev-index.ts +100 -100
- package/src/vite/pagefind-dev-stub.ts +17 -17
- package/src/vite/plugin-api-keys.ts +55 -55
- package/src/vite/plugin-api.ts +328 -328
- package/src/vite/plugin-auth.ts +41 -41
- package/src/vite/plugin-component.ts +45 -45
- package/src/vite/plugin-config-reload.ts +47 -47
- package/src/vite/plugin-config.ts +131 -131
- package/src/vite/plugin-custom-pages.ts +36 -36
- package/src/vite/plugin-doc-metadata.ts +45 -45
- package/src/vite/plugin-docs.ts +205 -205
- package/src/vite/plugin-local-manifest.ts +100 -100
- package/src/vite/plugin-markdown-export.ts +214 -214
- package/src/vite/plugin-mdx.ts +149 -149
- package/src/vite/plugin-metadata.ts +30 -30
- package/src/vite/plugin-modules.ts +188 -188
- package/src/vite/plugin-navigation.ts +106 -106
- package/src/vite/plugin-offroot-resolve.ts +67 -67
- package/src/vite/plugin-search.ts +59 -59
- package/src/vite/plugin-shiki-register.ts +97 -97
- package/src/vite/plugin-theme.ts +458 -458
- package/src/vite/plugin.ts +48 -48
- package/src/vite/prerender/prerender.ts +242 -242
- package/src/vite/prerender/utils.ts +76 -76
- package/src/vite/prerender/worker.ts +118 -118
- package/src/vite/reporter.ts +34 -34
- package/src/vite/shadcn-registry.ts +48 -48
- package/src/vite/sitemap.ts +78 -78
- package/src/vite/ssr-templates/cloudflare.ts +19 -19
- package/src/vite/ssr-templates/node.ts +25 -25
- package/src/vite/ssr-templates/vercel.ts +22 -22
- package/src/vite/watch-ignore.ts +70 -70
- package/src/vite/zuplo.ts +30 -30
- package/src/vite-env.d.ts +6 -6
- package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -168
- package/src/zuplo/enrich-with-zuplo.ts +256 -256
- package/src/zuplo/policy-types.ts +46 -46
- package/src/zuplo/with-zuplo-processors.ts +36 -36
- package/src/zuplo/with-zuplo.ts +14 -14
- package/dist/declarations/cli/platform/client/deploy-server.d.ts +0 -16
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Authentication
|
|
3
|
-
sidebar_icon: shield-check
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
API products on APItoGo use **`dev-portal`** authentication: the static site delegates sign-in to
|
|
7
|
-
the provisioned portal API; OIDC client secrets stay on the backend.
|
|
8
|
-
|
|
9
|
-
For docs-only sites that embed a SPA identity provider directly in the browser, see
|
|
10
|
-
[SPA providers (advanced)](#spa-providers-advanced).
|
|
11
|
-
|
|
12
|
-
## Dev portal (recommended)
|
|
13
|
-
|
|
14
|
-
Set authentication in `apitogo.config.json` (enabled by default on new scaffolds):
|
|
15
|
-
|
|
16
|
-
```json
|
|
17
|
-
{
|
|
18
|
-
"authentication": {
|
|
19
|
-
"enabled": true,
|
|
20
|
-
"type": "dev-portal",
|
|
21
|
-
"redirectToAfterSignIn": "/account/dashboard",
|
|
22
|
-
"redirectToAfterSignUp": "/account/dashboard"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Backend API URL (`npx apitogo deploy` writes this to `.env` after the portal backend is
|
|
28
|
-
provisioned):
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
VITE_APITOGO_AUTHENTICATION_API_BASE_URL=https://your-dev-portal-api.example.com
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
You do not need to enter this URL in `npx apitogo config`. Or set `authentication.apiBaseUrl` in
|
|
35
|
-
JSON / `APITOGO_CONFIG_AUTHENTICATION__API_BASE_URL` in `.env` manually.
|
|
36
|
-
|
|
37
|
-
### Local demo mode
|
|
38
|
-
|
|
39
|
-
In development (`npx apitogo run`), `demoMode` is on by default when the user panel is enabled. You
|
|
40
|
-
do not need a backend URL or OIDC to explore account pages. Sign in at `/login` with:
|
|
41
|
-
|
|
42
|
-
```text
|
|
43
|
-
demo@apitogo.local / password
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Disable with `APITOGO_CONFIG_DEMO_MODE=false` or `"demoMode": false` in JSON. Demo mode is never
|
|
47
|
-
active in production builds.
|
|
48
|
-
|
|
49
|
-
When demo is off and the backend URL is a placeholder, the account area explains that sign-in
|
|
50
|
-
unlocks after publish. Docs and API reference stay public. Plans on `/pricing` come from
|
|
51
|
-
`apitogo.config.json` (see [Manifest](./manifest.md)).
|
|
52
|
-
|
|
53
|
-
### Config files
|
|
54
|
-
|
|
55
|
-
| Concern | File |
|
|
56
|
-
| --------------------------------------- | ------------------------------------------------------------ |
|
|
57
|
-
| Site, plans, modules, branding, backend | `apitogo.config.json` (+ `.env` — [Manifest](./manifest.md)) |
|
|
58
|
-
| OIDC and Stripe for publish | `.env` via `APITOGO_CONFIG_AUTHENTICATION__*` |
|
|
59
|
-
|
|
60
|
-
### Production OIDC
|
|
61
|
-
|
|
62
|
-
Register one OIDC app with redirect URI `https://{backend}/signin-oidc` (MCP returns
|
|
63
|
-
`manualSteps.oidcRedirectUri` after publish). The frontend uses cookie sessions via
|
|
64
|
-
`credentials: "include"` on `/api/v1/auth/me`.
|
|
65
|
-
|
|
66
|
-
Publish secrets (site `.env`, never commit):
|
|
67
|
-
|
|
68
|
-
```sh
|
|
69
|
-
APITOGO_CONFIG_AUTHENTICATION__OIDC__AUTHORITY=https://login.example.com
|
|
70
|
-
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_ID=your-client-id
|
|
71
|
-
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_SECRET=your-client-secret
|
|
72
|
-
APITOGO_CONFIG_AUTHENTICATION__STRIPE__SECRET_KEY=sk_test_...
|
|
73
|
-
APITOGO_CONFIG_AUTHENTICATION__STRIPE__WEBHOOK_SECRET=whsec_...
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Stripe is required only when you have **paid** gateway plans. Full flow:
|
|
77
|
-
[MCP go-live](../mcp/go-live.md).
|
|
78
|
-
|
|
79
|
-
Auth mode for end users (`native` | `oidc` | `nativeAndOidc`) is shaped via MCP /
|
|
80
|
-
`update_dev_portal_manifest`.
|
|
81
|
-
|
|
82
|
-
## Protected routes
|
|
83
|
-
|
|
84
|
-
After authentication is configured, protect routes with patterns or callbacks:
|
|
85
|
-
|
|
86
|
-
```json
|
|
87
|
-
{
|
|
88
|
-
"protectedRoutes": ["/admin/*", "/settings", "/api/*"]
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Or in TSX for custom authorization — see [Protected routes](./protected-routes.md).
|
|
93
|
-
|
|
94
|
-
## SPA providers (advanced)
|
|
95
|
-
|
|
96
|
-
:::caution{title="Portal products use dev-portal"}
|
|
97
|
-
|
|
98
|
-
SPA providers (Auth0, Clerk, OpenID, Supabase, Azure B2C, Firebase, PingFederate) run the OAuth
|
|
99
|
-
callback in the browser (`/oauth/callback`). Prefer **`dev-portal`** for APItoGo-hosted API
|
|
100
|
-
products. Use SPA providers only for standalone docs sites that talk to the IdP directly.
|
|
101
|
-
|
|
102
|
-
:::
|
|
103
|
-
|
|
104
|
-
Configure `authentication` in JSON or TSX. Provider-specific pages:
|
|
105
|
-
|
|
106
|
-
- [Auth0](./authentication-auth0.md)
|
|
107
|
-
- [Clerk](./authentication-clerk.md)
|
|
108
|
-
- [Azure AD / B2C](./authentication-azure-ad.md)
|
|
109
|
-
- [PingFederate](./authentication-pingfederate.md)
|
|
110
|
-
- [Supabase](./authentication-supabase.md)
|
|
111
|
-
- [Firebase](./authentication-firebase.md)
|
|
112
|
-
|
|
113
|
-
Typical SPA callback setup:
|
|
114
|
-
|
|
115
|
-
- Production: `https://your-site.com/oauth/callback`
|
|
116
|
-
- Local: `http://localhost:3000/oauth/callback`
|
|
117
|
-
- Add your site hostname to allowed CORS origins in the IdP
|
|
118
|
-
|
|
119
|
-
### Auth0 (SPA example)
|
|
120
|
-
|
|
121
|
-
```ts
|
|
122
|
-
authentication: {
|
|
123
|
-
type: "auth0",
|
|
124
|
-
domain: "yourdomain.us.auth0.com",
|
|
125
|
-
clientId: "<your-auth0-clientId>",
|
|
126
|
-
scopes: ["openid", "profile", "email"],
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
### Clerk (SPA example)
|
|
131
|
-
|
|
132
|
-
```ts
|
|
133
|
-
authentication: {
|
|
134
|
-
type: "clerk",
|
|
135
|
-
clerkPubKey: "<your-clerk-publishable-key>",
|
|
136
|
-
jwtTemplateName: "dev-portal", // optional
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### OpenID (SPA example)
|
|
141
|
-
|
|
142
|
-
```ts
|
|
143
|
-
authentication: {
|
|
144
|
-
type: "openid",
|
|
145
|
-
clientId: "<your-client-id>",
|
|
146
|
-
issuer: "<the-issuer-url>",
|
|
147
|
-
scopes: ["openid", "profile", "email"],
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Supabase / Azure B2C
|
|
152
|
-
|
|
153
|
-
See the provider pages for full options. Default scopes are `openid`, `profile`, and `email` unless
|
|
154
|
-
you override them.
|
|
155
|
-
|
|
156
|
-
## User profile fields
|
|
157
|
-
|
|
158
|
-
After SPA login, the profile comes from the provider UserInfo endpoint: `name`, `email`, `picture`,
|
|
159
|
-
`email_verified`. Missing fields are left blank. Dev-portal sessions use the portal API instead.
|
|
1
|
+
---
|
|
2
|
+
title: Authentication
|
|
3
|
+
sidebar_icon: shield-check
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
API products on APItoGo use **`dev-portal`** authentication: the static site delegates sign-in to
|
|
7
|
+
the provisioned portal API; OIDC client secrets stay on the backend.
|
|
8
|
+
|
|
9
|
+
For docs-only sites that embed a SPA identity provider directly in the browser, see
|
|
10
|
+
[SPA providers (advanced)](#spa-providers-advanced).
|
|
11
|
+
|
|
12
|
+
## Dev portal (recommended)
|
|
13
|
+
|
|
14
|
+
Set authentication in `apitogo.config.json` (enabled by default on new scaffolds):
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"authentication": {
|
|
19
|
+
"enabled": true,
|
|
20
|
+
"type": "dev-portal",
|
|
21
|
+
"redirectToAfterSignIn": "/account/dashboard",
|
|
22
|
+
"redirectToAfterSignUp": "/account/dashboard"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Backend API URL (`npx apitogo deploy` writes this to `.env` after the portal backend is
|
|
28
|
+
provisioned):
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
VITE_APITOGO_AUTHENTICATION_API_BASE_URL=https://your-dev-portal-api.example.com
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
You do not need to enter this URL in `npx apitogo config`. Or set `authentication.apiBaseUrl` in
|
|
35
|
+
JSON / `APITOGO_CONFIG_AUTHENTICATION__API_BASE_URL` in `.env` manually.
|
|
36
|
+
|
|
37
|
+
### Local demo mode
|
|
38
|
+
|
|
39
|
+
In development (`npx apitogo run`), `demoMode` is on by default when the user panel is enabled. You
|
|
40
|
+
do not need a backend URL or OIDC to explore account pages. Sign in at `/login` with:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
demo@apitogo.local / password
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Disable with `APITOGO_CONFIG_DEMO_MODE=false` or `"demoMode": false` in JSON. Demo mode is never
|
|
47
|
+
active in production builds.
|
|
48
|
+
|
|
49
|
+
When demo is off and the backend URL is a placeholder, the account area explains that sign-in
|
|
50
|
+
unlocks after publish. Docs and API reference stay public. Plans on `/pricing` come from
|
|
51
|
+
`apitogo.config.json` (see [Manifest](./manifest.md)).
|
|
52
|
+
|
|
53
|
+
### Config files
|
|
54
|
+
|
|
55
|
+
| Concern | File |
|
|
56
|
+
| --------------------------------------- | ------------------------------------------------------------ |
|
|
57
|
+
| Site, plans, modules, branding, backend | `apitogo.config.json` (+ `.env` — [Manifest](./manifest.md)) |
|
|
58
|
+
| OIDC and Stripe for publish | `.env` via `APITOGO_CONFIG_AUTHENTICATION__*` |
|
|
59
|
+
|
|
60
|
+
### Production OIDC
|
|
61
|
+
|
|
62
|
+
Register one OIDC app with redirect URI `https://{backend}/signin-oidc` (MCP returns
|
|
63
|
+
`manualSteps.oidcRedirectUri` after publish). The frontend uses cookie sessions via
|
|
64
|
+
`credentials: "include"` on `/api/v1/auth/me`.
|
|
65
|
+
|
|
66
|
+
Publish secrets (site `.env`, never commit):
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__AUTHORITY=https://login.example.com
|
|
70
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_ID=your-client-id
|
|
71
|
+
APITOGO_CONFIG_AUTHENTICATION__OIDC__CLIENT_SECRET=your-client-secret
|
|
72
|
+
APITOGO_CONFIG_AUTHENTICATION__STRIPE__SECRET_KEY=sk_test_...
|
|
73
|
+
APITOGO_CONFIG_AUTHENTICATION__STRIPE__WEBHOOK_SECRET=whsec_...
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Stripe is required only when you have **paid** gateway plans. Full flow:
|
|
77
|
+
[MCP go-live](../mcp/go-live.md).
|
|
78
|
+
|
|
79
|
+
Auth mode for end users (`native` | `oidc` | `nativeAndOidc`) is shaped via MCP /
|
|
80
|
+
`update_dev_portal_manifest`.
|
|
81
|
+
|
|
82
|
+
## Protected routes
|
|
83
|
+
|
|
84
|
+
After authentication is configured, protect routes with patterns or callbacks:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"protectedRoutes": ["/admin/*", "/settings", "/api/*"]
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Or in TSX for custom authorization — see [Protected routes](./protected-routes.md).
|
|
93
|
+
|
|
94
|
+
## SPA providers (advanced)
|
|
95
|
+
|
|
96
|
+
:::caution{title="Portal products use dev-portal"}
|
|
97
|
+
|
|
98
|
+
SPA providers (Auth0, Clerk, OpenID, Supabase, Azure B2C, Firebase, PingFederate) run the OAuth
|
|
99
|
+
callback in the browser (`/oauth/callback`). Prefer **`dev-portal`** for APItoGo-hosted API
|
|
100
|
+
products. Use SPA providers only for standalone docs sites that talk to the IdP directly.
|
|
101
|
+
|
|
102
|
+
:::
|
|
103
|
+
|
|
104
|
+
Configure `authentication` in JSON or TSX. Provider-specific pages:
|
|
105
|
+
|
|
106
|
+
- [Auth0](./authentication-auth0.md)
|
|
107
|
+
- [Clerk](./authentication-clerk.md)
|
|
108
|
+
- [Azure AD / B2C](./authentication-azure-ad.md)
|
|
109
|
+
- [PingFederate](./authentication-pingfederate.md)
|
|
110
|
+
- [Supabase](./authentication-supabase.md)
|
|
111
|
+
- [Firebase](./authentication-firebase.md)
|
|
112
|
+
|
|
113
|
+
Typical SPA callback setup:
|
|
114
|
+
|
|
115
|
+
- Production: `https://your-site.com/oauth/callback`
|
|
116
|
+
- Local: `http://localhost:3000/oauth/callback`
|
|
117
|
+
- Add your site hostname to allowed CORS origins in the IdP
|
|
118
|
+
|
|
119
|
+
### Auth0 (SPA example)
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
authentication: {
|
|
123
|
+
type: "auth0",
|
|
124
|
+
domain: "yourdomain.us.auth0.com",
|
|
125
|
+
clientId: "<your-auth0-clientId>",
|
|
126
|
+
scopes: ["openid", "profile", "email"],
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Clerk (SPA example)
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
authentication: {
|
|
134
|
+
type: "clerk",
|
|
135
|
+
clerkPubKey: "<your-clerk-publishable-key>",
|
|
136
|
+
jwtTemplateName: "dev-portal", // optional
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### OpenID (SPA example)
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
authentication: {
|
|
144
|
+
type: "openid",
|
|
145
|
+
clientId: "<your-client-id>",
|
|
146
|
+
issuer: "<the-issuer-url>",
|
|
147
|
+
scopes: ["openid", "profile", "email"],
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Supabase / Azure B2C
|
|
152
|
+
|
|
153
|
+
See the provider pages for full options. Default scopes are `openid`, `profile`, and `email` unless
|
|
154
|
+
you override them.
|
|
155
|
+
|
|
156
|
+
## User profile fields
|
|
157
|
+
|
|
158
|
+
After SPA login, the profile comes from the provider UserInfo endpoint: `name`, `email`, `picture`,
|
|
159
|
+
`email_verified`. Missing fields are left blank. Dev-portal sessions use the portal API instead.
|
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
---
|
|
2
|
-
sidebar_icon: pickaxe
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Build Configuration
|
|
6
|
-
|
|
7
|
-
The `apitogo.build.ts` file allows you to configure build-time settings and processors for your
|
|
8
|
-
APIToGo project. This file is executed during the build process and can be used to transform your
|
|
9
|
-
API schemas before they are used in the documentation.
|
|
10
|
-
|
|
11
|
-
:::tip{title="Security Note"}
|
|
12
|
-
|
|
13
|
-
Unlike your site config which runs in both client and server environments, `apitogo.build.ts` runs
|
|
14
|
-
exclusively in Node.js during build time. This means:
|
|
15
|
-
|
|
16
|
-
- Sensitive operations (like API calls, file system access) can safely be performed
|
|
17
|
-
- No build-time code or data is included in the final client bundle
|
|
18
|
-
- Environment variables and secrets can be safely accessed
|
|
19
|
-
- No browser-specific APIs are available
|
|
20
|
-
|
|
21
|
-
:::
|
|
22
|
-
|
|
23
|
-
## File Location
|
|
24
|
-
|
|
25
|
-
Create a file named `apitogo.build.ts` in the root of your project:
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
your-project/
|
|
29
|
-
├── apitogo.config.json
|
|
30
|
-
├── apitogo.build.ts # <-- Add this file
|
|
31
|
-
└── ...
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Basic Configuration
|
|
35
|
-
|
|
36
|
-
Here's a basic example of a build configuration file:
|
|
37
|
-
|
|
38
|
-
```ts
|
|
39
|
-
import type { ApitogoBuildConfig } from "@lukoweb/apitogo";
|
|
40
|
-
|
|
41
|
-
const buildConfig: ApitogoBuildConfig = {
|
|
42
|
-
processors: [
|
|
43
|
-
async ({ schema }) => {
|
|
44
|
-
// Transform your schema here
|
|
45
|
-
return schema;
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
remarkPlugins: [],
|
|
49
|
-
rehypePlugins: [],
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export default buildConfig;
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Configuration Options
|
|
56
|
-
|
|
57
|
-
### `processors`
|
|
58
|
-
|
|
59
|
-
An array of functions that transform your API schemas. Each processor receives:
|
|
60
|
-
|
|
61
|
-
- `file`: The path to the schema file
|
|
62
|
-
- `schema`: The OpenAPI schema object
|
|
63
|
-
- `params`: Query parameters extracted from the input string (see
|
|
64
|
-
[Splitting Schemas](../guides/processors#using-query-parameters-to-split-schemas))
|
|
65
|
-
- `dereference`: A function to dereference the schema
|
|
66
|
-
|
|
67
|
-
Processors are executed in order, and each processor receives the output of the previous one.
|
|
68
|
-
|
|
69
|
-
:::tip
|
|
70
|
-
|
|
71
|
-
For detailed information about processors and available built-in processors, see the
|
|
72
|
-
[Schema Processors](../guides/processors) guide.
|
|
73
|
-
|
|
74
|
-
:::
|
|
75
|
-
|
|
76
|
-
Here's a simple example that adds a description to all operations:
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
async function addDescriptionProcessor({ schema }) {
|
|
80
|
-
if (!schema.paths) return schema;
|
|
81
|
-
|
|
82
|
-
// Add a description to all operations
|
|
83
|
-
Object.values(schema.paths).forEach((path) => {
|
|
84
|
-
Object.values(path).forEach((operation) => {
|
|
85
|
-
if (typeof operation === "object" && operation) {
|
|
86
|
-
operation.description = "This is a public API endpoint";
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
return schema;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export default {
|
|
95
|
-
processors: [addDescriptionProcessor],
|
|
96
|
-
};
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### `remarkPlugins`
|
|
100
|
-
|
|
101
|
-
An array of [Remark](https://github.com/remarkjs/remark) plugins to transform Markdown content.
|
|
102
|
-
These plugins run before the content is converted to HTML.
|
|
103
|
-
|
|
104
|
-
```ts
|
|
105
|
-
import remarkContributors from "remark-contributors";
|
|
106
|
-
|
|
107
|
-
export default {
|
|
108
|
-
remarkPlugins: [remarkContributors],
|
|
109
|
-
};
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### `rehypePlugins`
|
|
113
|
-
|
|
114
|
-
An array of [Rehype](https://github.com/rehypejs/rehype) plugins to transform HTML content. These
|
|
115
|
-
plugins run after Markdown is converted to HTML.
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
import rehypeKatex from "rehype-katex";
|
|
119
|
-
|
|
120
|
-
export default {
|
|
121
|
-
rehypePlugins: [rehypeKatex],
|
|
122
|
-
};
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### `prerender`
|
|
126
|
-
|
|
127
|
-
Configuration for the prerendering process that generates static HTML pages during build time.
|
|
128
|
-
|
|
129
|
-
- `workers`: Number of parallel workers to use for prerendering. Defaults to 80% of available CPU
|
|
130
|
-
cores.
|
|
131
|
-
|
|
132
|
-
```ts
|
|
133
|
-
import os from "node:os";
|
|
134
|
-
|
|
135
|
-
export default {
|
|
136
|
-
prerender: {
|
|
137
|
-
workers: 4, // Fixed number of workers
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
// Or use a percentage of available CPU cores
|
|
142
|
-
export default {
|
|
143
|
-
prerender: {
|
|
144
|
-
workers: Math.floor(os.cpus().length * 0.75), // Use 75% of available cores
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
```
|
|
1
|
+
---
|
|
2
|
+
sidebar_icon: pickaxe
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Build Configuration
|
|
6
|
+
|
|
7
|
+
The `apitogo.build.ts` file allows you to configure build-time settings and processors for your
|
|
8
|
+
APIToGo project. This file is executed during the build process and can be used to transform your
|
|
9
|
+
API schemas before they are used in the documentation.
|
|
10
|
+
|
|
11
|
+
:::tip{title="Security Note"}
|
|
12
|
+
|
|
13
|
+
Unlike your site config which runs in both client and server environments, `apitogo.build.ts` runs
|
|
14
|
+
exclusively in Node.js during build time. This means:
|
|
15
|
+
|
|
16
|
+
- Sensitive operations (like API calls, file system access) can safely be performed
|
|
17
|
+
- No build-time code or data is included in the final client bundle
|
|
18
|
+
- Environment variables and secrets can be safely accessed
|
|
19
|
+
- No browser-specific APIs are available
|
|
20
|
+
|
|
21
|
+
:::
|
|
22
|
+
|
|
23
|
+
## File Location
|
|
24
|
+
|
|
25
|
+
Create a file named `apitogo.build.ts` in the root of your project:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
your-project/
|
|
29
|
+
├── apitogo.config.json
|
|
30
|
+
├── apitogo.build.ts # <-- Add this file
|
|
31
|
+
└── ...
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Basic Configuration
|
|
35
|
+
|
|
36
|
+
Here's a basic example of a build configuration file:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import type { ApitogoBuildConfig } from "@lukoweb/apitogo";
|
|
40
|
+
|
|
41
|
+
const buildConfig: ApitogoBuildConfig = {
|
|
42
|
+
processors: [
|
|
43
|
+
async ({ schema }) => {
|
|
44
|
+
// Transform your schema here
|
|
45
|
+
return schema;
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
remarkPlugins: [],
|
|
49
|
+
rehypePlugins: [],
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default buildConfig;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Configuration Options
|
|
56
|
+
|
|
57
|
+
### `processors`
|
|
58
|
+
|
|
59
|
+
An array of functions that transform your API schemas. Each processor receives:
|
|
60
|
+
|
|
61
|
+
- `file`: The path to the schema file
|
|
62
|
+
- `schema`: The OpenAPI schema object
|
|
63
|
+
- `params`: Query parameters extracted from the input string (see
|
|
64
|
+
[Splitting Schemas](../guides/processors#using-query-parameters-to-split-schemas))
|
|
65
|
+
- `dereference`: A function to dereference the schema
|
|
66
|
+
|
|
67
|
+
Processors are executed in order, and each processor receives the output of the previous one.
|
|
68
|
+
|
|
69
|
+
:::tip
|
|
70
|
+
|
|
71
|
+
For detailed information about processors and available built-in processors, see the
|
|
72
|
+
[Schema Processors](../guides/processors) guide.
|
|
73
|
+
|
|
74
|
+
:::
|
|
75
|
+
|
|
76
|
+
Here's a simple example that adds a description to all operations:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
async function addDescriptionProcessor({ schema }) {
|
|
80
|
+
if (!schema.paths) return schema;
|
|
81
|
+
|
|
82
|
+
// Add a description to all operations
|
|
83
|
+
Object.values(schema.paths).forEach((path) => {
|
|
84
|
+
Object.values(path).forEach((operation) => {
|
|
85
|
+
if (typeof operation === "object" && operation) {
|
|
86
|
+
operation.description = "This is a public API endpoint";
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return schema;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default {
|
|
95
|
+
processors: [addDescriptionProcessor],
|
|
96
|
+
};
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### `remarkPlugins`
|
|
100
|
+
|
|
101
|
+
An array of [Remark](https://github.com/remarkjs/remark) plugins to transform Markdown content.
|
|
102
|
+
These plugins run before the content is converted to HTML.
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import remarkContributors from "remark-contributors";
|
|
106
|
+
|
|
107
|
+
export default {
|
|
108
|
+
remarkPlugins: [remarkContributors],
|
|
109
|
+
};
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### `rehypePlugins`
|
|
113
|
+
|
|
114
|
+
An array of [Rehype](https://github.com/rehypejs/rehype) plugins to transform HTML content. These
|
|
115
|
+
plugins run after Markdown is converted to HTML.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import rehypeKatex from "rehype-katex";
|
|
119
|
+
|
|
120
|
+
export default {
|
|
121
|
+
rehypePlugins: [rehypeKatex],
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### `prerender`
|
|
126
|
+
|
|
127
|
+
Configuration for the prerendering process that generates static HTML pages during build time.
|
|
128
|
+
|
|
129
|
+
- `workers`: Number of parallel workers to use for prerendering. Defaults to 80% of available CPU
|
|
130
|
+
cores.
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
import os from "node:os";
|
|
134
|
+
|
|
135
|
+
export default {
|
|
136
|
+
prerender: {
|
|
137
|
+
workers: 4, // Fixed number of workers
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
// Or use a percentage of available CPU cores
|
|
142
|
+
export default {
|
|
143
|
+
prerender: {
|
|
144
|
+
workers: Math.floor(os.cpus().length * 0.75), // Use 75% of available cores
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
```
|