Skip to content

Conversation

@brant-livefront
Copy link
Contributor

@brant-livefront brant-livefront commented Jul 30, 2025

🎟️ Tracking

PM-17562

📔 Objective

This PR adds a bunch of Structurizr models, relationships and views to @MGibson1 's POC branch of Structurizr. I followed Matt's pattern for team's managing their local definitions inside of the larger scope to add in documentation for the event integrations work I've been doing. This adds more detail to the big server architecture diagram as well as a number of component level diagrams that illustrate how the different pieces work together in integrations.

I've also ported over the markdown architecture that currently lives in the src/ folder next to the code. I think Structurizr's markdown rendering leaves a lot to be desired, but I wanted to have it there for how it would look in context if we decided to go that direction.

To run structurizr locally, Matt has provided the following script to launch a local Docker:

  sh ./structurizr.sh bitwarden_system

This will run at http://localhost:8085 and let you see all the docs / diagrams.

⏰ Reminders before review

  • Contributor guidelines followed
  • All formatters and local linters executed and passed
  • Written new unit and / or integration tests where applicable
  • Protected functional changes with optionality (feature flags)
  • Used internationalization (i18n) for all UI strings
  • CI builds passed
  • Communicated to DevOps any deployment requirements
  • Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team

🦮 Reviewer guidelines

  • 👍 (:+1:) or similar for great changes
  • 📝 (:memo:) or ℹ️ (:information_source:) for notes or general info
  • ❓ (:question:) for questions
  • 🤔 (:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion
  • 🎨 (:art:) for suggestions / improvements
  • ❌ (:x:) or ⚠️ (:warning:) for more significant problems or concerns needing attention
  • 🌱 (:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt
  • ⛏ (:pick:) for minor or nitpick changes

@brant-livefront brant-livefront requested a review from a team as a code owner July 30, 2025 13:37
Copy link
Member

@MGibson1 MGibson1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like an excellent addition, thank you! Certainly has me thinking about the viability of the root level views I have in bitwarden_system.dsl 😅

I find it hard to follow from diagrams where differences between self host and cloud occur.

I think it's the lack of a consolidating diagram of these two scopes. Documentation talks about an abstraction layer than handles sending of events either to service bus or rabbitmq, does it not make sense to represent that here and present two alternate diagrams depending on environment.

Layout issues

  • Server container view has some overlapping relationships (try up/down arrows while the relationship is highlighted with your mouse to move the label's position)

MGibson1 and others added 3 commits July 30, 2025 11:39
- Removed architecture documents and references to them
- Added RabbitME detailed view
- Added Events component view
- Reworked the main server view into two filtered views: Cloud and Self-Hosted.
  - Added tags "Cloud-Only" and "Self-Hosted-Only" to remove models / relationships that don't apply
- Refactored how we build the dynamic views to be more extensible
@brant-livefront
Copy link
Contributor Author

@MGibson1 Pretty large refactor for you. The base server diagram is now 2 filtered views - Cloud and Self-Host. This allows us to show/hide based on if something is tagged "Cloud-Only" of "Self-Host-Only". You'll see it cleans up a lot of the event integration pieces specifically.

I also reworked and expanded all of my views and added a few more. I found a way to reference relationships that should make the dynamic views far more extensible.

@codecov
Copy link

codecov bot commented Aug 1, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (poc/structurizr@94ad2d2). Learn more about missing BASE report.

Additional details and impacted files
@@                Coverage Diff                 @@
##             poc/structurizr    #6141   +/-   ##
==================================================
  Coverage                   ?   54.56%           
==================================================
  Files                      ?     1921           
  Lines                      ?    85403           
  Branches                   ?     7635           
==================================================
  Hits                       ?    46602           
  Misses                     ?    37029           
  Partials                   ?     1772           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 17, 2025

Logo
Checkmarx One – Scan Summary & Detailsae23d5da-de03-4b34-a581-9fda885663b5

New Issues (112)

Checkmarx found the following issues in this Pull Request

Severity Issue Source File / Package Checkmarx Insight
CRITICAL Stored_XSS /src/SharedWeb/Health/HealthCheckServiceExtensions.cs: 61
detailsThe method embeds untrusted data in generated output with WriteAsync, at line 60 of /src/SharedWeb/Health/HealthCheckServiceExtensions.cs. This ...
ID: 9AazZOA93skTEk0hOTO7xi6%2BxGs%3D
Attack Vector
CRITICAL Stored_XSS /util/Server/Startup.cs: 57
detailsThe method embeds untrusted data in generated output with WriteAsync, at line 59 of /util/Server/Startup.cs. This untrusted data is embedded int...
ID: TPTB4Df%2F5hNThaA3EPXVga7BDI4%3D
Attack Vector
HIGH CVE-2022-37620 Npm-html-minifier-4.0.0
detailsDescription: A Regular Expression Denial of Service (ReDoS) flaw was found in html-minifier versions 2.1.0 through 4.0.0 via the "candidate" variable in "htmlmi...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: CwvR1H15C4sOirnR5dZ5UhIlLl2z8Fv4RT3P61WuNv0%3D
Vulnerable Package
HIGH CVE-2025-64756 Npm-glob-10.4.5
detailsRecommended version: 10.5.0
Description: Glob matches files using patterns the shell uses. In versions 10.2.0 prior to 10.5.0 and 11.0.0 prior to 11.1.0, the glob CLI contains a command in...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: XyqbCi1%2Fe%2F3NUQ4OT1YnvFLPU9Z6kuNcYjse1chRTAk%3D
Vulnerable Package
MEDIUM CSRF /src/Api/Public/Controllers/CollectionsController.cs: 90
detailsMethod at line 90 of /src/Api/Public/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value ...
ID: WoQZwK7AL7NBqAZ%2BzoiN5JW5r9c%3D
Attack Vector
MEDIUM CSRF /src/Api/Public/Controllers/CollectionsController.cs: 90
detailsMethod at line 90 of /src/Api/Public/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value ...
ID: ICvPR%2F6tylxwnnrkCZ93CjFaLIc%3D
Attack Vector
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: 176
detailsMethod at line 176 of /src/Api/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value flows ...
ID: 93RGakK2KPpRRxP8NpyZ%2BIWpPQA%3D
Attack Vector
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: 176
detailsMethod at line 176 of /src/Api/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value flows ...
ID: yXERhaTY3m%2B3vh%2Byk8ZRpqJf4VI%3D
Attack Vector
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: 176
detailsMethod at line 176 of /src/Api/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value flows ...
ID: NxK6jvY3aGt6c17m%2Bk5cIlyuEDg%3D
Attack Vector
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: 176
detailsMethod at line 176 of /src/Api/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value flows ...
ID: rt%2BpuJWDbpdz7zZ11u9er%2B5n9%2Bg%3D
Attack Vector
MEDIUM CSRF /src/Api/Public/Controllers/CollectionsController.cs: 90
detailsMethod at line 90 of /src/Api/Public/Controllers/CollectionsController.cs gets a parameter from a user request from model. This parameter value ...
ID: HHZkgRQQd4w%2Fou2cXBrAA59DZ4g%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 431
detailsMethod at line 431 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: OMC2R16LhdVN3pqpDINbJMk9Q7Y%3D
Attack Vector
MEDIUM CSRF /src/Api/Dirt/Controllers/OrganizationReportsController.cs: 173
detailsMethod at line 173 of /src/Api/Dirt/Controllers/OrganizationReportsController.cs gets a parameter from a user request from request. This paramet...
ID: SxNqkM4pa5H8JmYb5Y697XQDm%2Fc%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 507
detailsMethod at line 507 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from model. This par...
ID: E6zVEoynsqtHWFDh5ZhaRrPUlr4%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/AccountBillingVNextController.cs: 72
detailsMethod at line 72 of /src/Api/Billing/Controllers/VNext/AccountBillingVNextController.cs gets a parameter from a user request from user. This pa...
ID: kJ8i4LDlqgW%2BYRAvz9eUYr74yd0%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs: 108
detailsMethod at line 108 of /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs gets a parameter from a user request from organiza...
ID: 1mNlpNuOHA8GekVd1d2oHDCHISw%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1420
detailsMethod at line 1420 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: hHc3RotkqmMqQeyccWiEwN4LhZc%3D
Attack Vector
MEDIUM CSRF /src/Api/Dirt/Controllers/OrganizationReportsController.cs: 270
detailsMethod at line 270 of /src/Api/Dirt/Controllers/OrganizationReportsController.cs gets a parameter from a user request from request. This paramet...
ID: wwST2SEwS3fRTSWgvdN041eqb2M%3D
Attack Vector
MEDIUM CSRF /src/Api/Dirt/Controllers/OrganizationReportsController.cs: 217
detailsMethod at line 217 of /src/Api/Dirt/Controllers/OrganizationReportsController.cs gets a parameter from a user request from request. This paramet...
ID: M5M2DYyX8P468LATN9993yPKdoI%3D
Attack Vector
MEDIUM CSRF /src/Api/Dirt/Controllers/OrganizationReportsController.cs: 173
detailsMethod at line 173 of /src/Api/Dirt/Controllers/OrganizationReportsController.cs gets a parameter from a user request from request. This paramet...
ID: 4WZwcP3%2BDDiKT5rZNAx8h6B2KeE%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1420
detailsMethod at line 1420 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: %2BVYOXe9RnhXBD1riM9o270Fec1s%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1420
detailsMethod at line 1420 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: bTfdTl2F9UAJ%2Fbnnli402K0GVw0%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: 289
detailsMethod at line 289 of /src/Api/AdminConsole/Controllers/GroupsController.cs gets a parameter from a user request from orgUserId. This parameter ...
ID: dVqeoLRiIT%2BaNv577pp645pD5AA%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1395
detailsMethod at line 1395 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: BRQB1ClFFbYY0vCwy46kpzRZbpE%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1519
detailsMethod at line 1519 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: Z5edgMw3uNkBqkLBI7UFxZxPPT4%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1449
detailsMethod at line 1449 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: 5EzViAyZ4jES7ntrj8dCq90Dquo%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 270
detailsMethod at line 270 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: 3RD4dkPAQF67ybeKtLgJdCJAuUI%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1303
detailsMethod at line 1303 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from organizationId. This parameter ...
ID: eQ8qt7%2BRZvIAEnr06jAtAilp2J0%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 375
detailsMethod at line 375 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from model. This par...
ID: m5rTtnEQNpXJpq9Gk6Ter%2BpI4CQ%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 366
detailsMethod at line 366 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from model. This par...
ID: mlVcbvuKolr6zKewNkr5XpeTvLU%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 366
detailsMethod at line 366 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from id. This parame...
ID: BDugYYwiDItZAel0Vzk4jVzpYqw%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs: 96
detailsMethod at line 96 of /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs gets a parameter from a user request from organizat...
ID: yoU1TPJ8%2FzOCY8Xolnsh4ZVomAQ%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/ProviderBillingVNextController.cs: 82
detailsMethod at line 82 of /src/Api/Billing/Controllers/VNext/ProviderBillingVNextController.cs gets a parameter from a user request from provider. Th...
ID: tVOwEEW86Qzg43%2FTk4Q0UIMQ99M%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/AccountBillingVNextController.cs: 60
detailsMethod at line 60 of /src/Api/Billing/Controllers/VNext/AccountBillingVNextController.cs gets a parameter from a user request from user. This pa...
ID: j%2FT7P%2FgHYzIPhkvfSvPMriiTdyQ%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs: 50
detailsMethod at line 50 of /src/Api/Billing/Controllers/VNext/OrganizationBillingVNextController.cs gets a parameter from a user request from organizat...
ID: mRY32o9Gxtlb8aBOJY4cZPJwiUU%3D
Attack Vector
MEDIUM CSRF /src/Api/Billing/Controllers/VNext/ProviderBillingVNextController.cs: 40
detailsMethod at line 40 of /src/Api/Billing/Controllers/VNext/ProviderBillingVNextController.cs gets a parameter from a user request from provider. Th...
ID: PZLOg6xlRgt2I9JUVmWDZwFBtlY%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1248
detailsMethod at line 1248 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flo...
ID: 1XitNECwFkGwlUKj%2BT%2FKjdGSjZo%3D
Attack Vector
MEDIUM CSRF /src/Api/KeyManagement/Controllers/AccountsKeyManagementController.cs: 141
detailsMethod at line 141 of /src/Api/KeyManagement/Controllers/AccountsKeyManagementController.cs gets a parameter from a user request from model. Thi...
ID: s03rq%2BMbasBNwgH7lRKdUTBYsws%3D
Attack Vector
MEDIUM CSRF /src/Api/KeyManagement/Controllers/AccountsKeyManagementController.cs: 101
detailsMethod at line 101 of /src/Api/KeyManagement/Controllers/AccountsKeyManagementController.cs gets a parameter from a user request from model. Thi...
ID: 1zwOOk4J%2BZcsnTKolLulNT3NTk0%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/SecurityTaskController.cs: 66
detailsMethod at line 66 of /src/Api/Vault/Controllers/SecurityTaskController.cs gets a parameter from a user request from taskId. This parameter value...
ID: 4qvXhfmRGBKOBwNPB1ux4ty%2BkO8%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 700
detailsMethod at line 700 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from request. This parameter value fl...
ID: wPr9u3l5diwUU577CfhL7QjkDEA%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 211
detailsMethod at line 211 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: BmgtSFFAU3R3ploK7lV75ibeevk%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/EmergencyAccessController.cs: 173
detailsMethod at line 173 of /src/Api/Auth/Controllers/EmergencyAccessController.cs gets a parameter from a user request from model. This parameter val...
ID: 7oM8c%2FfjJJwhzCdyGHpu07Nt6E0%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 643
detailsMethod at line 643 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: y0eypLx8h24p8nCH6sFiazniMEA%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 364
detailsMethod at line 364 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: zjGJ0LOqb%2B49mp20Dee5vC5TqCE%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 391
detailsMethod at line 391 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: 2eN9C0sP6vSSEs7GYJYRXiPNYWY%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 620
detailsMethod at line 620 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: AowA49jNC174jjh%2BzghT%2BwrNEug%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 186
detailsMethod at line 186 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: RNtQZqll9j3ILk%2ByKCYH1fJmSS0%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 120
detailsMethod at line 120 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: ov0V83iMnJjoXsr7Yz5yKpZSanM%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 855
detailsMethod at line 855 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: E%2BYaCUpvF1WHePx7HtlFpvb5Vs0%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 855
detailsMethod at line 855 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: t56X7widHc6ZL4ECOs%2BksYnneyc%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 855
detailsMethod at line 855 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: iBfBhaofiWDQVRpjZ2m8hz3GLek%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 855
detailsMethod at line 855 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: H7vQfdX0hInhoI5S2LG28RFVFYs%3D
Attack Vector
MEDIUM CSRF /src/Api/NotificationCenter/Controllers/NotificationsController.cs: 67
detailsMethod at line 67 of /src/Api/NotificationCenter/Controllers/NotificationsController.cs gets a parameter from a user request from id. This param...
ID: NZFREv2%2FN3arRi898bwkT%2BsKlSY%3D
Attack Vector
MEDIUM CSRF /src/Api/NotificationCenter/Controllers/NotificationsController.cs: 61
detailsMethod at line 61 of /src/Api/NotificationCenter/Controllers/NotificationsController.cs gets a parameter from a user request from id. This param...
ID: dLrMuJApYrG7cL6St%2BQbVtzliVs%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 1449
detailsMethod at line 1449 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows ...
ID: KTGqsZUZvCp2ztyUJvoXnrudKVw%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 815
detailsMethod at line 815 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: EsmeIWwvQVK9YfbfY2RbI8VUGcg%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 783
detailsMethod at line 783 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: kPPhI7NjpfU0HmUv96M89cCrrxs%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 783
detailsMethod at line 783 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: u6zE7e619E4361Ity9LrxVFra3E%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 815
detailsMethod at line 815 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: M1I7jkXQbkl5htF0SeBRGq0rA2Q%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 815
detailsMethod at line 815 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: Wu3md1KAp9cZcAyFZMGD7UeFVrs%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 815
detailsMethod at line 815 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: 0%2Ff20l38eKOCXvm9XX9E2VCIRuY%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 783
detailsMethod at line 783 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from id. This parameter value flows t...
ID: NUrZZ3UuSI0s1STwx7vGj0pb%2F%2FA%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 783
detailsMethod at line 783 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: HnwYXtkoXDLHY%2FiuEZiTRHj%2FmAc%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: 138
detailsMethod at line 138 of /src/Api/AdminConsole/Controllers/GroupsController.cs gets a parameter from a user request from model. This parameter valu...
ID: RTwH6dq7mvbyNlG%2FeDtJhYFSP0w%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: 166
detailsMethod at line 166 of /src/Api/AdminConsole/Controllers/GroupsController.cs gets a parameter from a user request from model. This parameter valu...
ID: GTJa4khWGlb%2BX4IRfjgVH10OAJQ%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: 166
detailsMethod at line 166 of /src/Api/AdminConsole/Controllers/GroupsController.cs gets a parameter from a user request from model. This parameter valu...
ID: UwEBceGyRhMXr3%2FmGOE132mOPuM%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 395
detailsMethod at line 395 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from model. This par...
ID: zvBzMiQeJvwl8ewK0oeN6F%2BsUi4%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: 395
detailsMethod at line 395 of /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs gets a parameter from a user request from model. This par...
ID: %2BZ09FWOOIHtsTtRRVlZBovHVaBs%3D
Attack Vector
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: 537
detailsMethod at line 537 of /src/Api/Auth/Controllers/AccountsController.cs gets a parameter from a user request from model. This parameter value flow...
ID: D%2Fc9GnDKtXoen%2BBb43Rj%2FCbO1Vw%3D
Attack Vector
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/GroupsController.cs: 136
detailsMethod at line 136 of /src/Api/AdminConsole/Public/Controllers/GroupsController.cs gets a parameter from a user request from model. This paramet...
ID: b306bpuzCMPd9rAg8QV5jdcApxg%3D
Attack Vector
MEDIUM CSRF /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs: 87
detailsMethod at line 87 of /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs gets a parameter from a user request from model. This param...
ID: ee2B5EFvnmLsxG8kxeNEK1dw%2FqI%3D
Attack Vector
MEDIUM CSRF /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs: 97
detailsMethod at line 97 of /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs gets a parameter from a user request from model. This param...
ID: NSL0ovR0%2FD%2BoMvrmZMN2Pvwty3Q%3D
Attack Vector
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: 300
detailsMethod at line 300 of /src/Api/Vault/Controllers/CiphersController.cs gets a parameter from a user request from model. This parameter value flow...
ID: yg9AvW1xYcbcxGOwlAt3JMt9ImU%3D
Attack Vector

More results are available on the CxOne platform

@MGibson1
Copy link
Member

@brant-livefront, I took the liberty or merging this up with the base branch. If you could review that nothing got super mangled, I think this is g2g and we can move forward with merging the base into main, too

@claude
Copy link
Contributor

claude bot commented Dec 17, 2025

Claude finished @brant-livefront's task in 3m 26s —— View job


Review Summary

Reviewed PR #6141 - Event Integrations Structurizr documentation.

Assessment

This is comprehensive, accurate architecture documentation for the Event Integrations system. The documentation successfully:

  • Documents both Cloud (Azure Service Bus) and Self-Hosted (RabbitMQ) architectures with appropriate tagging
  • Includes detailed component models for all handlers, listeners, and services
  • Maps relationships between event tiers and integration tiers
  • Covers all five integration types (Slack, Teams, Datadog, Webhook/HEC)
  • Uses filtered views to cleanly separate Cloud vs Self-Hosted concerns
  • Accurately reflects the actual codebase implementation

Verification

Verified documentation accuracy against actual implementation:

  • ✓ All component classes exist (RabbitMqEventListenerService, AzureServiceBusEventListenerService, EventRepositoryHandler, etc.)
  • ✓ Integration handlers match implementation (SlackIntegrationHandler, TeamsIntegrationHandler, DatadogIntegrationHandler, WebhookIntegrationHandler)
  • ✓ Relationship flows correctly model pub/sub patterns with appropriate routing keys/filters
  • ✓ External services properly documented

Changes Since Previous Reviews

Recent commits addressed prior feedback:

  • Updated diagrams to reflect current state of Event Integrations
  • Fixed typos and suggestions from Claude
  • Removed simplified events_queue abstraction in favor of detailed ASB/RabbitMQ models
  • Enhanced Cloud vs Self-Hosted differentiation with filtered views

Findings

No issues found. The documentation is accurate, complete, and well-structured.


Recommendation:APPROVED

This documentation PR successfully captures the Event Integrations architecture and addresses all previous review feedback. The use of tags and filtered views provides clear separation between Cloud and Self-Hosted deployments, which was a key concern from prior reviews.

integrationSlackQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationSlackQueue "Subscribes via filter on Slack key"
integrationWebhookQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationWebhookQueue "Subscribes via filter on Webhook key"
integrationHecQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationHecQueue "Subscribes via filter on HEC key"
integrationSlackRetryQueue = server.rabbit_mq.integrationSlackRetryQueue -> server.rabbit_mq.integrationSlackQueue "DLQ after configured retry timing"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Good use of "DLQ" (Dead Letter Queue) terminology here. Consider adding this expansion in a description field if Structurizr supports it for clarity to readers unfamiliar with the acronym.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are diagrams, not comprehensive docs (the README is already present for that). I am OK with assuming readers understand DLQ in the name of not cluttering up the diagrams with explanation.

Copy link
Contributor

@withinfocus withinfocus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few tweaks needed as documented, and we should refresh it with the latest state of the distributed events architecture.

@brant-livefront
Copy link
Contributor Author

I've fixed the typos and gotten everything refreshed as well as moving the event integrations stuff to Dirt (which I added into the structure and main dsl). However I still need to look through and update all of these to the latest (e.g. include Teams, break datadog out to it's own integration, etc).

@brant-livefront
Copy link
Contributor Author

@MGibson1 @withinfocus This has been updated to reflect all the latest event integration changes. Should be ready for final review. 👍

@withinfocus withinfocus added the ai-review Request a Claude code review label Dec 29, 2025
@withinfocus withinfocus reopened this Dec 29, 2025
@bitwarden bitwarden deleted a comment from claude bot Dec 29, 2025
@sonarqubecloud
Copy link

@brant-livefront brant-livefront merged commit e096056 into poc/structurizr Dec 29, 2025
43 checks passed
@brant-livefront brant-livefront deleted the brant/structurizr-event-integrations branch December 29, 2025 22:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review Request a Claude code review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants