@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,790 @@
1
+ ---
2
+ sidebar_position: 1
3
+ keywords:
4
+ - components
5
+ sidebar_label: Features
6
+ title: Features
7
+ description: Features of OpenAPI with EventCatalog
8
+ ---
9
+
10
+ import AddedIn from '@site/src/components/MDX/AddedIn';
11
+ import PluginLicense from '@site/src/components/MDX/PluginLicense';
12
+ import Tabs from '@theme/Tabs';
13
+ import TabItem from '@theme/TabItem';
14
+
15
+ <!-- <AddedIn version="2.6.0"/> -->
16
+ <PluginLicense url="#commercial-use" />
17
+
18
+ <!-- Table -->
19
+ | Feature | Use cases |
20
+ |---------|-----------|
21
+ | [Mapping messages as commands, queries or events](#mapping-messages-as-commands-queries-or-events) | OpenAPI does not have the concept of commands, queries or events, everything is a message (endpoint). Using the EventCatalog extension you can map your payloads as commands, queries or events. |
22
+ | [Assign owners to your domains, services and messages](#assign-owners-to-your-domains-services-and-messages) | Set ownership of your service, and it's messages. Let your teams understand who owns what. |
23
+ | [Creating draft domains, services and messages](#creating-draft-domains-services-and-messages) | Evolve your specifications. Mark endpoints as draft for your teams. This can help you highlight which endpoints are still in development or draft. |
24
+ | [Map many OpenAPI files to a single service](#map-many-openapi-files-to-a-single-service) | If your service exposes multiple APIs, you can map many OpenAPI files to a single service. |
25
+ | [Custom versioning with x-eventcatalog-message-version](#custom-versioning-with-x-eventcatalog-message-version) | By default this plugin will use the OpenAPI version for all your messages. You can use the `x-eventcatalog-message-version` extension to specify a different version for a particular message. |
26
+ | [Fetch OpenAPI files by URL](#fetch-openapi-files-by-url) | You can use the `path` property of the generator to specify a path to your local file system or an external URL, or you can mix both of them. |
27
+ | [Authenticate remote URLs](#authenticate-remote-urls) | Use HTTP headers to access protected OpenAPI files from authenticated URLs. |
28
+ | [Define EventCatalog ids and names in your OpenAPI specification file](#define-eventcatalog-ids-and-names-in-your-openapi-specification-file) | EventCatalog messages (commands, queries and events) have two important properties, these are `id` and `name`. |
29
+ | [Define messages a service sends or receives](#define-messages-a-service-sends-or-receives) | **By default all messages in your OpenAPI spec file are documented as messages that are received by your service** (e.g a route with /getOrders will be a query/command/event that the service accepts). You can override this by using the `x-eventcatalog-message-action` extension. |
30
+ | [Deprecating messages](#deprecating-messages) | To mark messages as deprecated you can use the `deprecated` field or the `x-eventcatalog-deprecated-date` and `x-eventcatalog-deprecated-message` extensions. |
31
+ | [Persist markdown](#persist-markdown) | When you generate your OpenAPI files your markdown on your domains,services, and messages in EventCatalog is persisted between versions. This allows you to add [custom components](/docs/custom-components), our [MDX components](/docs/components) and customize your EventCatalog pages without losing changes when you version your OpenAPI files. |
32
+ | [Automatic versioning](#automatic-versioning) | When you change versions in your OpenAPI file and run generate, your services and messages are automatically versioned. This allows you to keep an audit log of changes between OpenAPI files, schemas and more. |
33
+ | [Downloading schemas](#downloading-schemas) | If your messages have schemas EventCatalog will document these for you. Run your generator and every message will show it's schema on the UI and give users the ability to download it's schema. |
34
+ | [Parse examples from operations](#parse-examples-from-operations) | Automatically extract request body and response examples from your OpenAPI operations and save them as JSON files alongside your messages in EventCatalog. |
35
+ | [Define consumer services](#define-consumer-services) | Declare which services consume the messages generated from an OpenAPI spec, with optional route-based filtering to limit which messages each consumer sends to. |
36
+ | [Group messages](#group-messages) | Group related messages together in the visualiser for easier navigation of large APIs. |
37
+
38
+ ### Define consumer services
39
+
40
+ <AddedIn version="7.11." pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
41
+
42
+ EventCatalog will document who **owns** the service. You can also define consumers of your APIs. This can help you document which services are calling your endpoints to help with future maintenance of your APIs and develop a shared understanding.
43
+
44
+ Add a `consumers` array to any service in your generator config to declare which other services send requests to that service. Each consumer entry needs at minimum an `id`; a `version` and `routes` filter are both optional.
45
+
46
+ ```js title="eventcatalog.config.js"
47
+ generators: [
48
+ [
49
+ '@eventcatalog/generator-openapi',
50
+ {
51
+ services: [
52
+ {
53
+ path: path.join(__dirname, 'openapi-files', 'orders-service.yml'),
54
+ id: 'orders-service',
55
+ consumers: [
56
+ // Sends to all messages from the service
57
+ { id: 'audit-service' },
58
+ // Pinned to a specific version
59
+ { id: 'billing-service', version: '1.0.0' },
60
+ // Only messages whose path ends with /events
61
+ { id: 'notifications-service', routes: [{ suffix: '/events' }] },
62
+ // Only messages matching a wildcard pattern
63
+ { id: 'analytics', routes: [{ match: '/api/*/track' }] },
64
+ ],
65
+ },
66
+ ],
67
+ domain: { id: 'orders', name: 'Orders', version: '0.0.1' },
68
+ },
69
+ ],
70
+ ],
71
+ ```
72
+
73
+ #### Route filtering
74
+
75
+ Route filters let you limit which messages a consumer sends to based on the API path of each operation. Omitting `routes` means the consumer sends to every message from the service.
76
+
77
+ Each filter object supports four matching strategies:
78
+
79
+ | Key | Behaviour | Example |
80
+ |-----|-----------|---------|
81
+ | `path` | Exact match | `{ path: '/orders/{id}' }` |
82
+ | `prefix` | Path starts with the value | `{ prefix: '/orders' }` |
83
+ | `suffix` | Path ends with the value | `{ suffix: '/events' }` |
84
+ | `match` | Wildcard match (`*` spans one or more path segments) | `{ match: '/api/*/track' }` |
85
+
86
+ All keys in a single filter object must match (AND). Multiple filter objects in the array are evaluated as OR, so a message is included if it satisfies any one of them.
87
+
88
+ ```js title="Filter examples"
89
+ // Exact path only
90
+ routes: [{ path: '/orders/{id}' }]
91
+
92
+ // Paths under /orders OR paths ending with /events
93
+ routes: [{ prefix: '/orders' }, { suffix: '/events' }]
94
+
95
+ // Path must start with /api AND end with /events (AND within one object)
96
+ routes: [{ prefix: '/api', suffix: '/events' }]
97
+
98
+ // Wildcard: matches /api/orders/track, /api/payments/track, etc.
99
+ routes: [{ match: '/api/*/track' }]
100
+ ```
101
+
102
+ #### How consumers are created and updated
103
+
104
+ When the generator runs, each consumer service is looked up by `id` and `version`. If a consumer service does not yet exist, it is created automatically with a basic `<NodeGraph />` page. New consumers are placed inside the configured `domain` if one is defined.
105
+
106
+ If the consumer already exists in the catalog, it is updated in-place so its existing markdown, location, and metadata are preserved. The `sends` list on the consumer is merged with the incoming messages, with deduplication applied. If a consumer entry already tracks a versioned message, its version is updated to the latest value from the spec.
107
+
108
+ ---
109
+
110
+ ### Mapping messages as commands, queries or events
111
+
112
+ OpenAPI does not distinguish between commands, events and queries, everything is a message.
113
+
114
+ Using the EventCatalog custom OpenAPI extension you can specify if your messages are queries, commands or events.
115
+
116
+ You can use the `x-eventcatalog-message-type` to specify the type of message.
117
+
118
+ **By default everything parsed by EventCatalog is a query**, unless you specify with the x-eventcatalog-message-type extension.
119
+
120
+ ```yml title="x-eventcatalog-message-type example"
121
+ paths:
122
+ /pets:
123
+ get:
124
+ summary: List all pets
125
+ operationId: listPets
126
+ tags:
127
+ - pets
128
+ x-eventcatalog-message-type: query # command, query, or event
129
+ parameters:
130
+ - name: limit
131
+ in: query
132
+ description: How many items to return at one time (max 100)
133
+ required: false
134
+ schema:
135
+ type: integer
136
+ maximum: 100
137
+ format: int32
138
+ ```
139
+ ---
140
+
141
+ ### Assign owners to your domains, services and messages
142
+
143
+ <AddedIn version="4.0.3" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
144
+
145
+ You can set owners to your domains and services. Setting owners to services will also set the owner to all messages in the service.
146
+
147
+ To do this you can use the `owners` property in the service or domain.
148
+
149
+ ```js title="eventcatalog.config.js"
150
+ // ..rest of file
151
+ generators: [
152
+ [
153
+ '@eventcatalog/generator-openapi',
154
+ {
155
+ services: [
156
+ // here we assign owners to the service (owners documented in EventCatalog)
157
+ // The owners will also be set to all messages in the service
158
+ { path: path.join(__dirname, 'openapi-files', 'orders-service.yml'), id: 'orders-service', owners: ['dboyne', 'team-1'] },
159
+ // If you don't want to set owners to all messages you can use the setMessageOwnersToServiceOwners flag
160
+ { path: path.join(__dirname, 'openapi-files', 'orders-service.yml'), id: 'orders-service', owners: ['dboyne', 'team-1'], setMessageOwnersToServiceOwners: false },
161
+ ],
162
+ // You can also set owners to the domain, this does not cascade to the services or messages
163
+ domain: { id: 'orders', name: 'Orders', version: '0.0.1', owners: ['dboyne', 'team-1'] },
164
+ },
165
+ ],
166
+ ],
167
+ };
168
+
169
+ ```
170
+
171
+ ---
172
+
173
+ ### Creating draft domains, services and messages
174
+
175
+ <AddedIn version="7.3.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
176
+
177
+ You can create draft domains, services and messages in EventCatalog from your OpenAPI files.
178
+
179
+ ![Draft resources](../img/draft-resource.png)
180
+
181
+ **Use case:**
182
+
183
+ - You want to create a service in EventCatalog that is not yet implemented or going through feedback/design phase.
184
+ - You want to introduce a new endpoint to your service, but warn users that it is not yet implemented or still in development or draft.
185
+ - You want to introduce a whole new domain, but warn users everything in the domain is still in development or draft.
186
+
187
+ **Getting started**
188
+
189
+ You have a few options to create draft resources from your specification files.
190
+
191
+ - `domain.draft` - If true, the domain will be drafted in EventCatalog with all it's services / messages.
192
+ - `service.draft` - If true, the service will be drafted in EventCatalog with all it's endpoints / messages.
193
+
194
+ You can also choose to use OpenAPI extensions to create draft resources.
195
+
196
+ - `x-eventcatalog-draft` - If true, the resource will be drafted in EventCatalog (e.g service and messages).
197
+
198
+ <details>
199
+ <summary>Example of creating draft resources through domains (configuration)</summary>
200
+
201
+ Setting the `draft` property to true will create a draft domain with all it's services and messages in EventCatalog.
202
+
203
+ ```js title="eventcatalog.config.js"
204
+ // ..rest of file
205
+ generators: [
206
+ [
207
+ '@eventcatalog/generator-openapi',
208
+ {
209
+ domain: { id: 'orders', name: 'Orders', version: '0.0.1', draft: true },
210
+ },
211
+ ],
212
+ ],
213
+ };
214
+ ```
215
+ </details>
216
+ <details>
217
+ <summary>Example of creating draft resources through services (configuration)</summary>
218
+
219
+ Setting the `draft` property to true will create a draft service with all it's messages in EventCatalog.
220
+
221
+ ```js title="eventcatalog.config.js"
222
+ // ..rest of file
223
+ generators: [
224
+ [
225
+ '@eventcatalog/generator-openapi',
226
+ {
227
+ services: [
228
+ { path: path.join(__dirname, 'openapi-files', 'orders-service.yml'), id: 'orders-service', draft: true },
229
+ ],
230
+ },
231
+ ],
232
+ ],
233
+ };
234
+ ```
235
+
236
+ In this example the **Orders Service** and all it's messages will be marked as draft in EventCatalog.
237
+ </details>
238
+ <details>
239
+ <summary>Example marking service as draft (OpenAPI extension)</summary>
240
+
241
+ Setting the `x-eventcatalog-draft` extension to true will mark the service as draft in EventCatalog.
242
+
243
+ ```yml title="x-eventcatalog-draft example"
244
+ openapi: 3.0.0
245
+ info:
246
+ title: Pet Service
247
+ version: 1.0.0
248
+ # Here we mark the service as draft
249
+ x-eventcatalog-draft: true
250
+ paths:
251
+ /pets:
252
+ get:
253
+ summary: List all pets
254
+ operationId: listPets
255
+ tags:
256
+ - pets
257
+ ```
258
+
259
+ In this example the **Pet Service** and the `/pets` endpoint will be marked as draft in EventCatalog.
260
+
261
+ </details>
262
+ <details>
263
+ <summary>Example marking a message as draft (OpenAPI extension)</summary>
264
+
265
+ Setting the `x-eventcatalog-draft` extension to true will mark the message as draft in EventCatalog.
266
+
267
+ ```yml title="x-eventcatalog-draft example"
268
+ openapi: 3.0.0
269
+ info:
270
+ title: Pet Service
271
+ version: 1.0.0
272
+ paths:
273
+ /pets:
274
+ get:
275
+ summary: List all pets
276
+ operationId: listPets
277
+ x-eventcatalog-draft: true # This will mark the message as draft
278
+ tags:
279
+ - pets
280
+ ```
281
+
282
+ In this example we mark the message `listPets` as draft but the service is not marked as draft in EventCatalog.
283
+
284
+ This can be useful if you want to introduce a new endpoint, but warn users that it is not yet implemented or still in development or draft.
285
+
286
+ </details>
287
+
288
+
289
+ ---
290
+
291
+ ### Map many OpenAPI files to a single service
292
+
293
+ <AddedIn version="6.0.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
294
+
295
+ If your service exposes multiple APIs, you can map many OpenAPI files to a single service.
296
+
297
+ ```js title="eventcatalog.config.js"
298
+ // ..rest of file
299
+ generators: [
300
+ [
301
+ '@eventcatalog/generator-openapi',
302
+ {
303
+ services: [
304
+ // Here we map two OpenAPI files to a single service
305
+ {
306
+ path: [
307
+ path.join(__dirname, 'openapi-files', 'orders-service-v1.yml'),
308
+ path.join(__dirname, 'openapi-files', 'orders-service-v2.yml')
309
+ ],
310
+ id: 'orders-service', owners: ['dboyne', 'team-1']
311
+ },
312
+ ],
313
+ // You can also set owners to the domain, this does not cascade to the services or messages
314
+ domain: { id: 'orders', name: 'Orders', version: '0.0.1', owners: ['dboyne', 'team-1'] },
315
+ },
316
+ ],
317
+ ],
318
+ };
319
+
320
+ ```
321
+
322
+ ---
323
+
324
+ #### How does mapping multiple OpenAPI files to a single service work?
325
+
326
+ The OpenAPI plugin will parse all the files in the `path` array. The are ordered by version (info.version).
327
+
328
+ Old versions are parsed first and versioned in your catalog along side the messages.
329
+
330
+ The latest version is parsed last and will be used as the current version in your catalog.
331
+
332
+ You can try this demo out for yourself by running the [mapping-many-openapi-files-to-a-service example](https://github.com/event-catalog/generators/tree/main/examples/generator-openapi/mapping-many-openapi-files-to-a-service).
333
+
334
+ ---
335
+
336
+ ### Custom versioning with x-eventcatalog-message-version
337
+
338
+ <AddedIn version="3.3.2" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
339
+
340
+ By default this plugin will use the OpenAPI version for all your messages.
341
+
342
+ You can use the `x-eventcatalog-message-version` extension to specify a different version for a particular message.
343
+
344
+ ```yml title="x-eventcatalog-message-version example"
345
+ openapi: '3.0.0'
346
+ info:
347
+ title: Test Service
348
+ version: 1.0.0
349
+ paths:
350
+ /pets:
351
+ get:
352
+ summary: List all pets
353
+ operationId: listPets
354
+ tags:
355
+ - pets
356
+ x-eventcatalog-message-version: 5.0.0
357
+ ```
358
+
359
+ In the example above, the message `listPets` will be versioned as `5.0.0` and all other messages will be versioned as `1.0.0`.
360
+
361
+ This feature lets you control the version of your messages individually.
362
+
363
+ ### Fetch OpenAPI files by URL
364
+
365
+ <AddedIn version="3.1.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
366
+
367
+ You can use the `path` property of the generator to specify a path to your local file system or an external URL, or you can mix both of them.
368
+
369
+ ```js
370
+ [
371
+ '@eventcatalog/generator-asyncapi',
372
+ {
373
+ services: [
374
+ // Add OpenAPI file by public URL
375
+ { path: "https://raw.githubusercontent.com/event-catalog/generator-openapi/refs/heads/main/examples/product-api/openapi.yml", id: "Product Service"},
376
+ // Add OpenAPI file using file system
377
+ { path: path.join(__dirname, 'openapi-files', 'fraud-detection-service.yml'), "Fraud Service"}
378
+ ],
379
+ domain: { id: 'payment', name: 'Payment', version: '0.0.1' },
380
+
381
+ // Parse the YML before we save it to the catalog (optional) (http://localhost:3000/docs/development/plugins/open-api/api#saveParsedSpecFile)
382
+ saveParsedSpecFile: true,
383
+
384
+ // Run in debug mode, for extra output, if your AsyncAPI fails to parse, it will tell you why
385
+ debug: true,
386
+ },
387
+ ],
388
+ ```
389
+
390
+ :::info URLS for OpenAPI files
391
+
392
+ The path can be the file path to your local file system or an external URL. The external URL has to be accessible from the machine running the generator.
393
+ :::
394
+
395
+ ### Authenticate remote URLs
396
+
397
+ When fetching OpenAPI files from authenticated URLs, provide HTTP headers using the `headers` property.
398
+
399
+ This is useful for accessing private specifications from internal registries, API gateways, or other protected endpoints.
400
+
401
+ ```js
402
+ [
403
+ '@eventcatalog/generator-openapi',
404
+ {
405
+ services: [
406
+ {
407
+ path: "https://api.example.com/specs/orders-service.openapi.yml",
408
+ id: "orders-service",
409
+ headers: {
410
+ Authorization: 'Bearer your-api-token',
411
+ 'X-Api-Key': 'your-api-key'
412
+ }
413
+ }
414
+ ],
415
+ domain: { id: 'orders', name: 'Orders', version: '0.0.1' }
416
+ }
417
+ ]
418
+ ```
419
+
420
+ The headers are passed with every HTTP request when fetching the OpenAPI file from the specified URL.
421
+
422
+ ### Define EventCatalog ids and names in your OpenAPI specification file
423
+
424
+ <AddedIn version="3.0.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
425
+
426
+ EventCatalog messages (commands, queries and events) have two important properties, these are `id` and `name`.
427
+
428
+ - id - The id of your message (used for url slugs)
429
+ - name - Friendly name for your message in EventCatalog (used in the UI)
430
+
431
+ The OpenAPI generator will set a default value for the `name` and `id` using the operationId or the service name.
432
+
433
+ If you want more control, you can use the `x-eventcatalog-message-name` and `x-eventcatalog-message-id` extensions to specify the `id` and `name` value.
434
+
435
+ ```yml title="x-eventcatalog-message-type example"
436
+ paths:
437
+ /pets:
438
+ get:
439
+ summary: List all pets
440
+ operationId: listPets
441
+ tags:
442
+ - pets
443
+ x-eventcatalog-message-type: query # command, query, or event
444
+ x-eventcatalog-message-id: list-pets # Used as EventCatalog ID (slug) and reference to the resource
445
+ x-eventcatalog-message-name: List pets # Used by EventCatalog as friendly name for the message
446
+ parameters:
447
+ - name: limit
448
+ in: query
449
+ description: How many items to return at one time (max 100)
450
+ required: false
451
+ schema:
452
+ type: integer
453
+ maximum: 100
454
+ format: int32
455
+ ```
456
+
457
+ ### Define messages a service sends or receives
458
+
459
+ <AddedIn version="2.3.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
460
+
461
+ **By default all messages in your OpenAPI spec file are documented as messages that are received by your service** (e.g a route with /getOrders will be a query/command/event that the service accepts).
462
+
463
+ If you want to specify the relationship of your messages and services (sends or receives) you can do this using the custom extension `x-eventcatalog-message-action`. Which you can define in your OpenAPI files.
464
+
465
+ ```yml title="x-eventcatalog-message-action example"
466
+ paths:
467
+ /pets/{petId}/vaccinated:
468
+ post:
469
+ summary: Notify that a pet has been vaccinated
470
+ operationId: petVaccinated
471
+ tags:
472
+ - pets
473
+ # This tells eventcatalog that this message is sent from this service.
474
+ x-eventcatalog-message-action: sends
475
+ requestBody:
476
+ content:
477
+ application/json:
478
+ schema:
479
+ $ref: '#/components/schemas/Vaccination'
480
+ required: true
481
+ responses:
482
+ '200':
483
+ description: Notification that the pet has been vaccinated successfully
484
+ default:
485
+ description: unexpected error
486
+ content:
487
+ application/json:
488
+ schema:
489
+ $ref: '#/components/schemas/Error'
490
+ ```
491
+
492
+ In the example above, when the generator runs, it will put the message `petVaccinated` as a message the petstore service sends.
493
+
494
+ ### Adding prefix to all messages
495
+
496
+ <AddedIn version="7.4.1" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
497
+
498
+ If you want more control over the ids of the generated messages you can
499
+
500
+ 1. [Define ids nad names using the `x-eventcatalog-message-id` and `x-eventcatalog-message-name` extensions](#define-eventcatalog-ids-and-names-in-your-openapi-specification-file).
501
+ 2. Add a prefix to the id of the generated messages (see below)
502
+
503
+ <Tabs>
504
+ <TabItem value="prefix (with a string)">
505
+
506
+ This will add a prefix to the id of the generated messages. For example a message with the operationId `getOrders` with a configured prefix of `hello-` will be `hello-getOrders`.
507
+
508
+ ```js title="eventcatalog.config.js"
509
+ generators: [
510
+ [
511
+ '@eventcatalog/generator-openapi',
512
+ {
513
+ messages: { id: { prefix: 'hello' } },
514
+ },
515
+ ],
516
+ ],
517
+ ```
518
+ </TabItem>
519
+ <TabItem value="prefix (with custom separator)">
520
+
521
+ This will add a prefix to the id of the generated messages. For example a message with the operationId `getOrders` with a configured prefix of `hello-` and separator of `_` will be `hello_getOrders`.
522
+
523
+ ```js title="eventcatalog.config.js"
524
+ generators: [
525
+ [
526
+ '@eventcatalog/generator-openapi',
527
+ {
528
+ messages: { id: { prefix: 'hello', separator: '_' } },
529
+ },
530
+ ],
531
+ ],
532
+ ```
533
+ </TabItem>
534
+ <TabItem value="prefix (with service id)">
535
+
536
+ This will add the service id to the id of the generated messages. For example a message with the operationId `getOrders` and the service id `orders-service` will be `orders-service-getOrders`.
537
+
538
+ ```js title="eventcatalog.config.js"
539
+ generators: [
540
+ [
541
+ '@eventcatalog/generator-openapi',
542
+ {
543
+ messages: { id: { prefixWithServiceId: true } },
544
+ },
545
+ ],
546
+ ],
547
+ ```
548
+ </TabItem>
549
+ </Tabs>
550
+
551
+
552
+ ### Deprecating messages
553
+
554
+ <AddedIn version="5.0.4" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
555
+
556
+ To mark messages as deprecated you can use the `deprecated` field or the `x-eventcatalog-deprecated-date` and `x-eventcatalog-deprecated-message` extensions.
557
+
558
+ **Deprecated as a boolean**
559
+
560
+ [OpenAPI natively supports deprecating](https://swagger.io/specification/) messages using the `deprecated` field.
561
+
562
+ ```yml title="Deprecated as a boolean"
563
+ paths:
564
+ /pets:
565
+ get:
566
+ summary: List all pets
567
+ operationId: listPets
568
+ deprecated: true
569
+ ```
570
+
571
+ When this deprecated field is set to `true`, the message will be rendered in EventCatalog with a banner indicating that the message is deprecated.
572
+
573
+ ![Deprecated message](../../development/guides/img/deprecated/is-deprecated.png)
574
+
575
+ **Deprecated as an object**
576
+
577
+ If you want more fine grained control over the deprecation date and message, you can use the `x-eventcatalog-deprecated-date` and `x-eventcatalog-deprecated-message` extensions.
578
+
579
+ ```yml title="Deprecated as an object"
580
+ paths:
581
+ /pets:
582
+ get:
583
+ summary: List all pets
584
+ operationId: listPets
585
+ x-eventcatalog-deprecated-date: 2026-05-01
586
+ x-eventcatalog-deprecated-message: |
587
+ This message is **being deprecated** and replaced by the new service **InventoryService**.
588
+ Please contact the [team for more information](mailto:inventory-team@example.com) or visit our [website](https://eventcatalog.dev).
589
+ ```
590
+ This will render a banner in EventCatalog indicating that the message will be deprecated on 2026-05-01.
591
+
592
+ ![Deprecated message](../../development/guides/img/deprecated/will-be-deprecated.png)
593
+
594
+ ### Persist markdown
595
+
596
+ When you generate your OpenAPI files your markdown on your domains,services, and messages in EventCatalog is persisted between versions.
597
+
598
+ This allows you to add [custom components](/docs/custom-components), our [MDX components](/docs/components) and customize your EventCatalog pages without losing changes when you version your OpenAPI files.
599
+
600
+ ### Automatic versioning
601
+
602
+ When you change versions in your OpenAPI file and run generate, your services and messages are automatically versioned. This allows you to keep an audit log of changes between OpenAPI files, schemas and more.
603
+
604
+ You can also add changelogs between different versions of your services and messages. [Read here for more information](/docs/development/guides/messages/common/changelog).
605
+
606
+ ### Downloading schemas
607
+
608
+ If your messages have schemas EventCatalog will document these for you. Run your generator and every message will show it's schema on the UI and give users the ability to download it's schema.
609
+
610
+ The service that is also generated will allow you to see and download the OpenAPI file.
611
+
612
+ ### Group messages
613
+
614
+ <AddedIn version="7.12.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
615
+
616
+ When a service sends or receives many messages, the [visualiser](/docs/development/guides/messages/common/grouping-messages) can become crowded. The `groupMessagesBy` option lets you automatically group related messages together so they collapse into a single node in the visualiser map, making your architecture easier to understand at a glance.
617
+
618
+ ![Message group expanded in the visualiser](./img/message-group-expanded.png)
619
+
620
+ To learn more about how groups work in the visualiser, see [Grouping messages](/docs/development/guides/messages/common/grouping-messages).
621
+
622
+ Three strategies are supported:
623
+
624
+ | Strategy | How the group is determined |
625
+ |----------|----------------------------|
626
+ | `x-extension` | Reads the `x-eventcatalog-group` field on each OpenAPI operation |
627
+ | `path-prefix` | Derives the group from the first meaningful URL path segment, skipping common prefixes like `api`, `v1`, `v2` |
628
+ | `single-group` | Places every operation into a single group called `operations` |
629
+
630
+ #### Use the x-extension strategy
631
+
632
+ Set `groupMessagesBy: 'x-extension'` and add `x-eventcatalog-group` to each operation you want to group.
633
+
634
+ ```js title="eventcatalog.config.js"
635
+ generators: [
636
+ [
637
+ '@eventcatalog/generator-openapi',
638
+ {
639
+ services: [{ path: './openapi.yml', id: 'my-service' }],
640
+ groupMessagesBy: 'x-extension',
641
+ },
642
+ ],
643
+ ],
644
+ ```
645
+
646
+ ```yaml title="openapi.yml"
647
+ paths:
648
+ /pets/{petId}/adopt:
649
+ post:
650
+ x-eventcatalog-group: Adoptions
651
+ summary: Adopt a pet
652
+ operationId: adoptPet
653
+ ```
654
+
655
+ #### Use the path-prefix strategy
656
+
657
+ Set `groupMessagesBy: 'path-prefix'` and the generator derives the group name automatically from the URL. No changes to your OpenAPI file are needed.
658
+
659
+ ```js title="eventcatalog.config.js"
660
+ generators: [
661
+ [
662
+ '@eventcatalog/generator-openapi',
663
+ {
664
+ services: [{ path: './openapi.yml', id: 'my-service' }],
665
+ groupMessagesBy: 'path-prefix',
666
+ },
667
+ ],
668
+ ],
669
+ ```
670
+
671
+ The generator reads the first meaningful path segment and capitalizes it as the group name. Common technical prefixes are skipped automatically.
672
+
673
+ | Path | Group |
674
+ |------|-------|
675
+ | `/pets/{petId}` | `Pets` |
676
+ | `/api/v1/billing/invoices` | `Billing` |
677
+ | `/health` | _(no group, single segment)_ |
678
+ | `/pets` | _(no group, single segment)_ |
679
+
680
+ #### Use the single-group strategy
681
+
682
+ Set `groupMessagesBy: 'single-group'` to place every operation into one group called `operations`, regardless of its path or any extensions. No changes to your OpenAPI file are needed.
683
+
684
+ ```js title="eventcatalog.config.js"
685
+ generators: [
686
+ [
687
+ '@eventcatalog/generator-openapi',
688
+ {
689
+ services: [{ path: './openapi.yml', id: 'my-service' }],
690
+ groupMessagesBy: 'single-group',
691
+ },
692
+ ],
693
+ ],
694
+ ```
695
+
696
+ This is useful for very large APIs where `path-prefix` still leaves too many ungrouped nodes. Every message collapses into a single `operations` node in the visualiser.
697
+
698
+ :::tip
699
+ Once grouped, messages appear as a compact stacked card in the visualiser. Click the group to expand it and see the full downstream graph — channels, consumers, and producers — just as if the messages were ungrouped. See [Grouping messages](/docs/development/guides/messages/common/grouping-messages) for more details.
700
+ :::
701
+
702
+ ---
703
+
704
+ ### Parse examples from operations
705
+
706
+ <AddedIn version="7.9.0" pkg="@eventcatalog/generator-openapi" url="https://github.com/event-catalog/generators/releases/tag/v"/>
707
+
708
+ When `parseExamples` is enabled (the default), the generator reads examples defined on your OpenAPI operations and writes them as JSON files into each message's `examples` folder in EventCatalog.
709
+
710
+ Both request body examples and response examples are supported, across the single `example` and named `examples` formats from the OpenAPI specification.
711
+
712
+ **How examples are named**
713
+
714
+ | Source | File name |
715
+ |--------|-----------|
716
+ | Single request body `example` | `example.json` |
717
+ | Named request body `examples` (e.g. `dog`) | `dog.json` |
718
+ | Single response `example` (e.g. status `200`) | `response-200.json` |
719
+ | Named response `examples` (e.g. status `200`, name `dog`) | `response-200-dog.json` |
720
+
721
+ **OpenAPI example formats**
722
+
723
+ ```yml title="Single request body example"
724
+ paths:
725
+ /pets:
726
+ post:
727
+ operationId: createPet
728
+ requestBody:
729
+ content:
730
+ application/json:
731
+ example:
732
+ name: Fido
733
+ tag: dog
734
+ ```
735
+
736
+ ```yml title="Named request body examples"
737
+ paths:
738
+ /pets:
739
+ post:
740
+ operationId: createPet
741
+ requestBody:
742
+ content:
743
+ application/json:
744
+ examples:
745
+ dog:
746
+ value:
747
+ name: Fido
748
+ tag: dog
749
+ cat:
750
+ value:
751
+ name: Whiskers
752
+ tag: cat
753
+ ```
754
+
755
+ ```yml title="Named response examples"
756
+ paths:
757
+ /pets:
758
+ post:
759
+ operationId: createPet
760
+ responses:
761
+ '200':
762
+ content:
763
+ application/json:
764
+ examples:
765
+ dog:
766
+ value:
767
+ id: 1
768
+ name: Fido
769
+ cat:
770
+ value:
771
+ id: 2
772
+ name: Whiskers
773
+ ```
774
+
775
+ To disable example parsing, set `parseExamples: false` in your generator configuration.
776
+
777
+ ```js title="eventcatalog.config.js"
778
+ generators: [
779
+ [
780
+ '@eventcatalog/generator-openapi',
781
+ {
782
+ services: [
783
+ { path: path.join(__dirname, 'openapi-files', 'orders-service.yml'), id: 'orders-service' }
784
+ ],
785
+ parseExamples: false,
786
+ },
787
+ ],
788
+ ],
789
+ ```
790
+