@eventcatalog/core 3.34.0 → 3.35.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.
Files changed (431) hide show
  1. package/dist/analytics/analytics.cjs +1 -1
  2. package/dist/analytics/analytics.js +2 -2
  3. package/dist/analytics/log-build.cjs +1 -1
  4. package/dist/analytics/log-build.js +3 -3
  5. package/dist/{chunk-K5AM6PPU.js → chunk-4SNN54V4.js} +1 -1
  6. package/dist/{chunk-623CFR4T.js → chunk-B7C4DHFE.js} +1 -1
  7. package/dist/{chunk-BJWMR3ZH.js → chunk-JEQZWJWP.js} +1 -1
  8. package/dist/{chunk-PP7EDIPX.js → chunk-R4DR3YAH.js} +1 -1
  9. package/dist/{chunk-IO6EMN5C.js → chunk-VJ357XOI.js} +1 -1
  10. package/dist/constants.cjs +1 -1
  11. package/dist/constants.js +1 -1
  12. package/dist/docs/api/01-overview.md +74 -0
  13. package/dist/docs/api/02-config.md +937 -0
  14. package/dist/docs/api/03-domain-api.md +394 -0
  15. package/dist/docs/api/04-service-api.md +368 -0
  16. package/dist/docs/api/05-command-api.md +319 -0
  17. package/dist/docs/api/06-event-api.md +318 -0
  18. package/dist/docs/api/06-query-api.md +316 -0
  19. package/dist/docs/api/08-channel-api.md +317 -0
  20. package/dist/docs/api/08-code-blocks.md +53 -0
  21. package/dist/docs/api/09-flow-api.md +362 -0
  22. package/dist/docs/api/10-entity-api.md +285 -0
  23. package/dist/docs/api/11-data-api.md +268 -0
  24. package/dist/docs/api/12-data-product-api.md +416 -0
  25. package/dist/docs/api/_category_.json +12 -0
  26. package/dist/docs/cli/channels.md +180 -0
  27. package/dist/docs/cli/commands.md +183 -0
  28. package/dist/docs/cli/custom-docs.md +78 -0
  29. package/dist/docs/cli/data-products.md +177 -0
  30. package/dist/docs/cli/data-stores.md +166 -0
  31. package/dist/docs/cli/diagrams.md +147 -0
  32. package/dist/docs/cli/domains.md +280 -0
  33. package/dist/docs/cli/entities.md +138 -0
  34. package/dist/docs/cli/events.md +186 -0
  35. package/dist/docs/cli/export.md +27 -0
  36. package/dist/docs/cli/governance.md +24 -0
  37. package/dist/docs/cli/import.md +26 -0
  38. package/dist/docs/cli/index.md +121 -0
  39. package/dist/docs/cli/messages.md +69 -0
  40. package/dist/docs/cli/queries.md +183 -0
  41. package/dist/docs/cli/services.md +266 -0
  42. package/dist/docs/cli/snapshots.md +44 -0
  43. package/dist/docs/cli/teams.md +75 -0
  44. package/dist/docs/cli/users.md +75 -0
  45. package/dist/docs/cli/utilities.md +43 -0
  46. package/dist/docs/contributing/01-overview.md +186 -0
  47. package/dist/docs/contributing/_category_.json +12 -0
  48. package/dist/docs/development/00-why-eventcatalog.md +87 -0
  49. package/dist/docs/development/01-fundamentals.md +34 -0
  50. package/dist/docs/development/01-getting-started/_category_.json +12 -0
  51. package/dist/docs/development/01-getting-started/configuration-overview.md +124 -0
  52. package/dist/docs/development/01-getting-started/develop-and-build.md +71 -0
  53. package/dist/docs/development/01-getting-started/installation.md +103 -0
  54. package/dist/docs/development/01-getting-started/project-structure.md +269 -0
  55. package/dist/docs/development/_category_.json +12 -0
  56. package/dist/docs/development/_getting-started.mdx +15 -0
  57. package/dist/docs/development/agent-resources/_category_.json +6 -0
  58. package/dist/docs/development/agent-resources/eventcatalog-skills.md +17 -0
  59. package/dist/docs/development/agent-resources/llms-full.md +17 -0
  60. package/dist/docs/development/agent-resources/llms.md +17 -0
  61. package/dist/docs/development/ask-your-architecture/01-intro.md +89 -0
  62. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/01-what-is-eventcatalog-assistant.md +23 -0
  63. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/02-configuration.md +72 -0
  64. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/03-bring-your-own-tools.md +385 -0
  65. package/dist/docs/development/ask-your-architecture/02-eventcatalog-assistant/_category_.json +11 -0
  66. package/dist/docs/development/ask-your-architecture/03-mcp-server/_category_.json +12 -0
  67. package/dist/docs/development/ask-your-architecture/03-mcp-server/getting-started.md +216 -0
  68. package/dist/docs/development/ask-your-architecture/03-mcp-server/introduction.md +47 -0
  69. package/dist/docs/development/ask-your-architecture/04-skills/01-introduction.md +40 -0
  70. package/dist/docs/development/ask-your-architecture/04-skills/02-installation.md +60 -0
  71. package/dist/docs/development/ask-your-architecture/04-skills/_category_.json +11 -0
  72. package/dist/docs/development/ask-your-architecture/05-slack-integration/01-introduction.md +63 -0
  73. package/dist/docs/development/ask-your-architecture/05-slack-integration/02-slack-app-setup.md +154 -0
  74. package/dist/docs/development/ask-your-architecture/05-slack-integration/03-installation.md +169 -0
  75. package/dist/docs/development/ask-your-architecture/05-slack-integration/04-deployment.md +236 -0
  76. package/dist/docs/development/ask-your-architecture/05-slack-integration/05-usage.md +140 -0
  77. package/dist/docs/development/ask-your-architecture/05-slack-integration/06-troubleshooting.md +268 -0
  78. package/dist/docs/development/ask-your-architecture/05-slack-integration/_category_.json +12 -0
  79. package/dist/docs/development/ask-your-architecture/_category_.json +12 -0
  80. package/dist/docs/development/authentication/01-introduction.md +78 -0
  81. package/dist/docs/development/authentication/02-enabling-authentication.md +152 -0
  82. package/dist/docs/development/authentication/07-rbac-middleware.md +269 -0
  83. package/dist/docs/development/authentication/_category_.json +11 -0
  84. package/dist/docs/development/authentication/providers/03-setting-up-github.md +83 -0
  85. package/dist/docs/development/authentication/providers/03a-setting-up-google.md +92 -0
  86. package/dist/docs/development/authentication/providers/04-setting-up-azure-ad.md +100 -0
  87. package/dist/docs/development/authentication/providers/05-setting-up-okta.md +105 -0
  88. package/dist/docs/development/authentication/providers/06-setting-up-auth0.md +106 -0
  89. package/dist/docs/development/authentication/providers/_category_.json +11 -0
  90. package/dist/docs/development/bring-your-own-documentation/01-introduction.md +48 -0
  91. package/dist/docs/development/bring-your-own-documentation/_category_.json +12 -0
  92. package/dist/docs/development/bring-your-own-documentation/custom-pages/01-introduction.md +60 -0
  93. package/dist/docs/development/bring-your-own-documentation/custom-pages/02-adding-custom-docs.md +207 -0
  94. package/dist/docs/development/bring-your-own-documentation/custom-pages/03-components.md +46 -0
  95. package/dist/docs/development/bring-your-own-documentation/custom-pages/04-owners.md +45 -0
  96. package/dist/docs/development/bring-your-own-documentation/custom-pages/_category_.json +11 -0
  97. package/dist/docs/development/bring-your-own-documentation/resource-docs/01-introduction.md +34 -0
  98. package/dist/docs/development/bring-your-own-documentation/resource-docs/02-adding-resource-docs.md +143 -0
  99. package/dist/docs/development/bring-your-own-documentation/resource-docs/03-categories.md +68 -0
  100. package/dist/docs/development/bring-your-own-documentation/resource-docs/04-versioning.md +45 -0
  101. package/dist/docs/development/bring-your-own-documentation/resource-docs/_category_.json +11 -0
  102. package/dist/docs/development/components/04-snippets.md +134 -0
  103. package/dist/docs/development/components/05-using-components.md +67 -0
  104. package/dist/docs/development/components/07-resource-references.md +136 -0
  105. package/dist/docs/development/components/_category_.json +12 -0
  106. package/dist/docs/development/components/components/01-accordian.md +41 -0
  107. package/dist/docs/development/components/components/02-accordian-group.md +57 -0
  108. package/dist/docs/development/components/components/03-admonitions.md +43 -0
  109. package/dist/docs/development/components/components/04-attachments.md +56 -0
  110. package/dist/docs/development/components/components/05-channel-information.md +29 -0
  111. package/dist/docs/development/components/components/06-design.md +66 -0
  112. package/dist/docs/development/components/components/07-entitymap.md +71 -0
  113. package/dist/docs/development/components/components/08-flow.md +46 -0
  114. package/dist/docs/development/components/components/09-link.md +32 -0
  115. package/dist/docs/development/components/components/10-mermaid-file-loader.md +63 -0
  116. package/dist/docs/development/components/components/11-message-table.md +43 -0
  117. package/dist/docs/development/components/components/12-nodegraph.md +167 -0
  118. package/dist/docs/development/components/components/13-openapi.md +55 -0
  119. package/dist/docs/development/components/components/14-prompt.md +69 -0
  120. package/dist/docs/development/components/components/15-remote-schema.md +174 -0
  121. package/dist/docs/development/components/components/16-resource-group-table.md +86 -0
  122. package/dist/docs/development/components/components/17-resource-link.md +57 -0
  123. package/dist/docs/development/components/components/18-schema.md +44 -0
  124. package/dist/docs/development/components/components/19-schema-viewer.md +69 -0
  125. package/dist/docs/development/components/components/20-steps.md +83 -0
  126. package/dist/docs/development/components/components/21-tabs.md +55 -0
  127. package/dist/docs/development/components/components/22-tiles.md +53 -0
  128. package/dist/docs/development/components/components/23-visibility.md +61 -0
  129. package/dist/docs/development/components/components/_category_.json +12 -0
  130. package/dist/docs/development/components/diagram-syntax/01-mermaid.md +218 -0
  131. package/dist/docs/development/components/diagram-syntax/02-plantuml.md +140 -0
  132. package/dist/docs/development/components/diagram-syntax/03-structurizr.md +24 -0
  133. package/dist/docs/development/components/diagram-syntax/04-icepanel.md +75 -0
  134. package/dist/docs/development/components/diagram-syntax/_category_.json +12 -0
  135. package/dist/docs/development/components/external-diagram-embeds/01-miro.md +64 -0
  136. package/dist/docs/development/components/external-diagram-embeds/02-lucid.md +47 -0
  137. package/dist/docs/development/components/external-diagram-embeds/03-drawio.md +46 -0
  138. package/dist/docs/development/components/external-diagram-embeds/04-figjam.md +44 -0
  139. package/dist/docs/development/components/external-diagram-embeds/05-icepanel.md +68 -0
  140. package/dist/docs/development/components/external-diagram-embeds/_category_.json +12 -0
  141. package/dist/docs/development/customization/01-customize-landing-page.md +155 -0
  142. package/dist/docs/development/customization/02-themes.md +429 -0
  143. package/dist/docs/development/customization/06-customize-tables.md +194 -0
  144. package/dist/docs/development/customization/_category_.json +12 -0
  145. package/dist/docs/development/customization/custom-components/00-what-is-mdx.md +73 -0
  146. package/dist/docs/development/customization/custom-components/01-introduction.md +28 -0
  147. package/dist/docs/development/customization/custom-components/02-adding-components.md +145 -0
  148. package/dist/docs/development/customization/custom-components/03-component-styling.md +27 -0
  149. package/dist/docs/development/customization/custom-components/04-javascript-components.md +32 -0
  150. package/dist/docs/development/customization/custom-components/_category_.json +11 -0
  151. package/dist/docs/development/customization/customize-sidebars/00-application-sidebar.md +45 -0
  152. package/dist/docs/development/customization/customize-sidebars/01-documentation-sidebar.md +187 -0
  153. package/dist/docs/development/customization/customize-sidebars/_category_.json +11 -0
  154. package/dist/docs/development/customization/customize-visualizer/00-visualizer-nodes.md +50 -0
  155. package/dist/docs/development/customization/customize-visualizer/_category_.json +11 -0
  156. package/dist/docs/development/deployment/_category_.json +12 -0
  157. package/dist/docs/development/deployment/build-and-deploy.md +71 -0
  158. package/dist/docs/development/deployment/build-ssr-mode.md +50 -0
  159. package/dist/docs/development/deployment/deployment-workflows.md +43 -0
  160. package/dist/docs/development/deployment/hosting-options.md +112 -0
  161. package/dist/docs/development/deployment/licenses.md +50 -0
  162. package/dist/docs/development/design/_category_.json +12 -0
  163. package/dist/docs/development/design/embed-designs-into-eventcatalog.md +29 -0
  164. package/dist/docs/development/design/further-reading.md +19 -0
  165. package/dist/docs/development/design/import-resources.md +27 -0
  166. package/dist/docs/development/design/intro.md +22 -0
  167. package/dist/docs/development/developer-tools/_category_.json +12 -0
  168. package/dist/docs/development/developer-tools/eventcatalog-linter.md +597 -0
  169. package/dist/docs/development/developer-tools/github-action.md +147 -0
  170. package/dist/docs/development/developer-tools/llms.txt.md +55 -0
  171. package/dist/docs/development/developer-tools/schemas.txt.md +42 -0
  172. package/dist/docs/development/governance/_category_.json +6 -0
  173. package/dist/docs/development/governance/architecture-change-detection/01-introduction.md +62 -0
  174. package/dist/docs/development/governance/architecture-change-detection/02-configuration.md +134 -0
  175. package/dist/docs/development/governance/architecture-change-detection/03-recipes.md +309 -0
  176. package/dist/docs/development/governance/architecture-change-detection/04-webhooks.md +187 -0
  177. package/dist/docs/development/governance/architecture-change-detection/05-ci-cd.md +121 -0
  178. package/dist/docs/development/governance/architecture-change-detection/06-pipeline-gates.md +162 -0
  179. package/dist/docs/development/governance/architecture-change-detection/_category_.json +6 -0
  180. package/dist/docs/development/guides/12-customize-your-sidebar.md +12 -0
  181. package/dist/docs/development/guides/99-adding-analytics.md +138 -0
  182. package/dist/docs/development/guides/_category_.json +11 -0
  183. package/dist/docs/development/guides/changelogs/01-introduction.md +33 -0
  184. package/dist/docs/development/guides/changelogs/02-adding-changelogs.md +94 -0
  185. package/dist/docs/development/guides/changelogs/03-automated-changelogs.md +44 -0
  186. package/dist/docs/development/guides/changelogs/_category_.json +11 -0
  187. package/dist/docs/development/guides/channels/01-introduction.md +111 -0
  188. package/dist/docs/development/guides/channels/02-adding-channels.md +198 -0
  189. package/dist/docs/development/guides/channels/04-adding-messages-to-services.md +292 -0
  190. package/dist/docs/development/guides/channels/09-configuration +39 -0
  191. package/dist/docs/development/guides/channels/_category_.json +11 -0
  192. package/dist/docs/development/guides/channels/ownership-and-components/01-owners.md +44 -0
  193. package/dist/docs/development/guides/channels/ownership-and-components/02-components.md +16 -0
  194. package/dist/docs/development/guides/channels/ownership-and-components/_category_.json +11 -0
  195. package/dist/docs/development/guides/channels/versioning-and-lifecycle/01-versioning.md +31 -0
  196. package/dist/docs/development/guides/channels/versioning-and-lifecycle/02-changelog.md +56 -0
  197. package/dist/docs/development/guides/channels/versioning-and-lifecycle/_category_.json +11 -0
  198. package/dist/docs/development/guides/data/01-introduction.md +34 -0
  199. package/dist/docs/development/guides/data/02-adding-data.md +86 -0
  200. package/dist/docs/development/guides/data/03a-adding-schemas-to-data-stores.md +73 -0
  201. package/dist/docs/development/guides/data/_category_.json +11 -0
  202. package/dist/docs/development/guides/data/ownership-and-components/01-owners.md +45 -0
  203. package/dist/docs/development/guides/data/ownership-and-components/02-components.md +17 -0
  204. package/dist/docs/development/guides/data/ownership-and-components/_category_.json +11 -0
  205. package/dist/docs/development/guides/data/versioning-and-lifecycle/01-versioning.md +32 -0
  206. package/dist/docs/development/guides/data/versioning-and-lifecycle/02-changelog.md +57 -0
  207. package/dist/docs/development/guides/data/versioning-and-lifecycle/03-deprecating.md +71 -0
  208. package/dist/docs/development/guides/data/versioning-and-lifecycle/_category_.json +11 -0
  209. package/dist/docs/development/guides/data-products/01-introduction.md +116 -0
  210. package/dist/docs/development/guides/data-products/02-adding-data-products.md +157 -0
  211. package/dist/docs/development/guides/data-products/03-inputs-and-outputs.md +128 -0
  212. package/dist/docs/development/guides/data-products/04-contracts.md +102 -0
  213. package/dist/docs/development/guides/data-products/05-versioning.md +240 -0
  214. package/dist/docs/development/guides/data-products/06-adding-to-domains.md +52 -0
  215. package/dist/docs/development/guides/data-products/_category_.json +11 -0
  216. package/dist/docs/development/guides/diagrams/01-introduction.md +78 -0
  217. package/dist/docs/development/guides/diagrams/02-creating-diagrams.md +195 -0
  218. package/dist/docs/development/guides/diagrams/03-referencing-diagrams.md +195 -0
  219. package/dist/docs/development/guides/diagrams/04-versioning-diagrams.md +204 -0
  220. package/dist/docs/development/guides/diagrams/05-comparing-diagrams.md +145 -0
  221. package/dist/docs/development/guides/diagrams/06-diagrams-with-llms.md +165 -0
  222. package/dist/docs/development/guides/diagrams/_category_.json +10 -0
  223. package/dist/docs/development/guides/domains/01-introduction.md +22 -0
  224. package/dist/docs/development/guides/domains/02-creating-domains/02-adding-domains.md +108 -0
  225. package/dist/docs/development/guides/domains/02-creating-domains/02a-subdomains.md +84 -0
  226. package/dist/docs/development/guides/domains/02-creating-domains/03-adding-services-to-domains.md +90 -0
  227. package/dist/docs/development/guides/domains/02-creating-domains/04-adding-messages-to-domains.md +107 -0
  228. package/dist/docs/development/guides/domains/02-creating-domains/05-adding-data-products-to-domains.md +105 -0
  229. package/dist/docs/development/guides/domains/02-creating-domains/_category_.json +11 -0
  230. package/dist/docs/development/guides/domains/03-ownership-and-language/01-owners.md +36 -0
  231. package/dist/docs/development/guides/domains/03-ownership-and-language/02-adding-ubiquitous-language.md +75 -0
  232. package/dist/docs/development/guides/domains/03-ownership-and-language/_category_.json +10 -0
  233. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/01-versioning.md +40 -0
  234. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/02-changelog.md +53 -0
  235. package/dist/docs/development/guides/domains/04-versioning-and-changelogs/_category_.json +10 -0
  236. package/dist/docs/development/guides/domains/05-entities/01-introduction.md +24 -0
  237. package/dist/docs/development/guides/domains/05-entities/02-adding-entities.md +157 -0
  238. package/dist/docs/development/guides/domains/05-entities/03-adding-entities-to-domains.md +30 -0
  239. package/dist/docs/development/guides/domains/05-entities/04-domain-entity-map.md +134 -0
  240. package/dist/docs/development/guides/domains/05-entities/_category_.json +11 -0
  241. package/dist/docs/development/guides/domains/08-domain-integration-map.md +41 -0
  242. package/dist/docs/development/guides/domains/_category_.json +11 -0
  243. package/dist/docs/development/guides/flows/01-introduction.md +36 -0
  244. package/dist/docs/development/guides/flows/02-adding-flows.md +198 -0
  245. package/dist/docs/development/guides/flows/03-flow-nodes.md +273 -0
  246. package/dist/docs/development/guides/flows/04-adding-flows-to-services.md +42 -0
  247. package/dist/docs/development/guides/flows/05-adding-flows-to-domains.md +43 -0
  248. package/dist/docs/development/guides/flows/06-versioning.md +27 -0
  249. package/dist/docs/development/guides/flows/07-create-flow-with-ai.md +171 -0
  250. package/dist/docs/development/guides/flows/_category_.json +11 -0
  251. package/dist/docs/development/guides/messages/01-overview.md +57 -0
  252. package/dist/docs/development/guides/messages/_category_.json +11 -0
  253. package/dist/docs/development/guides/messages/commands/01-introduction.md +26 -0
  254. package/dist/docs/development/guides/messages/commands/02-adding-commands.md +131 -0
  255. package/dist/docs/development/guides/messages/commands/_category_.json +11 -0
  256. package/dist/docs/development/guides/messages/common/01-map-to-producers-and-consumers.md +37 -0
  257. package/dist/docs/development/guides/messages/common/02-adding-schemas.md +58 -0
  258. package/dist/docs/development/guides/messages/common/02-deprecating.md +71 -0
  259. package/dist/docs/development/guides/messages/common/02-draft-messages.md +63 -0
  260. package/dist/docs/development/guides/messages/common/02-examples.md +99 -0
  261. package/dist/docs/development/guides/messages/common/03-owners.md +40 -0
  262. package/dist/docs/development/guides/messages/common/04-versioning.md +27 -0
  263. package/dist/docs/development/guides/messages/common/05-changelog.md +73 -0
  264. package/dist/docs/development/guides/messages/common/07-components.md +12 -0
  265. package/dist/docs/development/guides/messages/common/08-shared-messages-across-boundaries.md +70 -0
  266. package/dist/docs/development/guides/messages/common/09-grouping-messages.md +98 -0
  267. package/dist/docs/development/guides/messages/common/_category_.json +11 -0
  268. package/dist/docs/development/guides/messages/events/01-introduction.md +25 -0
  269. package/dist/docs/development/guides/messages/events/02-adding-events.md +130 -0
  270. package/dist/docs/development/guides/messages/events/_category_.json +11 -0
  271. package/dist/docs/development/guides/messages/queries/01-introduction.md +25 -0
  272. package/dist/docs/development/guides/messages/queries/02-adding-queries.md +130 -0
  273. package/dist/docs/development/guides/messages/queries/_category_.json +11 -0
  274. package/dist/docs/development/guides/owners/_category_.json +11 -0
  275. package/dist/docs/development/guides/owners/teams/01-introduction.md +21 -0
  276. package/dist/docs/development/guides/owners/teams/02-adding-teams.md +73 -0
  277. package/dist/docs/development/guides/owners/teams/_category_.json +11 -0
  278. package/dist/docs/development/guides/owners/users/01-introduction.md +20 -0
  279. package/dist/docs/development/guides/owners/users/02-adding-users.md +70 -0
  280. package/dist/docs/development/guides/owners/users/_category_.json +11 -0
  281. package/dist/docs/development/guides/schemas/01-introduction.md +64 -0
  282. package/dist/docs/development/guides/schemas/02-schema-explorer.md +74 -0
  283. package/dist/docs/development/guides/schemas/03-schema-api.md +59 -0
  284. package/dist/docs/development/guides/schemas/04-schema-mcp.md +22 -0
  285. package/dist/docs/development/guides/schemas/05-field-usage.md +120 -0
  286. package/dist/docs/development/guides/schemas/06-fields-explorer.md +120 -0
  287. package/dist/docs/development/guides/schemas/_category_.json +11 -0
  288. package/dist/docs/development/guides/services/01-introduction.md +33 -0
  289. package/dist/docs/development/guides/services/02-adding-services.md +113 -0
  290. package/dist/docs/development/guides/services/03-creating-external-systems.md +71 -0
  291. package/dist/docs/development/guides/services/_category_.json +11 -0
  292. package/dist/docs/development/guides/services/adding-to-services/01-messages.md +229 -0
  293. package/dist/docs/development/guides/services/adding-to-services/02-datastores.md +77 -0
  294. package/dist/docs/development/guides/services/adding-to-services/03-entities.md +47 -0
  295. package/dist/docs/development/guides/services/adding-to-services/04-openapi.md +97 -0
  296. package/dist/docs/development/guides/services/adding-to-services/05-asyncapi.md +97 -0
  297. package/dist/docs/development/guides/services/adding-to-services/06-graphql.md +96 -0
  298. package/dist/docs/development/guides/services/adding-to-services/_category_.json +10 -0
  299. package/dist/docs/development/guides/services/ownership-and-components/01-owners.md +41 -0
  300. package/dist/docs/development/guides/services/ownership-and-components/02-components.md +13 -0
  301. package/dist/docs/development/guides/services/ownership-and-components/_category_.json +11 -0
  302. package/dist/docs/development/guides/services/versioning-and-lifecycle/01-versioning.md +27 -0
  303. package/dist/docs/development/guides/services/versioning-and-lifecycle/02-changelog.md +52 -0
  304. package/dist/docs/development/guides/services/versioning-and-lifecycle/03-deprecating.md +70 -0
  305. package/dist/docs/development/guides/services/versioning-and-lifecycle/_category_.json +11 -0
  306. package/dist/docs/development/upgrading/_category_.json +12 -0
  307. package/dist/docs/development/upgrading/upgrading.md +142 -0
  308. package/dist/docs/development/upgrading/v2.md +69 -0
  309. package/dist/docs/development/upgrading/v3.md +277 -0
  310. package/dist/docs/miro/_category_.json +12 -0
  311. package/dist/docs/miro/contributing/01-getting-involved.md +53 -0
  312. package/dist/docs/miro/contributing/_category_.json +11 -0
  313. package/dist/docs/miro/getting-started/01-overview.md +63 -0
  314. package/dist/docs/miro/getting-started/02-installation.md +37 -0
  315. package/dist/docs/miro/getting-started/03-connecting-to-eventcatalog.md +59 -0
  316. package/dist/docs/miro/getting-started/_category_.json +11 -0
  317. package/dist/docs/miro/guides/01-adding-resources-to-board.md +90 -0
  318. package/dist/docs/miro/guides/02-creating-new-resources.md +61 -0
  319. package/dist/docs/miro/guides/03-editing-resources.md +50 -0
  320. package/dist/docs/miro/guides/04-connected-resources.md +54 -0
  321. package/dist/docs/miro/guides/05-services-and-dependencies.md +54 -0
  322. package/dist/docs/miro/guides/06-navigating-the-board.md +44 -0
  323. package/dist/docs/miro/guides/07-exporting-to-eventcatalog.md +75 -0
  324. package/dist/docs/miro/guides/_category_.json +11 -0
  325. package/dist/docs/miro/specifications/01-asyncapi.md +86 -0
  326. package/dist/docs/miro/specifications/02-openapi.md +86 -0
  327. package/dist/docs/miro/specifications/03-schema-registries.md +88 -0
  328. package/dist/docs/miro/specifications/_category_.json +11 -0
  329. package/dist/docs/miro/using-ai/01-overview.md +105 -0
  330. package/dist/docs/miro/using-ai/_category_.json +11 -0
  331. package/dist/docs/plugins/01-intro.md +49 -0
  332. package/dist/docs/plugins/02-generators.md +76 -0
  333. package/dist/docs/plugins/03-all-plugins.md +26 -0
  334. package/dist/docs/plugins/_category_.json +12 -0
  335. package/dist/docs/plugins/amazon-apigateway/00-intro.md +75 -0
  336. package/dist/docs/plugins/amazon-apigateway/01-installation.md +198 -0
  337. package/dist/docs/plugins/amazon-apigateway/02-plugin-configuration.md +136 -0
  338. package/dist/docs/plugins/amazon-apigateway/03-features.md +71 -0
  339. package/dist/docs/plugins/amazon-apigateway/04-examples.md +15 -0
  340. package/dist/docs/plugins/amazon-apigateway/_category_.json +11 -0
  341. package/dist/docs/plugins/apicurio/00-intro.md +102 -0
  342. package/dist/docs/plugins/apicurio/01-installation.md +165 -0
  343. package/dist/docs/plugins/apicurio/02-plugin-configuration.md +682 -0
  344. package/dist/docs/plugins/apicurio/03-features.md +221 -0
  345. package/dist/docs/plugins/apicurio/04-examples.md +20 -0
  346. package/dist/docs/plugins/apicurio/_category_.json +12 -0
  347. package/dist/docs/plugins/asyncapi/00-intro.md +81 -0
  348. package/dist/docs/plugins/asyncapi/01-installation.md +155 -0
  349. package/dist/docs/plugins/asyncapi/02-plugin-configuration.md +312 -0
  350. package/dist/docs/plugins/asyncapi/03-features.md +698 -0
  351. package/dist/docs/plugins/asyncapi/03a-workflows.md +153 -0
  352. package/dist/docs/plugins/asyncapi/04-examples.md +23 -0
  353. package/dist/docs/plugins/asyncapi/04-using-reference-objects.md +45 -0
  354. package/dist/docs/plugins/asyncapi/_category_.json +12 -0
  355. package/dist/docs/plugins/aws-glue-registry/00-intro.md +104 -0
  356. package/dist/docs/plugins/aws-glue-registry/00a-installation.md +305 -0
  357. package/dist/docs/plugins/aws-glue-registry/01-features.md +287 -0
  358. package/dist/docs/plugins/aws-glue-registry/02-examples.md +368 -0
  359. package/dist/docs/plugins/aws-glue-registry/03-api.md +282 -0
  360. package/dist/docs/plugins/aws-glue-registry/_category_.json +11 -0
  361. package/dist/docs/plugins/azure-schema-registry/00-intro.md +92 -0
  362. package/dist/docs/plugins/azure-schema-registry/01-installation.md +409 -0
  363. package/dist/docs/plugins/azure-schema-registry/02-plugin-configuration.md +375 -0
  364. package/dist/docs/plugins/azure-schema-registry/03-features.md +347 -0
  365. package/dist/docs/plugins/azure-schema-registry/04-examples.md +378 -0
  366. package/dist/docs/plugins/azure-schema-registry/_category_.json +12 -0
  367. package/dist/docs/plugins/backstage/00-intro.md +67 -0
  368. package/dist/docs/plugins/backstage/01-installation.md +250 -0
  369. package/dist/docs/plugins/backstage/02-api.md +51 -0
  370. package/dist/docs/plugins/backstage/03-examples.md +12 -0
  371. package/dist/docs/plugins/backstage/_category_.json +11 -0
  372. package/dist/docs/plugins/confluent-schema-registry/00-intro.md +90 -0
  373. package/dist/docs/plugins/confluent-schema-registry/01-installation.md +223 -0
  374. package/dist/docs/plugins/confluent-schema-registry/02-plugin-configuration.md +473 -0
  375. package/dist/docs/plugins/confluent-schema-registry/03-features.md +43 -0
  376. package/dist/docs/plugins/confluent-schema-registry/04-examples.md +19 -0
  377. package/dist/docs/plugins/confluent-schema-registry/_category_.json +12 -0
  378. package/dist/docs/plugins/eventbridge/00-intro.md +55 -0
  379. package/dist/docs/plugins/eventbridge/00a-installation.md +317 -0
  380. package/dist/docs/plugins/eventbridge/01-features.md +225 -0
  381. package/dist/docs/plugins/eventbridge/02-examples.md +17 -0
  382. package/dist/docs/plugins/eventbridge/03-api.md +441 -0
  383. package/dist/docs/plugins/eventbridge/03a-workflows.md +133 -0
  384. package/dist/docs/plugins/eventbridge/_category_.json +11 -0
  385. package/dist/docs/plugins/eventcatalog-federation/00-introduction.md +69 -0
  386. package/dist/docs/plugins/eventcatalog-federation/01-installation.md +182 -0
  387. package/dist/docs/plugins/eventcatalog-federation/02-plugin-configuration.md +208 -0
  388. package/dist/docs/plugins/eventcatalog-federation/03-examples.md +15 -0
  389. package/dist/docs/plugins/eventcatalog-federation/04-configuration.md +193 -0
  390. package/dist/docs/plugins/eventcatalog-federation/05-setup-team-catalog.md +97 -0
  391. package/dist/docs/plugins/eventcatalog-federation/_category_.json +11 -0
  392. package/dist/docs/plugins/github/00-intro.md +93 -0
  393. package/dist/docs/plugins/github/01-installation.md +293 -0
  394. package/dist/docs/plugins/github/02-plugin-configuration.md +253 -0
  395. package/dist/docs/plugins/github/03-features.md +42 -0
  396. package/dist/docs/plugins/github/04-examples.md +17 -0
  397. package/dist/docs/plugins/github/_category_.json +12 -0
  398. package/dist/docs/plugins/graphql/00-intro.md +74 -0
  399. package/dist/docs/plugins/graphql/01-installation.md +144 -0
  400. package/dist/docs/plugins/graphql/02-plugin-configuration.md +127 -0
  401. package/dist/docs/plugins/graphql/03-features.md +197 -0
  402. package/dist/docs/plugins/graphql/04-examples.md +15 -0
  403. package/dist/docs/plugins/graphql/_category_.json +12 -0
  404. package/dist/docs/plugins/hookdeck/01-intro.md +152 -0
  405. package/dist/docs/plugins/hookdeck/02-api.md +133 -0
  406. package/dist/docs/plugins/hookdeck/03-cli.md +45 -0
  407. package/dist/docs/plugins/hookdeck/_category_.json +11 -0
  408. package/dist/docs/plugins/openapi/00-intro.md +78 -0
  409. package/dist/docs/plugins/openapi/01-installation.md +148 -0
  410. package/dist/docs/plugins/openapi/02-plugin-configuration.md +332 -0
  411. package/dist/docs/plugins/openapi/03-features.md +790 -0
  412. package/dist/docs/plugins/openapi/03a-workflows.md +153 -0
  413. package/dist/docs/plugins/openapi/04-examples.md +23 -0
  414. package/dist/docs/plugins/openapi/_category_.json +12 -0
  415. package/dist/eventcatalog.cjs +1 -1
  416. package/dist/eventcatalog.js +5 -5
  417. package/dist/generate.cjs +1 -1
  418. package/dist/generate.js +3 -3
  419. package/dist/utils/cli-logger.cjs +1 -1
  420. package/dist/utils/cli-logger.js +2 -2
  421. package/eventcatalog/src/components/Search/SearchModal.tsx +23 -34
  422. package/eventcatalog/src/components/Search/search-utils.spec.ts +36 -0
  423. package/eventcatalog/src/components/Search/search-utils.ts +34 -0
  424. package/eventcatalog/src/components/SideNav/NestedSideBar/SearchBar.tsx +7 -1
  425. package/eventcatalog/src/components/SideNav/NestedSideBar/index.tsx +2 -0
  426. package/eventcatalog/src/stores/sidebar-store/builders/flow.ts +77 -0
  427. package/eventcatalog/src/stores/sidebar-store/builders/message.ts +10 -1
  428. package/eventcatalog/src/stores/sidebar-store/builders/service.ts +10 -3
  429. package/eventcatalog/src/stores/sidebar-store/state.ts +126 -2
  430. package/eventcatalog/src/utils/collections/flows.ts +3 -2
  431. package/package.json +4 -4
@@ -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
+ ![Authentication](./img/auth.png)
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,11 @@
1
+ {
2
+ "label": "Authentication",
3
+ "position": 10,
4
+ "collapsible": true,
5
+ "collapsed": true,
6
+ "link": {
7
+ "type": "generated-index",
8
+ "slug": "/development/guides/auth",
9
+ "description": "Authentication for EventCatalog"
10
+ }
11
+ }
@@ -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
+ ![GitHub authentication](./img/github-auth.png)
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
+ ![Google authentication](./img/google-auth.png)
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
+