@eventcatalog/core 3.35.0 → 3.36.1
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/dist/analytics/analytics.cjs +1 -1
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/log-build.cjs +1 -1
- package/dist/analytics/log-build.js +3 -3
- package/dist/{chunk-LUWCWNOR.js → chunk-6D65JSOA.js} +1 -1
- package/dist/{chunk-NEWQKEP7.js → chunk-C7JCOHTI.js} +1 -1
- package/dist/chunk-D6IBLY3O.js +320 -0
- package/dist/{chunk-Y5O6SCX3.js → chunk-HDENGAZL.js} +1 -1
- package/dist/{chunk-DFLUDECO.js → chunk-UJ7DX4SA.js} +3 -3
- package/dist/{chunk-3KXCGYET.js → chunk-ULZYHF3V.js} +5 -0
- package/dist/{chunk-B2LDVIVY.js → chunk-V22QY5Q3.js} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/docs/api/01-overview.md +74 -0
- package/dist/docs/api/02-config.md +959 -0
- package/dist/docs/api/03-domain-api.md +394 -0
- package/dist/docs/api/04-service-api.md +368 -0
- package/dist/docs/api/05-command-api.md +319 -0
- package/dist/docs/api/06-event-api.md +318 -0
- package/dist/docs/api/06-query-api.md +316 -0
- package/dist/docs/api/08-channel-api.md +317 -0
- package/dist/docs/api/08-code-blocks.md +53 -0
- package/dist/docs/api/09-flow-api.md +362 -0
- package/dist/docs/api/10-entity-api.md +285 -0
- package/dist/docs/api/11-data-api.md +268 -0
- package/dist/docs/api/12-data-product-api.md +416 -0
- package/dist/docs/api/_category_.json +12 -0
- package/dist/docs/cli/channels.md +180 -0
- package/dist/docs/cli/commands.md +183 -0
- package/dist/docs/cli/custom-docs.md +78 -0
- package/dist/docs/cli/data-products.md +177 -0
- package/dist/docs/cli/data-stores.md +166 -0
- package/dist/docs/cli/diagrams.md +147 -0
- package/dist/docs/cli/domains.md +280 -0
- package/dist/docs/cli/entities.md +138 -0
- package/dist/docs/cli/events.md +186 -0
- package/dist/docs/cli/export.md +27 -0
- package/dist/docs/cli/governance.md +24 -0
- package/dist/docs/cli/import.md +26 -0
- package/dist/docs/cli/index.md +121 -0
- package/dist/docs/cli/messages.md +69 -0
- package/dist/docs/cli/queries.md +183 -0
- package/dist/docs/cli/services.md +266 -0
- package/dist/docs/cli/snapshots.md +44 -0
- package/dist/docs/cli/teams.md +75 -0
- package/dist/docs/cli/users.md +75 -0
- package/dist/docs/cli/utilities.md +43 -0
- package/dist/docs/contributing/01-overview.md +186 -0
- package/dist/docs/contributing/_category_.json +12 -0
- package/dist/docs/development/00-why-eventcatalog.md +87 -0
- package/dist/docs/development/01-fundamentals.md +34 -0
- package/dist/docs/development/01-getting-started/_category_.json +12 -0
- package/dist/docs/development/01-getting-started/configuration-overview.md +124 -0
- package/dist/docs/development/01-getting-started/develop-and-build.md +71 -0
- package/dist/docs/development/01-getting-started/installation.md +103 -0
- package/dist/docs/development/01-getting-started/project-structure.md +269 -0
- package/dist/docs/development/_category_.json +12 -0
- package/dist/docs/development/_getting-started.mdx +15 -0
- package/dist/docs/development/agent-resources/_category_.json +6 -0
- package/dist/docs/development/agent-resources/eventcatalog-skills.md +17 -0
- package/dist/docs/development/agent-resources/llms-full.md +17 -0
- package/dist/docs/development/agent-resources/llms.md +17 -0
- package/dist/docs/development/ask-your-architecture/01-intro.md +89 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +23 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +72 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +385 -0
- package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +11 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +12 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +216 -0
- package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +47 -0
- package/dist/docs/development/ask-your-architecture/04-skills/01-introduction.md +40 -0
- package/dist/docs/development/ask-your-architecture/04-skills/02-installation.md +60 -0
- package/dist/docs/development/ask-your-architecture/04-skills/_category_.json +11 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/01-introduction.md +63 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/02-slack-app-setup.md +154 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/03-installation.md +169 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/04-deployment.md +236 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/05-usage.md +140 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/06-troubleshooting.md +268 -0
- package/dist/docs/development/ask-your-architecture/05-slack-integration/_category_.json +12 -0
- package/dist/docs/development/ask-your-architecture/_category_.json +12 -0
- package/dist/docs/development/authentication/01-introduction.md +78 -0
- package/dist/docs/development/authentication/02-enabling-authentication.md +152 -0
- package/dist/docs/development/authentication/07-rbac-middleware.md +269 -0
- package/dist/docs/development/authentication/_category_.json +11 -0
- package/dist/docs/development/authentication/providers/03-setting-up-github.md +83 -0
- package/dist/docs/development/authentication/providers/03a-setting-up-google.md +92 -0
- package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +100 -0
- package/dist/docs/development/authentication/providers/05-setting-up-okta.md +105 -0
- package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +106 -0
- package/dist/docs/development/authentication/providers/_category_.json +11 -0
- package/dist/docs/development/bring-your-own-documentation/01-introduction.md +48 -0
- package/dist/docs/development/bring-your-own-documentation/_category_.json +12 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +60 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +207 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +46 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +45 -0
- package/dist/docs/development/bring-your-own-documentation/custom-pages/_category_.json +11 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +34 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +143 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +68 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +45 -0
- package/dist/docs/development/bring-your-own-documentation/resource-docs/_category_.json +11 -0
- package/dist/docs/development/components/04-snippets.md +134 -0
- package/dist/docs/development/components/05-using-components.md +67 -0
- package/dist/docs/development/components/07-resource-references.md +136 -0
- package/dist/docs/development/components/_category_.json +12 -0
- package/dist/docs/development/components/components/01-accordian.md +41 -0
- package/dist/docs/development/components/components/02-accordian-group.md +57 -0
- package/dist/docs/development/components/components/03-admonitions.md +43 -0
- package/dist/docs/development/components/components/04-attachments.md +56 -0
- package/dist/docs/development/components/components/05-channel-information.md +29 -0
- package/dist/docs/development/components/components/06-design.md +66 -0
- package/dist/docs/development/components/components/07-entitymap.md +71 -0
- package/dist/docs/development/components/components/08-flow.md +46 -0
- package/dist/docs/development/components/components/09-link.md +32 -0
- package/dist/docs/development/components/components/10-mermaid-file-loader.md +63 -0
- package/dist/docs/development/components/components/11-message-table.md +43 -0
- package/dist/docs/development/components/components/12-nodegraph.md +167 -0
- package/dist/docs/development/components/components/13-openapi.md +55 -0
- package/dist/docs/development/components/components/14-prompt.md +69 -0
- package/dist/docs/development/components/components/15-remote-schema.md +174 -0
- package/dist/docs/development/components/components/16-resource-group-table.md +86 -0
- package/dist/docs/development/components/components/17-resource-link.md +57 -0
- package/dist/docs/development/components/components/18-schema.md +44 -0
- package/dist/docs/development/components/components/19-schema-viewer.md +69 -0
- package/dist/docs/development/components/components/20-steps.md +83 -0
- package/dist/docs/development/components/components/21-tabs.md +55 -0
- package/dist/docs/development/components/components/22-tiles.md +53 -0
- package/dist/docs/development/components/components/23-visibility.md +61 -0
- package/dist/docs/development/components/components/_category_.json +12 -0
- package/dist/docs/development/components/diagram-syntax/01-mermaid.md +218 -0
- package/dist/docs/development/components/diagram-syntax/02-plantuml.md +140 -0
- package/dist/docs/development/components/diagram-syntax/03-structurizr.md +24 -0
- package/dist/docs/development/components/diagram-syntax/04-icepanel.md +75 -0
- package/dist/docs/development/components/diagram-syntax/_category_.json +12 -0
- package/dist/docs/development/components/external-diagram-embeds/01-miro.md +64 -0
- package/dist/docs/development/components/external-diagram-embeds/02-lucid.md +47 -0
- package/dist/docs/development/components/external-diagram-embeds/03-drawio.md +46 -0
- package/dist/docs/development/components/external-diagram-embeds/04-figjam.md +44 -0
- package/dist/docs/development/components/external-diagram-embeds/05-icepanel.md +68 -0
- package/dist/docs/development/components/external-diagram-embeds/_category_.json +12 -0
- package/dist/docs/development/customization/01-customize-landing-page.md +155 -0
- package/dist/docs/development/customization/02-themes.md +429 -0
- package/dist/docs/development/customization/03-search.md +79 -0
- package/dist/docs/development/customization/06-customize-tables.md +194 -0
- package/dist/docs/development/customization/_category_.json +12 -0
- package/dist/docs/development/customization/custom-components/00-what-is-mdx.md +73 -0
- package/dist/docs/development/customization/custom-components/01-introduction.md +28 -0
- package/dist/docs/development/customization/custom-components/02-adding-components.md +145 -0
- package/dist/docs/development/customization/custom-components/03-component-styling.md +27 -0
- package/dist/docs/development/customization/custom-components/04-javascript-components.md +32 -0
- package/dist/docs/development/customization/custom-components/_category_.json +11 -0
- package/dist/docs/development/customization/customize-sidebars/00-application-sidebar.md +45 -0
- package/dist/docs/development/customization/customize-sidebars/01-documentation-sidebar.md +187 -0
- package/dist/docs/development/customization/customize-sidebars/_category_.json +11 -0
- package/dist/docs/development/customization/customize-visualizer/00-visualizer-nodes.md +50 -0
- package/dist/docs/development/customization/customize-visualizer/_category_.json +11 -0
- package/dist/docs/development/deployment/_category_.json +12 -0
- package/dist/docs/development/deployment/build-and-deploy.md +71 -0
- package/dist/docs/development/deployment/build-ssr-mode.md +50 -0
- package/dist/docs/development/deployment/deployment-workflows.md +43 -0
- package/dist/docs/development/deployment/hosting-options.md +112 -0
- package/dist/docs/development/deployment/licenses.md +50 -0
- package/dist/docs/development/design/_category_.json +12 -0
- package/dist/docs/development/design/embed-designs-into-eventcatalog.md +29 -0
- package/dist/docs/development/design/further-reading.md +19 -0
- package/dist/docs/development/design/import-resources.md +27 -0
- package/dist/docs/development/design/intro.md +22 -0
- package/dist/docs/development/developer-tools/_category_.json +12 -0
- package/dist/docs/development/developer-tools/eventcatalog-linter.md +597 -0
- package/dist/docs/development/developer-tools/github-action.md +147 -0
- package/dist/docs/development/developer-tools/llms.txt.md +55 -0
- package/dist/docs/development/developer-tools/schemas.txt.md +42 -0
- package/dist/docs/development/governance/_category_.json +6 -0
- package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +62 -0
- package/dist/docs/development/governance/architecture-change-detection/02-configuration.md +134 -0
- package/dist/docs/development/governance/architecture-change-detection/03-recipes.md +309 -0
- package/dist/docs/development/governance/architecture-change-detection/04-webhooks.md +187 -0
- package/dist/docs/development/governance/architecture-change-detection/05-ci-cd.md +121 -0
- package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +162 -0
- package/dist/docs/development/governance/architecture-change-detection/_category_.json +6 -0
- package/dist/docs/development/guides/12-customize-your-sidebar.md +12 -0
- package/dist/docs/development/guides/99-adding-analytics.md +138 -0
- package/dist/docs/development/guides/_category_.json +11 -0
- package/dist/docs/development/guides/changelogs/01-introduction.md +33 -0
- package/dist/docs/development/guides/changelogs/02-adding-changelogs.md +94 -0
- package/dist/docs/development/guides/changelogs/03-automated-changelogs.md +44 -0
- package/dist/docs/development/guides/changelogs/_category_.json +11 -0
- package/dist/docs/development/guides/channels/01-introduction.md +111 -0
- package/dist/docs/development/guides/channels/02-adding-channels.md +198 -0
- package/dist/docs/development/guides/channels/04-adding-messages-to-services.md +292 -0
- package/dist/docs/development/guides/channels/09-configuration +39 -0
- package/dist/docs/development/guides/channels/_category_.json +11 -0
- package/dist/docs/development/guides/channels/ownership-and-components/01-owners.md +44 -0
- package/dist/docs/development/guides/channels/ownership-and-components/02-components.md +16 -0
- package/dist/docs/development/guides/channels/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/01-versioning.md +31 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/02-changelog.md +56 -0
- package/dist/docs/development/guides/channels/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/guides/data/01-introduction.md +34 -0
- package/dist/docs/development/guides/data/02-adding-data.md +86 -0
- package/dist/docs/development/guides/data/03a-adding-schemas-to-data-stores.md +73 -0
- package/dist/docs/development/guides/data/_category_.json +11 -0
- package/dist/docs/development/guides/data/ownership-and-components/01-owners.md +45 -0
- package/dist/docs/development/guides/data/ownership-and-components/02-components.md +17 -0
- package/dist/docs/development/guides/data/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/01-versioning.md +32 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/02-changelog.md +57 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/03-deprecating.md +71 -0
- package/dist/docs/development/guides/data/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/guides/data-products/01-introduction.md +116 -0
- package/dist/docs/development/guides/data-products/02-adding-data-products.md +157 -0
- package/dist/docs/development/guides/data-products/03-inputs-and-outputs.md +128 -0
- package/dist/docs/development/guides/data-products/04-contracts.md +102 -0
- package/dist/docs/development/guides/data-products/05-versioning.md +240 -0
- package/dist/docs/development/guides/data-products/06-adding-to-domains.md +52 -0
- package/dist/docs/development/guides/data-products/_category_.json +11 -0
- package/dist/docs/development/guides/diagrams/01-introduction.md +78 -0
- package/dist/docs/development/guides/diagrams/02-creating-diagrams.md +195 -0
- package/dist/docs/development/guides/diagrams/03-referencing-diagrams.md +195 -0
- package/dist/docs/development/guides/diagrams/04-versioning-diagrams.md +204 -0
- package/dist/docs/development/guides/diagrams/05-comparing-diagrams.md +145 -0
- package/dist/docs/development/guides/diagrams/06-diagrams-with-llms.md +165 -0
- package/dist/docs/development/guides/diagrams/_category_.json +10 -0
- package/dist/docs/development/guides/domains/01-introduction.md +22 -0
- package/dist/docs/development/guides/domains/02-creating-domains/02-adding-domains.md +108 -0
- package/dist/docs/development/guides/domains/02-creating-domains/02a-subdomains.md +84 -0
- package/dist/docs/development/guides/domains/02-creating-domains/03-adding-services-to-domains.md +90 -0
- package/dist/docs/development/guides/domains/02-creating-domains/04-adding-messages-to-domains.md +107 -0
- package/dist/docs/development/guides/domains/02-creating-domains/05-adding-data-products-to-domains.md +105 -0
- package/dist/docs/development/guides/domains/02-creating-domains/_category_.json +11 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/01-owners.md +36 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +75 -0
- package/dist/docs/development/guides/domains/03-ownership-and-language/_category_.json +10 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/01-versioning.md +40 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/02-changelog.md +53 -0
- package/dist/docs/development/guides/domains/04-versioning-and-changelogs/_category_.json +10 -0
- package/dist/docs/development/guides/domains/05-entities/01-introduction.md +24 -0
- package/dist/docs/development/guides/domains/05-entities/02-adding-entities.md +157 -0
- package/dist/docs/development/guides/domains/05-entities/03-adding-entities-to-domains.md +30 -0
- package/dist/docs/development/guides/domains/05-entities/04-domain-entity-map.md +134 -0
- package/dist/docs/development/guides/domains/05-entities/_category_.json +11 -0
- package/dist/docs/development/guides/domains/08-domain-integration-map.md +41 -0
- package/dist/docs/development/guides/domains/_category_.json +11 -0
- package/dist/docs/development/guides/flows/01-introduction.md +36 -0
- package/dist/docs/development/guides/flows/02-adding-flows.md +198 -0
- package/dist/docs/development/guides/flows/03-flow-nodes.md +273 -0
- package/dist/docs/development/guides/flows/04-adding-flows-to-services.md +42 -0
- package/dist/docs/development/guides/flows/05-adding-flows-to-domains.md +43 -0
- package/dist/docs/development/guides/flows/06-versioning.md +27 -0
- package/dist/docs/development/guides/flows/07-create-flow-with-ai.md +171 -0
- package/dist/docs/development/guides/flows/_category_.json +11 -0
- package/dist/docs/development/guides/messages/01-overview.md +57 -0
- package/dist/docs/development/guides/messages/_category_.json +11 -0
- package/dist/docs/development/guides/messages/commands/01-introduction.md +26 -0
- package/dist/docs/development/guides/messages/commands/02-adding-commands.md +131 -0
- package/dist/docs/development/guides/messages/commands/_category_.json +11 -0
- package/dist/docs/development/guides/messages/common/01-map-to-producers-and-consumers.md +37 -0
- package/dist/docs/development/guides/messages/common/02-adding-schemas.md +58 -0
- package/dist/docs/development/guides/messages/common/02-deprecating.md +71 -0
- package/dist/docs/development/guides/messages/common/02-draft-messages.md +63 -0
- package/dist/docs/development/guides/messages/common/02-examples.md +99 -0
- package/dist/docs/development/guides/messages/common/03-owners.md +40 -0
- package/dist/docs/development/guides/messages/common/04-versioning.md +27 -0
- package/dist/docs/development/guides/messages/common/05-changelog.md +73 -0
- package/dist/docs/development/guides/messages/common/07-components.md +12 -0
- package/dist/docs/development/guides/messages/common/08-shared-messages-across-boundaries.md +70 -0
- package/dist/docs/development/guides/messages/common/09-grouping-messages.md +98 -0
- package/dist/docs/development/guides/messages/common/_category_.json +11 -0
- package/dist/docs/development/guides/messages/events/01-introduction.md +25 -0
- package/dist/docs/development/guides/messages/events/02-adding-events.md +130 -0
- package/dist/docs/development/guides/messages/events/_category_.json +11 -0
- package/dist/docs/development/guides/messages/queries/01-introduction.md +25 -0
- package/dist/docs/development/guides/messages/queries/02-adding-queries.md +130 -0
- package/dist/docs/development/guides/messages/queries/_category_.json +11 -0
- package/dist/docs/development/guides/owners/_category_.json +11 -0
- package/dist/docs/development/guides/owners/teams/01-introduction.md +21 -0
- package/dist/docs/development/guides/owners/teams/02-adding-teams.md +73 -0
- package/dist/docs/development/guides/owners/teams/_category_.json +11 -0
- package/dist/docs/development/guides/owners/users/01-introduction.md +20 -0
- package/dist/docs/development/guides/owners/users/02-adding-users.md +70 -0
- package/dist/docs/development/guides/owners/users/_category_.json +11 -0
- package/dist/docs/development/guides/schemas/01-introduction.md +64 -0
- package/dist/docs/development/guides/schemas/02-schema-explorer.md +74 -0
- package/dist/docs/development/guides/schemas/03-schema-api.md +59 -0
- package/dist/docs/development/guides/schemas/04-schema-mcp.md +22 -0
- package/dist/docs/development/guides/schemas/05-field-usage.md +120 -0
- package/dist/docs/development/guides/schemas/06-fields-explorer.md +120 -0
- package/dist/docs/development/guides/schemas/_category_.json +11 -0
- package/dist/docs/development/guides/services/01-introduction.md +33 -0
- package/dist/docs/development/guides/services/02-adding-services.md +113 -0
- package/dist/docs/development/guides/services/03-creating-external-systems.md +71 -0
- package/dist/docs/development/guides/services/_category_.json +11 -0
- package/dist/docs/development/guides/services/adding-to-services/01-messages.md +229 -0
- package/dist/docs/development/guides/services/adding-to-services/02-datastores.md +77 -0
- package/dist/docs/development/guides/services/adding-to-services/03-entities.md +47 -0
- package/dist/docs/development/guides/services/adding-to-services/04-openapi.md +97 -0
- package/dist/docs/development/guides/services/adding-to-services/05-asyncapi.md +97 -0
- package/dist/docs/development/guides/services/adding-to-services/06-graphql.md +96 -0
- package/dist/docs/development/guides/services/adding-to-services/_category_.json +10 -0
- package/dist/docs/development/guides/services/ownership-and-components/01-owners.md +41 -0
- package/dist/docs/development/guides/services/ownership-and-components/02-components.md +13 -0
- package/dist/docs/development/guides/services/ownership-and-components/_category_.json +11 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/01-versioning.md +27 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/02-changelog.md +52 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/03-deprecating.md +70 -0
- package/dist/docs/development/guides/services/versioning-and-lifecycle/_category_.json +11 -0
- package/dist/docs/development/upgrading/_category_.json +12 -0
- package/dist/docs/development/upgrading/upgrading.md +142 -0
- package/dist/docs/development/upgrading/v2.md +69 -0
- package/dist/docs/development/upgrading/v3.md +277 -0
- package/dist/docs/miro/_category_.json +12 -0
- package/dist/docs/miro/contributing/01-getting-involved.md +53 -0
- package/dist/docs/miro/contributing/_category_.json +11 -0
- package/dist/docs/miro/getting-started/01-overview.md +63 -0
- package/dist/docs/miro/getting-started/02-installation.md +37 -0
- package/dist/docs/miro/getting-started/03-connecting-to-eventcatalog.md +59 -0
- package/dist/docs/miro/getting-started/_category_.json +11 -0
- package/dist/docs/miro/guides/01-adding-resources-to-board.md +90 -0
- package/dist/docs/miro/guides/02-creating-new-resources.md +61 -0
- package/dist/docs/miro/guides/03-editing-resources.md +50 -0
- package/dist/docs/miro/guides/04-connected-resources.md +54 -0
- package/dist/docs/miro/guides/05-services-and-dependencies.md +54 -0
- package/dist/docs/miro/guides/06-navigating-the-board.md +44 -0
- package/dist/docs/miro/guides/07-exporting-to-eventcatalog.md +75 -0
- package/dist/docs/miro/guides/_category_.json +11 -0
- package/dist/docs/miro/specifications/01-asyncapi.md +86 -0
- package/dist/docs/miro/specifications/02-openapi.md +86 -0
- package/dist/docs/miro/specifications/03-schema-registries.md +88 -0
- package/dist/docs/miro/specifications/_category_.json +11 -0
- package/dist/docs/miro/using-ai/01-overview.md +105 -0
- package/dist/docs/miro/using-ai/_category_.json +11 -0
- package/dist/docs/plugins/01-intro.md +49 -0
- package/dist/docs/plugins/02-generators.md +76 -0
- package/dist/docs/plugins/03-all-plugins.md +26 -0
- package/dist/docs/plugins/_category_.json +12 -0
- package/dist/docs/plugins/amazon-apigateway/00-intro.md +75 -0
- package/dist/docs/plugins/amazon-apigateway/01-installation.md +198 -0
- package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +136 -0
- package/dist/docs/plugins/amazon-apigateway/03-features.md +71 -0
- package/dist/docs/plugins/amazon-apigateway/04-examples.md +15 -0
- package/dist/docs/plugins/amazon-apigateway/_category_.json +11 -0
- package/dist/docs/plugins/apicurio/00-intro.md +102 -0
- package/dist/docs/plugins/apicurio/01-installation.md +165 -0
- package/dist/docs/plugins/apicurio/02-plugin-configuration.md +682 -0
- package/dist/docs/plugins/apicurio/03-features.md +221 -0
- package/dist/docs/plugins/apicurio/04-examples.md +20 -0
- package/dist/docs/plugins/apicurio/_category_.json +12 -0
- package/dist/docs/plugins/asyncapi/00-intro.md +81 -0
- package/dist/docs/plugins/asyncapi/01-installation.md +155 -0
- package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +312 -0
- package/dist/docs/plugins/asyncapi/03-features.md +698 -0
- package/dist/docs/plugins/asyncapi/03a-workflows.md +153 -0
- package/dist/docs/plugins/asyncapi/04-examples.md +23 -0
- package/dist/docs/plugins/asyncapi/04-using-reference-objects.md +45 -0
- package/dist/docs/plugins/asyncapi/_category_.json +12 -0
- package/dist/docs/plugins/aws-glue-registry/00-intro.md +104 -0
- package/dist/docs/plugins/aws-glue-registry/00a-installation.md +305 -0
- package/dist/docs/plugins/aws-glue-registry/01-features.md +287 -0
- package/dist/docs/plugins/aws-glue-registry/02-examples.md +368 -0
- package/dist/docs/plugins/aws-glue-registry/03-api.md +282 -0
- package/dist/docs/plugins/aws-glue-registry/_category_.json +11 -0
- package/dist/docs/plugins/azure-schema-registry/00-intro.md +92 -0
- package/dist/docs/plugins/azure-schema-registry/01-installation.md +409 -0
- package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +375 -0
- package/dist/docs/plugins/azure-schema-registry/03-features.md +347 -0
- package/dist/docs/plugins/azure-schema-registry/04-examples.md +378 -0
- package/dist/docs/plugins/azure-schema-registry/_category_.json +12 -0
- package/dist/docs/plugins/backstage/00-intro.md +67 -0
- package/dist/docs/plugins/backstage/01-installation.md +250 -0
- package/dist/docs/plugins/backstage/02-api.md +51 -0
- package/dist/docs/plugins/backstage/03-examples.md +12 -0
- package/dist/docs/plugins/backstage/_category_.json +11 -0
- package/dist/docs/plugins/confluent-schema-registry/00-intro.md +90 -0
- package/dist/docs/plugins/confluent-schema-registry/01-installation.md +223 -0
- package/dist/docs/plugins/confluent-schema-registry/02-plugin-configuration.md +473 -0
- package/dist/docs/plugins/confluent-schema-registry/03-features.md +43 -0
- package/dist/docs/plugins/confluent-schema-registry/04-examples.md +19 -0
- package/dist/docs/plugins/confluent-schema-registry/_category_.json +12 -0
- package/dist/docs/plugins/eventbridge/00-intro.md +55 -0
- package/dist/docs/plugins/eventbridge/00a-installation.md +317 -0
- package/dist/docs/plugins/eventbridge/01-features.md +225 -0
- package/dist/docs/plugins/eventbridge/02-examples.md +17 -0
- package/dist/docs/plugins/eventbridge/03-api.md +441 -0
- package/dist/docs/plugins/eventbridge/03a-workflows.md +133 -0
- package/dist/docs/plugins/eventbridge/_category_.json +11 -0
- package/dist/docs/plugins/eventcatalog-federation/00-introduction.md +69 -0
- package/dist/docs/plugins/eventcatalog-federation/01-installation.md +182 -0
- package/dist/docs/plugins/eventcatalog-federation/02-plugin-configuration.md +208 -0
- package/dist/docs/plugins/eventcatalog-federation/03-examples.md +15 -0
- package/dist/docs/plugins/eventcatalog-federation/04-configuration.md +193 -0
- package/dist/docs/plugins/eventcatalog-federation/05-setup-team-catalog.md +97 -0
- package/dist/docs/plugins/eventcatalog-federation/_category_.json +11 -0
- package/dist/docs/plugins/github/00-intro.md +93 -0
- package/dist/docs/plugins/github/01-installation.md +293 -0
- package/dist/docs/plugins/github/02-plugin-configuration.md +253 -0
- package/dist/docs/plugins/github/03-features.md +42 -0
- package/dist/docs/plugins/github/04-examples.md +17 -0
- package/dist/docs/plugins/github/_category_.json +12 -0
- package/dist/docs/plugins/graphql/00-intro.md +74 -0
- package/dist/docs/plugins/graphql/01-installation.md +144 -0
- package/dist/docs/plugins/graphql/02-plugin-configuration.md +127 -0
- package/dist/docs/plugins/graphql/03-features.md +197 -0
- package/dist/docs/plugins/graphql/04-examples.md +15 -0
- package/dist/docs/plugins/graphql/_category_.json +12 -0
- package/dist/docs/plugins/hookdeck/01-intro.md +152 -0
- package/dist/docs/plugins/hookdeck/02-api.md +133 -0
- package/dist/docs/plugins/hookdeck/03-cli.md +45 -0
- package/dist/docs/plugins/hookdeck/_category_.json +11 -0
- package/dist/docs/plugins/openapi/00-intro.md +78 -0
- package/dist/docs/plugins/openapi/01-installation.md +148 -0
- package/dist/docs/plugins/openapi/02-plugin-configuration.md +332 -0
- package/dist/docs/plugins/openapi/03-features.md +790 -0
- package/dist/docs/plugins/openapi/03a-workflows.md +153 -0
- package/dist/docs/plugins/openapi/04-examples.md +23 -0
- package/dist/docs/plugins/openapi/_category_.json +12 -0
- package/dist/eventcatalog.cjs +434 -35
- package/dist/eventcatalog.config.d.cts +8 -0
- package/dist/eventcatalog.config.d.ts +8 -0
- package/dist/eventcatalog.js +87 -10
- package/dist/features.cjs +6 -0
- package/dist/features.d.cts +2 -1
- package/dist/features.d.ts +2 -1
- package/dist/features.js +3 -1
- package/dist/generate.cjs +1 -1
- package/dist/generate.js +3 -3
- package/dist/search-indexer.cjs +356 -0
- package/dist/search-indexer.d.cts +30 -0
- package/dist/search-indexer.d.ts +30 -0
- package/dist/search-indexer.js +10 -0
- package/dist/utils/cli-logger.cjs +1 -1
- package/dist/utils/cli-logger.js +2 -2
- package/eventcatalog/astro.config.mjs +28 -32
- package/eventcatalog/src/components/Search/SearchModal.tsx +248 -148
- package/eventcatalog/src/components/Search/search-utils.spec.ts +138 -1
- package/eventcatalog/src/components/Search/search-utils.ts +271 -0
- package/eventcatalog/src/env.d.ts +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 1
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog components
|
|
5
|
+
sidebar_label: Introduction
|
|
6
|
+
title: Introduction
|
|
7
|
+
description: Introduction to EventCatalog Authentication
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
11
|
+
import EventCatalogPro from '@site/src/components/MDX/EventCatalogPro';
|
|
12
|
+
|
|
13
|
+
# Authentication Guide
|
|
14
|
+
|
|
15
|
+
<EventCatalogPro />
|
|
16
|
+
<AddedIn version="2.43.0" />
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
EventCatalog provides secure authentication to control access to your event-driven architecture documentation. Whether you're a small team getting started or a large enterprise with complex identity requirements, EventCatalog's flexible authentication system grows with your needs.
|
|
20
|
+
|
|
21
|
+
<iframe width="100%" height="455" src="https://www.youtube.com/embed/OVbXNP0Ns_U?si=TagMKL49ZD_G_HYE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## How it works
|
|
27
|
+
|
|
28
|
+
EventCatalog uses industry-standard **OpenID Connect (OIDC)** and **OAuth 2.0** protocols to integrate with your identity provider. Here's the authentication flow:
|
|
29
|
+
|
|
30
|
+
1. **User visits EventCatalog** and attempts to access protected documentation
|
|
31
|
+
2. **Redirected to your identity provider** (GitHub, Google, Auth0, etc.)
|
|
32
|
+
3. **User authenticates** with their existing credentials
|
|
33
|
+
4. **Provider confirms identity** and sends user back to EventCatalog
|
|
34
|
+
5. **User gains access** to your documentation and architecture
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
|
|
38
|
+
EventCatalog runs in **SSR mode** to handle authentication sessions and uses [Auth.js](https://authjs.dev/) to manage the authentication flow securely.
|
|
39
|
+
|
|
40
|
+
## Authentication by Plan
|
|
41
|
+
|
|
42
|
+
EventCatalog Authentication is a **paid feature** available in Scale and Enterprise plans.
|
|
43
|
+
|
|
44
|
+
#### Scale Plan
|
|
45
|
+
Perfect for growing teams that need secure collaboration with popular business providers:
|
|
46
|
+
|
|
47
|
+
- **GitHub** - Ideal for development teams already using GitHub
|
|
48
|
+
<!-- - **Google** - For teams using Gmail and Google Workspace -->
|
|
49
|
+
|
|
50
|
+
#### Enterprise Plan
|
|
51
|
+
Designed for large organizations with dedicated identity management systems:
|
|
52
|
+
|
|
53
|
+
- **Microsoft Azure AD (Entra ID)** - For organizations using Office 365 and Azure
|
|
54
|
+
- **Auth0** - Developer-friendly identity platform with advanced features
|
|
55
|
+
- **Okta** - Popular enterprise identity platform with custom claims
|
|
56
|
+
- **Custom OIDC** - Contact us to add your provider at [hello@eventcatalog.cloud](mailto:hello@eventcatalog.cloud)
|
|
57
|
+
|
|
58
|
+
## Why EventCatalog Authentication?
|
|
59
|
+
|
|
60
|
+
- ✅ **No new passwords** - Users authenticate with accounts they already have
|
|
61
|
+
- ✅ **Secure by default** - Leverage enterprise-grade security from major providers
|
|
62
|
+
- ✅ **Single sign-on experience** - Seamless access across your tools
|
|
63
|
+
- ✅ **Centralized management** - Control access through your existing identity systems
|
|
64
|
+
- ✅ **Team collaboration** - Secure access for distributed teams
|
|
65
|
+
|
|
66
|
+
## Getting Started
|
|
67
|
+
|
|
68
|
+
Ready to secure your EventCatalog with authentication?
|
|
69
|
+
|
|
70
|
+
**New to EventCatalog?** Start your **14-day free trial** at [EventCatalog.cloud](https://eventcatalog.cloud) to explore all authentication features.
|
|
71
|
+
|
|
72
|
+
## Next steps
|
|
73
|
+
|
|
74
|
+
Ready to get started? Let's enable authentication in your EventCatalog project:
|
|
75
|
+
|
|
76
|
+
→ [Enabling Authentication](/docs/development/authentication/enabling-authentication)
|
|
77
|
+
|
|
78
|
+
**Questions?** Join our [Discord community](https://discord.gg/eventcatalog) for support and guidance.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 1
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog authentication
|
|
5
|
+
sidebar_label: Enabling authentication
|
|
6
|
+
title: Enabling authentication
|
|
7
|
+
description: Enabling authentication for EventCatalog
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
11
|
+
import PlanBanner from '@site/src/components/MDX/PlanBanner';
|
|
12
|
+
import { Card, CardGrid, GitHubIcon, OktaIcon, AzureIcon, GoogleIcon, Auth0Icon, GitLabIcon } from '@site/src/components/MDX/Card';
|
|
13
|
+
|
|
14
|
+
<AddedIn version="2.43.0" />
|
|
15
|
+
<PlanBanner plan="Scale" />
|
|
16
|
+
|
|
17
|
+
To enable authentication for your site, you will need to do three things:
|
|
18
|
+
|
|
19
|
+
1. [Setup Environment](#setup-environment)
|
|
20
|
+
1. [Enable EventCatalog Server Side Rendering (SSR)](#enable-eventcatalog-server-side-rendering-ssr)
|
|
21
|
+
1. [Create your `eventcatalog.auth.js` file](#create-your-eventcatalogauthjs-file)
|
|
22
|
+
|
|
23
|
+
:::info Authentication is a paid feature
|
|
24
|
+
Authentication is a paid feature, and is available on EventCatalog Scale and Enterprise plans.
|
|
25
|
+
|
|
26
|
+
You can get a 14 day free trial of EventCatalog Scale and Enterprise [here](https://www.eventcatalog.dev/pricing).
|
|
27
|
+
|
|
28
|
+
You will need to set your license key in your `.env` file.
|
|
29
|
+
|
|
30
|
+
```env title=".env"
|
|
31
|
+
EVENTCATALOG_LICENSE_KEY=your-license-key
|
|
32
|
+
```
|
|
33
|
+
:::
|
|
34
|
+
|
|
35
|
+
### Setup Environment
|
|
36
|
+
|
|
37
|
+
EventCatalog uses [Auth.js](https://authjs.dev/) to handle the authentication flow.
|
|
38
|
+
|
|
39
|
+
Auth.js libraries require you to set an `AUTH_SECRET` environment variable. This is used to encrypt cookies and tokens. It should be a cryptographically secure random string of at least 32 characters:
|
|
40
|
+
|
|
41
|
+
This is the only strictly required environment variable. It is the secret used to encode the JWT and encrypt things in transit. We recommend at least a 32 character random string. This can be generated via openssl with `openssl rand -base64 33`.
|
|
42
|
+
|
|
43
|
+
```env title=".env"
|
|
44
|
+
AUTH_SECRET=your-secret
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### AUTH_TRUST_HOST
|
|
48
|
+
|
|
49
|
+
When running EventCatalog behind a reverse proxy (Kubernetes/AKS, Nginx, Cloudflare, AWS ALB, etc.), you must set `AUTH_TRUST_HOST=true`. Without it, Auth.js falls back to the internal container URL (e.g. `http://localhost:3000`) instead of the real domain, which causes login and sign-out to fail with CSRF/cross-site errors such as "Cross-site POST form submissions are forbidden".
|
|
50
|
+
|
|
51
|
+
```env title=".env"
|
|
52
|
+
AUTH_TRUST_HOST=true
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Setting this tells Auth.js to trust the `x-forwarded-host` and `x-forwarded-proto` headers forwarded by your proxy so it can resolve the correct callback URL.
|
|
56
|
+
|
|
57
|
+
:::tip Vercel and Cloudflare Pages
|
|
58
|
+
You do not need to set `AUTH_TRUST_HOST` when deploying to Vercel or Cloudflare Pages - it is inferred automatically. It is also not required in local development.
|
|
59
|
+
:::
|
|
60
|
+
|
|
61
|
+
To learn more, refer to the [Auth.js deployment documentation](https://authjs.dev/getting-started/deployment#auth_trust_host).
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Enable EventCatalog Server Side Rendering (SSR)
|
|
65
|
+
|
|
66
|
+
Authentication requires EventCatalog to be SSR enabled. This is because EventCatalog needs to be able to access the user's session to determine if they are authenticated.
|
|
67
|
+
|
|
68
|
+
To enable SSR, you will need to add the following to your `eventcatalog.config.js` file:
|
|
69
|
+
|
|
70
|
+
```js title="eventcatalog.config.js"
|
|
71
|
+
module.exports = {
|
|
72
|
+
// ... other config options
|
|
73
|
+
output: 'server',
|
|
74
|
+
};
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
This will ensure that EventCatalog is rendered on the server side, and that the user's session is available to the client.
|
|
78
|
+
|
|
79
|
+
:::info Deploying EventCatalog in SSR mode
|
|
80
|
+
You will be running EventCatalog in SSR mode when you deploy your site. This means the output of your site will require a server to be running. You can use EventCatalog Docker file to deploy your site or read our [deployment guide](https://www.eventcatalog.dev/docs/deployment/overview) for more information.
|
|
81
|
+
:::
|
|
82
|
+
|
|
83
|
+
### Create your `eventcatalog.auth.js` file
|
|
84
|
+
|
|
85
|
+
The `eventcatalog.auth.js` file is used to configure the authentication for your site, and is created in the root of your EventCatalog project.
|
|
86
|
+
|
|
87
|
+
```js title="eventcatalog.auth.js"
|
|
88
|
+
module.exports = {
|
|
89
|
+
// Enable debug mode for development
|
|
90
|
+
debug: false,
|
|
91
|
+
// List of providers you want to enable
|
|
92
|
+
providers: {
|
|
93
|
+
github: {
|
|
94
|
+
clientId: process.env.GITHUB_CLIENT_ID,
|
|
95
|
+
clientSecret: process.env.GITHUB_CLIENT_SECRET,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
// Optional session configuration
|
|
99
|
+
session?: {
|
|
100
|
+
// 30 days default
|
|
101
|
+
maxAge?: number;
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Once you have these three things, you can start setting up your authentication providers.
|
|
107
|
+
|
|
108
|
+
### Setting up your authentication providers
|
|
109
|
+
|
|
110
|
+
EventCatalog supports a range of authentication providers, and you can find the documentation for each provider below.
|
|
111
|
+
|
|
112
|
+
<CardGrid columns={2}>
|
|
113
|
+
<Card
|
|
114
|
+
title="Setting up GitHub"
|
|
115
|
+
icon={<GitHubIcon />}
|
|
116
|
+
badge="Scale"
|
|
117
|
+
href="/docs/development/authentication/providers/setting-up-github"
|
|
118
|
+
/>
|
|
119
|
+
<Card
|
|
120
|
+
title="Setting up Google"
|
|
121
|
+
icon={<GoogleIcon />}
|
|
122
|
+
badge="Scale"
|
|
123
|
+
href="/docs/development/authentication/providers/setting-up-google"
|
|
124
|
+
/>
|
|
125
|
+
<Card
|
|
126
|
+
title="Setting up Azure AD"
|
|
127
|
+
icon={<AzureIcon />}
|
|
128
|
+
badge="Enterprise"
|
|
129
|
+
href="/docs/development/authentication/providers/setting-up-azure-ad"
|
|
130
|
+
/>
|
|
131
|
+
<!-- <Card
|
|
132
|
+
title="Setting up Google"
|
|
133
|
+
icon={<GoogleIcon />}
|
|
134
|
+
href="/docs/auth/google"
|
|
135
|
+
/> -->
|
|
136
|
+
|
|
137
|
+
<Card
|
|
138
|
+
title="Setting up Okta"
|
|
139
|
+
icon={<OktaIcon />}
|
|
140
|
+
href="/docs/development/authentication/providers/setting-up-okta"
|
|
141
|
+
badge="Enterprise"
|
|
142
|
+
/>
|
|
143
|
+
<Card
|
|
144
|
+
title="Setting up Auth0"
|
|
145
|
+
icon={<Auth0Icon />}
|
|
146
|
+
href="/docs/development/authentication/providers/setting-up-auth0"
|
|
147
|
+
badge="Enterprise"
|
|
148
|
+
/>
|
|
149
|
+
</CardGrid>
|
|
150
|
+
|
|
151
|
+
Missing a provider? [Let us know](https://github.com/event-catalog/eventcatalog/issues/new) and we'll add it to the list.
|
|
152
|
+
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 7
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog RBAC
|
|
5
|
+
- Role-based access control
|
|
6
|
+
- Middleware
|
|
7
|
+
- Custom authentication
|
|
8
|
+
- Access control
|
|
9
|
+
sidebar_label: Role-Based Access Control
|
|
10
|
+
title: RBAC Middleware
|
|
11
|
+
description: Implementing role-based access control with custom middleware in EventCatalog
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
15
|
+
import PlanBanner from '@site/src/components/MDX/PlanBanner';
|
|
16
|
+
|
|
17
|
+
<AddedIn version="2.44.0" />
|
|
18
|
+
<PlanBanner plan="Enterprise" />
|
|
19
|
+
|
|
20
|
+
# Role-Based Access Control (RBAC) Middleware
|
|
21
|
+
|
|
22
|
+
EventCatalog supports **Role-Based Access Control (RBAC)** through custom middleware, allowing you to control user access to specific pages and sections based on their roles and groups.
|
|
23
|
+
|
|
24
|
+
## How it works
|
|
25
|
+
|
|
26
|
+
The RBAC middleware integrates with EventCatalog's authentication system to provide fine-grained access control:
|
|
27
|
+
|
|
28
|
+
1. **User authenticates** through your configured identity provider
|
|
29
|
+
2. **Middleware evaluates** the user's roles and groups against defined access rules
|
|
30
|
+
3. **Access is granted or denied** based on the matching rules for the requested path
|
|
31
|
+
4. **User sees appropriate content** or receives a 403 Forbidden response
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
Before setting up RBAC middleware, ensure you have:
|
|
36
|
+
|
|
37
|
+
- ✅ [Authentication enabled](/docs/development/authentication/enabling-authentication) in your EventCatalog
|
|
38
|
+
- ✅ An authentication provider configured (GitHub, Google, Azure AD, etc.)
|
|
39
|
+
- ✅ User roles and groups configured in your identity provider
|
|
40
|
+
|
|
41
|
+
## Setting up RBAC Middleware
|
|
42
|
+
|
|
43
|
+
### 1. Create the middleware file
|
|
44
|
+
|
|
45
|
+
Create a `middleware.ts` file in the root of your EventCatalog project:
|
|
46
|
+
|
|
47
|
+
```typescript title="middleware.ts"
|
|
48
|
+
import type { MiddlewareHandler } from 'astro';
|
|
49
|
+
|
|
50
|
+
interface Locals {
|
|
51
|
+
hasRole: (role: string) => boolean;
|
|
52
|
+
hasGroup: (group: string) => boolean;
|
|
53
|
+
findMatchingRule: (rules: Record<string, () => boolean>, pathname: string) => (() => boolean) | null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const rbacMiddleware: MiddlewareHandler = async (context, next) => {
|
|
57
|
+
const { locals, url } = context;
|
|
58
|
+
const pathname = url.pathname;
|
|
59
|
+
|
|
60
|
+
// Utility functions are available in the locals object
|
|
61
|
+
const { hasRole, hasGroup, findMatchingRule } = locals as Locals;
|
|
62
|
+
|
|
63
|
+
// Define your access rules
|
|
64
|
+
// Maps page routes to a function that returns true if the user has access, false otherwise
|
|
65
|
+
// You can use wildcards to match multiple paths
|
|
66
|
+
const accessRules = {
|
|
67
|
+
'/docs/domains/E-Commerce/*': () => !hasGroup('Viewer'),
|
|
68
|
+
'/visualiser/domains/E-Commerce/*': () => !hasGroup('Viewer'),
|
|
69
|
+
'/docs/services/payment/*': () => hasRole('Developer') || hasRole('Admin'),
|
|
70
|
+
'/admin/*': () => hasRole('Admin'),
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
if (findMatchingRule) {
|
|
74
|
+
// Find matching rule for the current path
|
|
75
|
+
const rule = findMatchingRule(accessRules, pathname);
|
|
76
|
+
|
|
77
|
+
if (rule && !rule()) {
|
|
78
|
+
return new Response('Forbidden', { status: 403 });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return next();
|
|
83
|
+
};
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Configure your access rules
|
|
87
|
+
|
|
88
|
+
The `accessRules` object defines path-based access control:
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
const accessRules = {
|
|
92
|
+
// Block 'Viewer' group from E-Commerce domain docs
|
|
93
|
+
'/docs/domains/E-Commerce/*': () => !hasGroup('Viewer'),
|
|
94
|
+
|
|
95
|
+
// Require 'Developer' or 'Admin' role for payment services
|
|
96
|
+
'/docs/services/payment/*': () => hasRole('Developer') || hasRole('Admin'),
|
|
97
|
+
|
|
98
|
+
// Admin-only sections
|
|
99
|
+
'/admin/*': () => hasRole('Admin'),
|
|
100
|
+
|
|
101
|
+
// Multiple conditions
|
|
102
|
+
'/docs/sensitive/*': () => hasRole('Admin') && !hasGroup('External'),
|
|
103
|
+
};
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 3. Available helper functions
|
|
107
|
+
|
|
108
|
+
The middleware provides several helper functions through `locals`:
|
|
109
|
+
|
|
110
|
+
#### `hasRole(role: string)`
|
|
111
|
+
Checks if the user has a specific role:
|
|
112
|
+
```typescript
|
|
113
|
+
hasRole('Admin') // Returns true if user has Admin role
|
|
114
|
+
hasRole('Developer') // Returns true if user has Developer role
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### `hasGroup(group: string)`
|
|
118
|
+
Checks if the user belongs to a specific group:
|
|
119
|
+
```typescript
|
|
120
|
+
hasGroup('Viewer') // Returns true if user is in Viewer group
|
|
121
|
+
hasGroup('External') // Returns true if user is in External group
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### `findMatchingRule(rules, pathname)`
|
|
125
|
+
Finds the first matching rule for a given pathname using glob patterns:
|
|
126
|
+
```typescript
|
|
127
|
+
// Matches paths like:
|
|
128
|
+
// - /docs/domains/E-Commerce/orders
|
|
129
|
+
// - /docs/domains/E-Commerce/products/catalog
|
|
130
|
+
'/docs/domains/E-Commerce/*': () => hasRole('Developer')
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Access Rule Patterns
|
|
134
|
+
|
|
135
|
+
### Path-based rules
|
|
136
|
+
Control access to specific pages or sections using exact paths or wildcard patterns.
|
|
137
|
+
```typescript
|
|
138
|
+
const accessRules = {
|
|
139
|
+
// Exact path match
|
|
140
|
+
'/admin/settings': () => hasRole('Admin'),
|
|
141
|
+
|
|
142
|
+
// Wildcard matching
|
|
143
|
+
'/docs/domains/Banking/*': () => hasGroup('Banking-Team'),
|
|
144
|
+
|
|
145
|
+
// Multiple level wildcards
|
|
146
|
+
'/api/*/internal/*': () => hasRole('Internal-Developer'),
|
|
147
|
+
};
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Role-based rules
|
|
151
|
+
Define access permissions based on user roles with single or multiple role requirements.
|
|
152
|
+
```typescript
|
|
153
|
+
const accessRules = {
|
|
154
|
+
// Single role requirement
|
|
155
|
+
'/admin/*': () => hasRole('Admin'),
|
|
156
|
+
|
|
157
|
+
// Multiple role options (OR)
|
|
158
|
+
'/docs/api/*': () => hasRole('Developer') || hasRole('Architect'),
|
|
159
|
+
|
|
160
|
+
// Multiple role requirements (AND)
|
|
161
|
+
'/sensitive/*': () => hasRole('Admin') && hasRole('Security-Cleared'),
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Group-based rules
|
|
166
|
+
Manage access using group membership with inclusion, exclusion, or complex group logic.
|
|
167
|
+
```typescript
|
|
168
|
+
const accessRules = {
|
|
169
|
+
// Exclude specific groups
|
|
170
|
+
'/public/*': () => !hasGroup('External'),
|
|
171
|
+
|
|
172
|
+
// Include specific groups
|
|
173
|
+
'/team-docs/*': () => hasGroup('Internal-Team'),
|
|
174
|
+
|
|
175
|
+
// Complex group logic
|
|
176
|
+
'/project-alpha/*': () => hasGroup('Alpha-Team') || hasGroup('Leadership'),
|
|
177
|
+
};
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Common use cases
|
|
181
|
+
|
|
182
|
+
### Department-based access
|
|
183
|
+
Organize access control around your organizational structure, ensuring teams only see documentation relevant to their department.
|
|
184
|
+
```typescript
|
|
185
|
+
const accessRules = {
|
|
186
|
+
'/docs/domains/HR/*': () => hasGroup('HR-Department'),
|
|
187
|
+
'/docs/domains/Finance/*': () => hasGroup('Finance-Department'),
|
|
188
|
+
'/docs/domains/Engineering/*': () => hasGroup('Engineering-Department'),
|
|
189
|
+
};
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Hierarchical permissions
|
|
193
|
+
Create layered access levels where higher privilege users can access all lower-level content.
|
|
194
|
+
```typescript
|
|
195
|
+
const accessRules = {
|
|
196
|
+
'/docs/public/*': () => true, // Everyone can access
|
|
197
|
+
'/docs/internal/*': () => !hasGroup('External'),
|
|
198
|
+
'/docs/confidential/*': () => hasRole('Manager') || hasRole('Admin'),
|
|
199
|
+
'/docs/top-secret/*': () => hasRole('Admin'),
|
|
200
|
+
};
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Feature-based access
|
|
204
|
+
Control access to specific EventCatalog features based on user roles and responsibilities.
|
|
205
|
+
```typescript
|
|
206
|
+
const accessRules = {
|
|
207
|
+
'/visualiser/*': () => hasRole('Architect') || hasRole('Developer'),
|
|
208
|
+
'/api-explorer/*': () => hasRole('Developer'),
|
|
209
|
+
'/admin/*': () => hasRole('Admin'),
|
|
210
|
+
};
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Troubleshooting
|
|
214
|
+
|
|
215
|
+
### Users getting 403 errors unexpectedly
|
|
216
|
+
|
|
217
|
+
1. **Check role/group assignment** in your identity provider
|
|
218
|
+
2. **Debug user permissions** by logging the locals to see what roles and groups are available:
|
|
219
|
+
```typescript
|
|
220
|
+
export const rbacMiddleware: MiddlewareHandler = async (context, next) => {
|
|
221
|
+
const { locals, url } = context;
|
|
222
|
+
|
|
223
|
+
// Log the user's roles and groups for debugging
|
|
224
|
+
console.log('User locals:', {
|
|
225
|
+
pathname: url.pathname,
|
|
226
|
+
locals: locals
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Your existing middleware code...
|
|
230
|
+
};
|
|
231
|
+
```
|
|
232
|
+
3. **Verify rule logic** - ensure your conditions are correct:
|
|
233
|
+
```typescript
|
|
234
|
+
// Wrong: This blocks everyone except Viewers
|
|
235
|
+
'/docs/*': () => hasGroup('Viewer')
|
|
236
|
+
|
|
237
|
+
// Correct: This blocks only Viewers
|
|
238
|
+
'/docs/*': () => !hasGroup('Viewer')
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Rules not matching expected paths
|
|
242
|
+
|
|
243
|
+
1. **Test your glob patterns** - ensure wildcards match your URL structure
|
|
244
|
+
2. **Check path casing** - paths are case-sensitive
|
|
245
|
+
3. **Verify rule order** - more specific rules should come before general ones
|
|
246
|
+
|
|
247
|
+
### Session issues
|
|
248
|
+
|
|
249
|
+
1. **Ensure user is authenticated** before middleware runs
|
|
250
|
+
2. **Check session expiration** - users may need to re-authenticate
|
|
251
|
+
3. **Verify locals are populated** - `hasRole` and `hasGroup` functions must be available
|
|
252
|
+
|
|
253
|
+
## Security best practices
|
|
254
|
+
|
|
255
|
+
- ✅ **Principle of least privilege** - Grant minimum required access
|
|
256
|
+
- ✅ **Regular access reviews** - Audit user roles and permissions
|
|
257
|
+
- ✅ **Test thoroughly** - Verify access rules with different user types
|
|
258
|
+
- ✅ **Monitor access attempts** - Log and review 403 responses
|
|
259
|
+
- ✅ **Use groups over individual users** - Easier to manage and scale
|
|
260
|
+
|
|
261
|
+
## Next steps
|
|
262
|
+
|
|
263
|
+
With RBAC middleware configured, you can:
|
|
264
|
+
|
|
265
|
+
- Set up more complex access patterns based on your organization structure
|
|
266
|
+
- Integrate with external authorization systems
|
|
267
|
+
- Add custom logging for access attempts
|
|
268
|
+
|
|
269
|
+
Need help? Join our [Discord community](https://eventcatalog.dev/discord) for support and best practices from other EventCatalog users.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 3
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog GitHub Authentication
|
|
5
|
+
sidebar_label: GitHub
|
|
6
|
+
title: Setting up GitHub
|
|
7
|
+
description: Setting up GitHub authentication for EventCatalog
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
11
|
+
import EventCatalogPro from '@site/src/components/MDX/EventCatalogPro';
|
|
12
|
+
import PlanBanner from '@site/src/components/MDX/PlanBanner';
|
|
13
|
+
|
|
14
|
+
<AddedIn version="2.43.0" />
|
|
15
|
+
<PlanBanner plan="Scale" />
|
|
16
|
+
|
|
17
|
+
:::info
|
|
18
|
+
This guide takes your through setting up a protected sign-in screen for your docs. Before going through this guide, make sure you’ve first gone through [Enabling authentication](/docs/development/authentication/enabling-authentication).
|
|
19
|
+
:::
|
|
20
|
+
|
|
21
|
+
To setup your EventCatalog site with visitor authentication using [GitHub](https://github.com/), the process looks as follows:
|
|
22
|
+
|
|
23
|
+
1. Create a new GitHub OAuth app
|
|
24
|
+
2. Configure the OAuth app in EventCatalog
|
|
25
|
+
3. Test the authentication
|
|
26
|
+
|
|
27
|
+
## Create a new GitHub OAuth app
|
|
28
|
+
|
|
29
|
+
First, you will need to create a new GitHub OAuth app.
|
|
30
|
+
|
|
31
|
+
1. Go to [GitHub Developer Settings](https://github.com/settings/developers)
|
|
32
|
+
2. Click on "New OAuth App"
|
|
33
|
+
3. Fill in the details for your app
|
|
34
|
+
- **Application name:** `EventCatalog`
|
|
35
|
+
- **Homepage URL:** `{YOUR_EVENTCATALOG_SITE_URL}`
|
|
36
|
+
- Local development: `http://localhost:3000`
|
|
37
|
+
- **Authorization callback URL:** `{YOUR_EVENTCATALOG_SITE_URL}/api/auth/callback/github`
|
|
38
|
+
- Local development: `http://localhost:3000/api/auth/callback/github`
|
|
39
|
+
4. Click on "Register application"
|
|
40
|
+
5. Copy the Client ID and Client Secret
|
|
41
|
+
|
|
42
|
+
## Configure the OAuth app in EventCatalog
|
|
43
|
+
|
|
44
|
+
Add your GitHub Client ID and Client Secret to your `.env` file.
|
|
45
|
+
|
|
46
|
+
```env title=".env"
|
|
47
|
+
AUTH_GITHUB_CLIENT_ID={YOUR_GITHUB_CLIENT_ID}
|
|
48
|
+
AUTH_GITHUB_CLIENT_SECRET={YOUR_GITHUB_CLIENT_SECRET}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
In your `eventcatalog.auth.js` file, add the following:
|
|
52
|
+
|
|
53
|
+
```js title="eventcatalog.auth.js"
|
|
54
|
+
export default {
|
|
55
|
+
providers: {
|
|
56
|
+
github: {
|
|
57
|
+
clientId: process.env.AUTH_GITHUB_CLIENT_ID,
|
|
58
|
+
clientSecret: process.env.AUTH_GITHUB_CLIENT_SECRET,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Test the authentication
|
|
65
|
+
|
|
66
|
+
Restart your EventCatalog server and test the authentication.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npm run dev
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
All pages should now be protected and require a GitHub account to access.
|
|
73
|
+
|
|
74
|
+

|
|
75
|
+
|
|
76
|
+
## Found an issue?
|
|
77
|
+
|
|
78
|
+
Remember to setup the prerequisites for this guide:
|
|
79
|
+
|
|
80
|
+
- [Enabling authentication](/docs/development/authentication/enabling-authentication)
|
|
81
|
+
|
|
82
|
+
If you still have problems, please [let us know](https://github.com/eventcatalog/eventcatalog/issues/new/choose).
|
|
83
|
+
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
sidebar_position: 3
|
|
3
|
+
keywords:
|
|
4
|
+
- EventCatalog Google Authentication
|
|
5
|
+
sidebar_label: Google
|
|
6
|
+
title: Setting up Google
|
|
7
|
+
description: Setting up Google authentication for EventCatalog
|
|
8
|
+
id: setting-up-google
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
import AddedIn from '@site/src/components/MDX/AddedIn';
|
|
12
|
+
import EventCatalogPro from '@site/src/components/MDX/EventCatalogPro';
|
|
13
|
+
import PlanBanner from '@site/src/components/MDX/PlanBanner';
|
|
14
|
+
|
|
15
|
+
<AddedIn version="2.43.3" />
|
|
16
|
+
<PlanBanner plan="Scale" />
|
|
17
|
+
|
|
18
|
+
:::info
|
|
19
|
+
This guide takes your through setting up a protected sign-in screen for your docs. Before going through this guide, make sure you've first gone through [Enabling authentication](/docs/development/authentication/enabling-authentication).
|
|
20
|
+
:::
|
|
21
|
+
|
|
22
|
+
To setup your EventCatalog site with visitor authentication using [Google](https://accounts.google.com/), the process looks as follows:
|
|
23
|
+
|
|
24
|
+
1. Create a new Google OAuth app
|
|
25
|
+
2. Configure the OAuth app in EventCatalog
|
|
26
|
+
3. Test the authentication
|
|
27
|
+
|
|
28
|
+
## Create a new Google OAuth app
|
|
29
|
+
|
|
30
|
+
First, you will need to create a new Google OAuth app in the Google Cloud Console.
|
|
31
|
+
|
|
32
|
+
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
|
|
33
|
+
2. Create a new project or select an existing one
|
|
34
|
+
3. Navigate to "APIs & Services" → "Library"
|
|
35
|
+
4. Search for and enable the "Google+ API"
|
|
36
|
+
5. Go to "APIs & Services" → "Credentials"
|
|
37
|
+
6. Click "Create Credentials" → "OAuth client ID"
|
|
38
|
+
7. If prompted, configure the OAuth consent screen:
|
|
39
|
+
- Choose "External" for testing
|
|
40
|
+
- Fill in app name: `EventCatalog`
|
|
41
|
+
- Add your user support email and developer contact email
|
|
42
|
+
- Save and continue through the remaining screens
|
|
43
|
+
8. Create the OAuth client ID:
|
|
44
|
+
- **Application type:** Web application
|
|
45
|
+
- **Name:** `EventCatalog`
|
|
46
|
+
- **Authorized JavaScript origins:** `{YOUR_EVENTCATALOG_SITE_URL}`
|
|
47
|
+
- Local development: `http://localhost:3000`
|
|
48
|
+
- **Authorized redirect URIs:** `{YOUR_EVENTCATALOG_SITE_URL}/api/auth/callback/google`
|
|
49
|
+
- Local development: `http://localhost:3000/api/auth/callback/google`
|
|
50
|
+
9. Click "Create" and copy the Client ID and Client Secret
|
|
51
|
+
|
|
52
|
+
## Configure the OAuth app in EventCatalog
|
|
53
|
+
|
|
54
|
+
Add your Google Client ID and Client Secret to your `.env` file.
|
|
55
|
+
|
|
56
|
+
```env title=".env"
|
|
57
|
+
AUTH_GOOGLE_CLIENT_ID={YOUR_GOOGLE_CLIENT_ID}
|
|
58
|
+
AUTH_GOOGLE_CLIENT_SECRET={YOUR_GOOGLE_CLIENT_SECRET}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
In your eventcatalog.auth.js file, add the following:
|
|
62
|
+
|
|
63
|
+
```js title="eventcatalog.auth.js"
|
|
64
|
+
export default {
|
|
65
|
+
enabled: true,
|
|
66
|
+
google: {
|
|
67
|
+
clientId: process.env.AUTH_GOOGLE_CLIENT_ID,
|
|
68
|
+
clientSecret: process.env.AUTH_GOOGLE_CLIENT_SECRET,
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Test the authentication
|
|
74
|
+
|
|
75
|
+
Restart your EventCatalog server and test the authentication.
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm run dev
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
All pages should now be protected and require a Google account to access.
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
## Found an issue?
|
|
86
|
+
|
|
87
|
+
Remember to setup the prerequisites for this guide:
|
|
88
|
+
|
|
89
|
+
- [Enabling authentication](/docs/development/authentication/enabling-authentication)
|
|
90
|
+
|
|
91
|
+
If you still have problems, please [let us know](https://github.com/eventcatalog/eventcatalog/issues/new/choose).
|
|
92
|
+
|