1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-06 11:43:51 +00:00
Files
browser/docs/bitwarden_system.json
2025-07-28 14:38:29 -07:00

1042 lines
38 KiB
JSON

{
"configuration": {},
"description": "Description",
"documentation": {
"sections": [
{
"content": "## File Hierarchy\n",
"filename": "file_hierarchy.md",
"format": "Markdown",
"order": 1,
"title": ""
},
{
"content": "## Perspectives\n\n### Security\n\nHighlights models and relationships identified as a part of [threat modeling](https://www.threatmodelingmanifesto.org/).\n\nIdentified threats are expected to be itemized in the perspective description, tagged with an appropriate `Security: threat` tag, and include a `!docs` property that describes the threat and mitigations. [`-> (relationships)`](https://docs.structurizr.com/dsl/language#relationship) do not allow for a `!docs` property, so a `url` property is used instead, linking to the appropriate section of the published docs.\n\n#### Example Model or Relationship\n\n##### Example Threat\n\n- **Type**: type\n- **Priority**: TBD/Low/Medium/High/Critical\n- **Likelihood**: TBD/Low/Medium/High/Critical\n- **Impact**: TBD/Low/Medium/High/Critical\n\ndescription of the threat.\n\n###### Example Threat Mitigations\n\ndescribe the mitigations for the threat and whether or not they are complete\n\n### SRE\n\nHighlights concerns and requirements for cloud deployments.\n",
"filename": "perspectives.md",
"format": "Markdown",
"order": 2,
"title": ""
},
{
"content": "## Tags\n\n### Admin\n\n### API\n\n### Auth\n\n### Azure\n\n### Billing\n\n### Bitwarden Employee\n\n### Browser\n\n### CLI\n\n### Cloud Host Requirement\n\n### Database\n\n### Desktop\n\n### Directory\n\n### Events\n\n### External\n\n### HealthCheck\n\n### Icons\n\n### LDAP\n\n### MSP\n\n### Mobile\n\n### Queue\n\n### SCIM\n\n### Security:Privacy\n\n### Self-Hosted\n\n### Web\n",
"filename": "tags.md",
"format": "Markdown",
"order": 3,
"title": ""
}
]
},
"id": 1,
"lastModifiedAgent": "structurizr-ui",
"lastModifiedDate": "2025-07-28T21:38:09Z",
"model": {
"people": [
{
"description": "An end user of the Bitwarden System",
"id": "1",
"location": "Unspecified",
"name": "Bitwarden User",
"properties": {
"structurizr.dsl.identifier": "user"
},
"relationships": [
{
"description": "Uses",
"destinationId": "10",
"id": "42",
"sourceId": "1",
"tags": "Relationship"
},
{
"description": "Uses",
"destinationId": "9",
"id": "43",
"linkedRelationshipId": "42",
"sourceId": "1"
},
{
"description": "Uses",
"destinationId": "11",
"id": "44",
"sourceId": "1",
"tags": "Relationship"
},
{
"description": "Uses",
"destinationId": "12",
"id": "45",
"sourceId": "1",
"tags": "Relationship"
},
{
"description": "Uses",
"destinationId": "13",
"id": "46",
"sourceId": "1",
"tags": "Relationship"
}
],
"tags": "Element,Person"
},
{
"description": "Either a Bitwarden site-reliability engineer or administrator of a self-hosted instance",
"id": "2",
"location": "Unspecified",
"name": "System Admin",
"properties": {
"structurizr.dsl.identifier": "system_admin"
},
"tags": "Element,Person,Bitwarden Employee,Self-Host Admin"
},
{
"description": "A customer success engineer. Inspects bitwarden state through the admin portal and internal tools",
"group": "Bitwarden Controlled",
"id": "3",
"location": "Unspecified",
"name": "Customer Success",
"properties": {
"structurizr.dsl.identifier": "customer_success"
},
"tags": "Element,Person,Bitwarden Employee"
},
{
"description": "An administrator of an organization",
"id": "17",
"location": "Unspecified",
"name": "Organization Admin",
"properties": {
"structurizr.dsl.identifier": "admin"
},
"relationships": [
{
"description": "Administers Organizations",
"destinationId": "10",
"id": "47",
"sourceId": "17",
"tags": "Relationship"
},
{
"description": "Administers Organizations",
"destinationId": "9",
"id": "48",
"linkedRelationshipId": "47",
"sourceId": "17"
}
],
"tags": "Element,Person,Admin"
},
{
"description": "And employee of a managed service provider",
"id": "18",
"location": "Unspecified",
"name": "MSP",
"properties": {
"structurizr.dsl.identifier": "provider"
},
"relationships": [
{
"description": "Administers Providers and Organizations",
"destinationId": "10",
"id": "49",
"sourceId": "18",
"tags": "Relationship"
},
{
"description": "Administers Providers and Organizations",
"destinationId": "9",
"id": "50",
"linkedRelationshipId": "49",
"sourceId": "18"
}
],
"tags": "Element,Person,MSP"
}
],
"properties": {
"structurizr.groupSeparator": "/"
},
"softwareSystems": [
{
"containers": [
{
"components": [
{
"documentation": {},
"id": "6",
"name": "Billing",
"properties": {
"structurizr.dsl.identifier": "server.api.billing"
},
"tags": "Element,Component,Billing"
}
],
"documentation": {},
"id": "5",
"name": "API",
"properties": {
"structurizr.dsl.identifier": "server.api"
},
"relationships": [
{
"description": "Validates JWTs with",
"destinationId": "19",
"id": "65",
"sourceId": "5",
"tags": "Relationship",
"url": "https://bitwarden.com"
}
],
"tags": "Element,Container,API"
},
{
"documentation": {},
"id": "7",
"name": "Events",
"properties": {
"structurizr.dsl.identifier": "server.events"
},
"tags": "Element,Container,Events"
},
{
"documentation": {},
"id": "8",
"name": "Notifications",
"properties": {
"structurizr.dsl.identifier": "server.notifications"
},
"tags": "Element,Container"
},
{
"documentation": {},
"id": "19",
"name": "Identity",
"properties": {
"structurizr.dsl.identifier": "server.identity"
},
"tags": "Element,Container,Auth"
},
{
"description": "The Icons service provides favicons for websites.",
"documentation": {},
"id": "38",
"name": "Icons",
"properties": {
"structurizr.dsl.identifier": "server.icons"
},
"tags": "Element,Container"
}
],
"documentation": {},
"group": "Bitwarden Controlled",
"id": "4",
"location": "Unspecified",
"name": "Bitwarden Server",
"properties": {
"structurizr.dsl.identifier": "server"
},
"tags": "Element,Software System"
},
{
"containers": [
{
"documentation": {},
"id": "10",
"name": "Web Application",
"properties": {
"structurizr.dsl.identifier": "clients.web"
},
"relationships": [
{
"description": "Makes requests to",
"destinationId": "5",
"id": "51",
"sourceId": "10",
"tags": "Relationship"
},
{
"description": "Makes requests to",
"destinationId": "4",
"id": "52",
"linkedRelationshipId": "51",
"sourceId": "10"
},
{
"description": "Authenticates with",
"destinationId": "19",
"id": "60",
"sourceId": "10",
"tags": "Relationship"
}
],
"tags": "Element,Container,Web"
},
{
"documentation": {},
"id": "11",
"name": "Browser Extension",
"properties": {
"structurizr.dsl.identifier": "clients.browser_extension"
},
"relationships": [
{
"description": "Connects to IPC to request biometric authentication",
"destinationId": "24",
"id": "28",
"sourceId": "11",
"tags": "Relationship"
},
{
"description": "Connects to IPC to request biometric authentication",
"destinationId": "13",
"id": "29",
"linkedRelationshipId": "28",
"sourceId": "11"
},
{
"description": "Makes requests to",
"destinationId": "5",
"id": "54",
"sourceId": "11",
"tags": "Relationship"
},
{
"description": "Makes requests to",
"destinationId": "4",
"id": "55",
"linkedRelationshipId": "54",
"sourceId": "11"
},
{
"description": "Authenticates With",
"destinationId": "19",
"id": "62",
"sourceId": "11",
"tags": "Relationship"
}
],
"tags": "Element,Container,Browser"
},
{
"documentation": {},
"id": "12",
"name": "CLI",
"properties": {
"structurizr.dsl.identifier": "clients.cli"
},
"relationships": [
{
"description": "Makes requests to",
"destinationId": "5",
"id": "56",
"sourceId": "12",
"tags": "Relationship"
},
{
"description": "Makes requests to",
"destinationId": "4",
"id": "57",
"linkedRelationshipId": "56",
"sourceId": "12"
},
{
"description": "Authenticates With",
"destinationId": "19",
"id": "63",
"sourceId": "12",
"tags": "Relationship"
}
],
"tags": "Element,Container,CLI"
},
{
"components": [
{
"description": "Handles biometric authentication for the Bitwarden desktop application.",
"documentation": {},
"id": "22",
"name": "Biometric Authentication",
"properties": {
"structurizr.dsl.identifier": "clients.desktop.biometric"
},
"relationships": [
{
"description": "Read/Write user keys",
"destinationId": "23",
"id": "31",
"sourceId": "22",
"tags": "Relationship",
"technology": "Napi Rust FFI"
},
{
"description": "Requests user verification for biometric authentication",
"destinationId": "26",
"id": "35",
"sourceId": "22",
"tags": "Relationship"
}
],
"tags": "Element,Component"
},
{
"description": "CRUD operations on keys-values stored by the OS.",
"documentation": {},
"id": "23",
"name": "OS Password Management Native Module",
"properties": {
"structurizr.dsl.identifier": "clients.desktop.password"
},
"relationships": [
{
"description": "CRUD operations on keys stored in the OS secure storage",
"destinationId": "25",
"id": "32",
"sourceId": "23",
"tags": "Relationship"
}
],
"tags": "Element,Component",
"technology": "rust module"
},
{
"description": "Inter-process communication between the desktop application and the browser extension.",
"documentation": {},
"id": "24",
"name": "IPC",
"properties": {
"structurizr.dsl.identifier": "clients.desktop.ipc"
},
"relationships": [
{
"description": "Relays biometric authentication requests to",
"destinationId": "22",
"id": "30",
"sourceId": "24",
"tags": "Relationship"
}
],
"tags": "Element,Component",
"technology": "Sockets"
}
],
"documentation": {},
"id": "13",
"name": "Desktop Application",
"properties": {
"structurizr.dsl.identifier": "clients.desktop"
},
"relationships": [
{
"description": "CRUD operations on keys stored in the OS secure storage",
"destinationId": "25",
"id": "33",
"linkedRelationshipId": "32",
"sourceId": "13"
},
{
"description": "Requests user verification for biometric authentication",
"destinationId": "26",
"id": "36",
"linkedRelationshipId": "35",
"sourceId": "13"
},
{
"description": "Makes requests to",
"destinationId": "5",
"id": "58",
"sourceId": "13",
"tags": "Relationship"
},
{
"description": "Makes requests to",
"destinationId": "4",
"id": "59",
"linkedRelationshipId": "58",
"sourceId": "13"
},
{
"description": "Authenticates With",
"destinationId": "19",
"id": "64",
"sourceId": "13",
"tags": "Relationship"
}
],
"tags": "Element,Container,Desktop"
}
],
"documentation": {},
"group": "Bitwarden Controlled",
"id": "9",
"location": "Unspecified",
"name": "Clients",
"properties": {
"structurizr.dsl.identifier": "clients"
},
"relationships": [
{
"description": "CRUD operations on keys stored in the OS secure storage",
"destinationId": "25",
"id": "34",
"linkedRelationshipId": "32",
"sourceId": "9"
},
{
"description": "Requests user verification for biometric authentication",
"destinationId": "26",
"id": "37",
"linkedRelationshipId": "35",
"sourceId": "9"
},
{
"description": "Requests icons for cleartext urls from",
"destinationId": "38",
"id": "39",
"sourceId": "9",
"tags": "Relationship"
},
{
"description": "Requests icons for cleartext urls from",
"destinationId": "4",
"id": "40",
"linkedRelationshipId": "39",
"sourceId": "9"
},
{
"description": "Makes requests to",
"destinationId": "5",
"id": "53",
"linkedRelationshipId": "51",
"sourceId": "9"
},
{
"description": "Authenticates with",
"destinationId": "19",
"id": "61",
"linkedRelationshipId": "60",
"sourceId": "9"
},
{
"description": "Posts local usage events to",
"destinationId": "7",
"id": "66",
"sourceId": "9",
"tags": "Relationship"
}
],
"tags": "Element,Software System"
},
{
"documentation": {},
"group": "Bitwarden Controlled",
"id": "14",
"location": "Unspecified",
"name": "Key Connector",
"properties": {
"structurizr.dsl.identifier": "key_connector"
},
"relationships": [
{
"description": "Validates JWTs with",
"destinationId": "19",
"id": "69",
"sourceId": "14",
"tags": "Relationship"
},
{
"description": "Validates JWTs with",
"destinationId": "4",
"id": "70",
"linkedRelationshipId": "69",
"sourceId": "14"
}
],
"tags": "Element,Software System"
},
{
"description": "Self-hosted instances of Bitwarden servers",
"documentation": {},
"id": "15",
"location": "Unspecified",
"name": "Self-Hosted Instances",
"properties": {
"structurizr.dsl.identifier": "self_hosted_instances"
},
"relationships": [
{
"description": "Sends push notification proxy requests to",
"destinationId": "8",
"id": "67",
"sourceId": "15",
"tags": "Relationship"
},
{
"description": "Sends push notification proxy requests to",
"destinationId": "4",
"id": "68",
"linkedRelationshipId": "67",
"sourceId": "15"
}
],
"tags": "Element,Software System,Self-Hosted,External"
},
{
"documentation": {},
"id": "16",
"location": "Unspecified",
"name": "External Websites",
"properties": {
"structurizr.dsl.identifier": "external_websites"
},
"tags": "Element,Software System,External,Icons"
},
{
"description": "Handles credit cards and subscriptions.",
"documentation": {},
"group": "Payment Systems",
"id": "20",
"location": "Unspecified",
"name": "Stripe",
"properties": {
"structurizr.dsl.identifier": "stripe"
},
"tags": "Element,Software System,External,Billing"
},
{
"description": "Handles PayPal and cryptocurrency.",
"documentation": {},
"group": "Payment Systems",
"id": "21",
"location": "Unspecified",
"name": "Braintree",
"properties": {
"structurizr.dsl.identifier": "braintree"
},
"tags": "Element,Software System,External,Billing"
},
{
"description": "The operating system's secure storage for sensitive data, such as Windows Credential Locker or macOS Keychain.",
"documentation": {},
"id": "25",
"location": "Unspecified",
"name": "OS Secure Storage",
"properties": {
"structurizr.dsl.identifier": "os_secure_storage"
},
"tags": "Element,Software System,External"
},
{
"description": "The operating system's user verification system, such as Windows Hello or macOS Touch ID.",
"documentation": {},
"id": "26",
"location": "Unspecified",
"name": "OS User Verification",
"properties": {
"structurizr.dsl.identifier": "os_user_verification"
},
"tags": "Element,Software System,External"
},
{
"description": "A Windows Hello signer that can be used to sign requests for the Bitwarden desktop application.",
"documentation": {},
"id": "27",
"location": "Unspecified",
"name": "Windows Hello Signer",
"properties": {
"structurizr.dsl.identifier": "windows_hello_signer"
},
"tags": "Element,Software System,External,Windows-Biometric"
},
{
"documentation": {},
"id": "41",
"location": "Unspecified",
"name": "DNS",
"properties": {
"structurizr.dsl.identifier": "dns"
},
"tags": "Element,Software System,External,Icons"
}
]
},
"name": "Bitwarden Server System",
"properties": {
"structurizr.dsl": "d29ya3NwYWNlICJCaXR3YXJkZW4gU2VydmVyIFN5c3RlbSIgewoKICAhaWRlbnRpZmllcnMgaGllcmFyY2hpY2FsCgogICFkb2NzICJ1c2FnZV9kb2NzIgogIG1vZGVsIHsKICAgIHByb3BlcnRpZXMgewogICAgICAic3RydWN0dXJpenIuZ3JvdXBTZXBhcmF0b3IiICIvIgogICAgfQoKICAgICMgSW5jbHVkZSBzaGFyZWQgbGV2ZWwgbW9kZWxzCiAgICAjIFBlcnNvbiB0eXBlcwogICAgdXNlciA9IHBlcnNvbiAiQml0d2FyZGVuIFVzZXIiICJBbiBlbmQgdXNlciBvZiB0aGUgQml0d2FyZGVuIFN5c3RlbSIKICAgIHN5c3RlbV9hZG1pbiA9IHBlcnNvbiAiU3lzdGVtIEFkbWluIiAiRWl0aGVyIGEgQml0d2FyZGVuIHNpdGUtcmVsaWFiaWxpdHkgZW5naW5lZXIgb3IgYWRtaW5pc3RyYXRvciBvZiBhIHNlbGYtaG9zdGVkIGluc3RhbmNlIiB7CiAgICAgIHRhZ3MgIkJpdHdhcmRlbiBFbXBsb3llZSIgIlNlbGYtSG9zdCBBZG1pbiIKICAgIH0KICAgIAogICAgCiAgICBid19jb250cm9sbGVkID0gZ3JvdXAgIkJpdHdhcmRlbiBDb250cm9sbGVkIiB7CiAgICAgICMgQml0d2FyZGVuIHN0YWZmCiAgICAgIGN1c3RvbWVyX3N1Y2Nlc3MgPSBwZXJzb24gIkN1c3RvbWVyIFN1Y2Nlc3MiICJBIGN1c3RvbWVyIHN1Y2Nlc3MgZW5naW5lZXIuIEluc3BlY3RzIGJpdHdhcmRlbiBzdGF0ZSB0aHJvdWdoIHRoZSBhZG1pbiBwb3J0YWwgYW5kIGludGVybmFsIHRvb2xzIiB7CiAgICAgICAgdGFncyAiQml0d2FyZGVuIEVtcGxveWVlIgogICAgICB9CiAgICAgIAogICAgICAjIFJvb3Qgc3lzdGVtcwogICAgICBzZXJ2ZXIgPSBzb2Z0d2FyZVN5c3RlbSAiQml0d2FyZGVuIFNlcnZlciIgewogICAgICAgIGFwaSA9IGNvbnRhaW5lciAiQVBJIiB7CiAgICAgICAgICBiaWxsaW5nID0gY29tcG9uZW50ICJCaWxsaW5nIiB7CiAgICAgICAgICAgIHRhZ3MgIkJpbGxpbmciCiAgICAgICAgICB9CiAgICAgICAgICB0YWdzICJBUEkiCiAgICAgICAgfQogICAgICAgIGV2ZW50cyA9IGNvbnRhaW5lciAiRXZlbnRzIiB7CiAgICAgICAgICB0YWdzICJFdmVudHMiCiAgICAgICAgfQogICAgICAgIG5vdGlmaWNhdGlvbnMgPSBjb250YWluZXIgIk5vdGlmaWNhdGlvbnMiCiAgICAgIH0KICAgICAgY2xpZW50cyA9IHNvZnR3YXJlU3lzdGVtICJDbGllbnRzIiB7CiAgICAgICAgd2ViID0gY29udGFpbmVyICJXZWIgQXBwbGljYXRpb24iIHsKICAgICAgICAgIHRhZ3MgIldlYiIKICAgICAgICB9CiAgICAgICAgYnJvd3Nlcl9leHRlbnNpb24gPSBjb250YWluZXIgIkJyb3dzZXIgRXh0ZW5zaW9uIiB7CiAgICAgICAgICB0YWdzICJCcm93c2VyIgogICAgICAgIH0KICAgICAgICBjbGkgPSBjb250YWluZXIgIkNMSSIgewogICAgICAgICAgdGFncyAiQ0xJIgogICAgICAgIH0KICAgICAgICBkZXNrdG9wID0gY29udGFpbmVyICJEZXNrdG9wIEFwcGxpY2F0aW9uIiB7CiAgICAgICAgICB0YWdzICJEZXNrdG9wIgogICAgICAgIH0KICAgICAgfQogICAgICBrZXlfY29ubmVjdG9yID0gc29mdHdhcmVTeXN0ZW0gIktleSBDb25uZWN0b3IiIAogICAgfQogICAgCiAgICBzZWxmX2hvc3RlZF9pbnN0YW5jZXMgPSBzb2Z0d2FyZVN5c3RlbSAiU2VsZi1Ib3N0ZWQgSW5zdGFuY2VzIiB7CiAgICAgIHRhZ3MgIlNlbGYtSG9zdGVkIgogICAgICB0YWdzICJFeHRlcm5hbCIKICAgICAgZGVzY3JpcHRpb24gIlNlbGYtaG9zdGVkIGluc3RhbmNlcyBvZiBCaXR3YXJkZW4gc2VydmVycyIKICAgIH0KICAgIAogICAgZXh0ZXJuYWxfd2Vic2l0ZXMgPSBzb2Z0d2FyZVN5c3RlbSAiRXh0ZXJuYWwgV2Vic2l0ZXMiIHsKICAgICAgdGFncyAiRXh0ZXJuYWwiCiAgICAgIHRhZ3MgIkljb25zIgogICAgfQoKICAgICMgSW5jbHVkZSB0ZWFtIGxldmVsIG1vZGVscwogICAgYWRtaW4gPSBwZXJzb24gIk9yZ2FuaXphdGlvbiBBZG1pbiIgIkFuIGFkbWluaXN0cmF0b3Igb2YgYW4gb3JnYW5pemF0aW9uIiB7CiAgICAgIHRhZ3MgIkFkbWluIgogICAgfQogICAgcHJvdmlkZXIgPSBwZXJzb24gIk1TUCIgIkFuZCBlbXBsb3llZSBvZiBhIG1hbmFnZWQgc2VydmljZSBwcm92aWRlciIgewogICAgICB0YWdzICJNU1AiCiAgICB9CiAgICAKICAgICFlbGVtZW50IHNlcnZlciB7CiAgICAgIGlkZW50aXR5ID0gY29udGFpbmVyICJJZGVudGl0eSIgewogICAgICAgIHRhZ3MgIkF1dGgiCiAgICAgIH0KICAgIH0KICAgICMgRXh0ZXJuYWwgdmVuZG9ycwogICAgZ3JvdXAgIlBheW1lbnQgU3lzdGVtcyIgewogICAgICBzdHJpcGUgPSBzb2Z0d2FyZVN5c3RlbSAiU3RyaXBlIiB7CiAgICAgICAgdGFncyAiRXh0ZXJuYWwiCiAgICAgICAgdGFncyAiQmlsbGluZyIKICAgICAgICBkZXNjcmlwdGlvbiAiSGFuZGxlcyBjcmVkaXQgY2FyZHMgYW5kIHN1YnNjcmlwdGlvbnMuIgogICAgICB9CiAgICAgIGJyYWludHJlZSA9IHNvZnR3YXJlU3lzdGVtICJCcmFpbnRyZWUiIHsKICAgICAgICB0YWdzICJFeHRlcm5hbCIKICAgICAgICB0YWdzICJCaWxsaW5nIgogICAgICAgIGRlc2NyaXB0aW9uICJIYW5kbGVzIFBheVBhbCBhbmQgY3J5cHRvY3VycmVuY3kuIgogICAgICB9CiAgICB9CiAgICAKICAgICFlbGVtZW50IGNsaWVudHMuZGVza3RvcCB7CiAgICAgIGJpb21ldHJpYyA9IGNvbXBvbmVudCAiQmlvbWV0cmljIEF1dGhlbnRpY2F0aW9uIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIkhhbmRsZXMgYmlvbWV0cmljIGF1dGhlbnRpY2F0aW9uIGZvciB0aGUgQml0d2FyZGVuIGRlc2t0b3AgYXBwbGljYXRpb24uIgogICAgICB9CiAgICAKICAgICAgcGFzc3dvcmQgPSBjb21wb25lbnQgIk9TIFBhc3N3b3JkIE1hbmFnZW1lbnQgTmF0aXZlIE1vZHVsZSIgewogICAgICAgIGRlc2NyaXB0aW9uICJDUlVEIG9wZXJhdGlvbnMgb24ga2V5cy12YWx1ZXMgc3RvcmVkIGJ5IHRoZSBPUy4iCiAgICAgICAgdGVjaG5vbG9neSAicnVzdCBtb2R1bGUiCiAgICAgIH0KICAgIAogICAgICBpcGMgPSBjb21wb25lbnQgIklQQyIgewogICAgICAgIGRlc2NyaXB0aW9uICJJbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgZGVza3RvcCBhcHBsaWNhdGlvbiBhbmQgdGhlIGJyb3dzZXIgZXh0ZW5zaW9uLiIKICAgICAgICB0ZWNobm9sb2d5ICJTb2NrZXRzIgogICAgICB9CiAgICB9CiAgICAKICAgIG9zX3NlY3VyZV9zdG9yYWdlID0gc29mdHdhcmVTeXN0ZW0gIk9TIFNlY3VyZSBTdG9yYWdlIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsIgogICAgICBkZXNjcmlwdGlvbiAiVGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBzZWN1cmUgc3RvcmFnZSBmb3Igc2Vuc2l0aXZlIGRhdGEsIHN1Y2ggYXMgV2luZG93cyBDcmVkZW50aWFsIExvY2tlciBvciBtYWNPUyBLZXljaGFpbi4iCiAgICB9CiAgICAKICAgIG9zX3VzZXJfdmVyaWZpY2F0aW9uID0gc29mdHdhcmVTeXN0ZW0gIk9TIFVzZXIgVmVyaWZpY2F0aW9uIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsIgogICAgICBkZXNjcmlwdGlvbiAiVGhlIG9wZXJhdGluZyBzeXN0ZW0ncyB1c2VyIHZlcmlmaWNhdGlvbiBzeXN0ZW0sIHN1Y2ggYXMgV2luZG93cyBIZWxsbyBvciBtYWNPUyBUb3VjaCBJRC4iCiAgICB9CiAgICAKICAgIHdpbmRvd3NfaGVsbG9fc2lnbmVyID0gc29mdHdhcmVTeXN0ZW0gIldpbmRvd3MgSGVsbG8gU2lnbmVyIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsIiAiV2luZG93cy1CaW9tZXRyaWMiCiAgICAgIGRlc2NyaXB0aW9uICJBIFdpbmRvd3MgSGVsbG8gc2lnbmVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2lnbiByZXF1ZXN0cyBmb3IgdGhlIEJpdHdhcmRlbiBkZXNrdG9wIGFwcGxpY2F0aW9uLiIKICAgIH0KICAgIAogICAgY2xpZW50cy5icm93c2VyX2V4dGVuc2lvbiAtPiBjbGllbnRzLmRlc2t0b3AuaXBjICJDb25uZWN0cyB0byBJUEMgdG8gcmVxdWVzdCBiaW9tZXRyaWMgYXV0aGVudGljYXRpb24iCiAgICBjbGllbnRzLmRlc2t0b3AuaXBjIC0+IGNsaWVudHMuZGVza3RvcC5iaW9tZXRyaWMgIlJlbGF5cyBiaW9tZXRyaWMgYXV0aGVudGljYXRpb24gcmVxdWVzdHMgdG8iCiAgICAKICAgIGNsaWVudHMuZGVza3RvcC5iaW9tZXRyaWMgLT4gY2xpZW50cy5kZXNrdG9wLnBhc3N3b3JkICJSZWFkL1dyaXRlIHVzZXIga2V5cyIgIk5hcGkgUnVzdCBGRkkiCiAgICBjbGllbnRzLmRlc2t0b3AucGFzc3dvcmQgLT4gb3Nfc2VjdXJlX3N0b3JhZ2UgIkNSVUQgb3BlcmF0aW9ucyBvbiBrZXlzIHN0b3JlZCBpbiB0aGUgT1Mgc2VjdXJlIHN0b3JhZ2UiCiAgICBjbGllbnRzLmRlc2t0b3AuYmlvbWV0cmljIC0+IG9zX3VzZXJfdmVyaWZpY2F0aW9uICJSZXF1ZXN0cyB1c2VyIHZlcmlmaWNhdGlvbiBmb3IgYmlvbWV0cmljIGF1dGhlbnRpY2F0aW9uIgogICAgIWVsZW1lbnQgc2VydmVyIHsKICAgICAgaWNvbnMgPSBjb250YWluZXIgIkljb25zIiB7CiAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBJY29ucyBzZXJ2aWNlIHByb3ZpZGVzIGZhdmljb25zIGZvciB3ZWJzaXRlcy4iCiAgICAgICAgY2xpZW50cyAtPiBzZXJ2ZXIuaWNvbnMgIlJlcXVlc3RzIGljb25zIGZvciBjbGVhcnRleHQgdXJscyBmcm9tIiAKICAgICAgfQogICAgfQogICAgCiAgICBkbnMgPSBzb2Z0d2FyZVN5c3RlbSAiRE5TIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsIgogICAgICB0YWdzICJJY29ucyIKICAgIH0KCiAgICAjIEluY2x1ZGUgc2hhcmVkIGxldmVsIHJlbGF0aW9uc2hpcHMKICAgICMgVXNlciBSZWxhdGlvbnNoaXBzCiAgICB1c2VyIC0+IGNsaWVudHMud2ViICJVc2VzIgogICAgdXNlciAtPiBjbGllbnRzLmJyb3dzZXJfZXh0ZW5zaW9uICJVc2VzIgogICAgdXNlciAtPiBjbGllbnRzLmNsaSAiVXNlcyIKICAgIHVzZXIgLT4gY2xpZW50cy5kZXNrdG9wICJVc2VzIgogICAgYWRtaW4gLT4gY2xpZW50cy53ZWIgIkFkbWluaXN0ZXJzIE9yZ2FuaXphdGlvbnMiCiAgICBwcm92aWRlciAtPiBjbGllbnRzLndlYiAiQWRtaW5pc3RlcnMgUHJvdmlkZXJzIGFuZCBPcmdhbml6YXRpb25zIgogICAgCiAgICAjIEhpZ2gtbGV2ZWwgQ2xpZW50IFJlbGF0aW9uc2hpcHMKICAgIGNsaWVudHMud2ViIC0+IHNlcnZlci5hcGkgIk1ha2VzIHJlcXVlc3RzIHRvIgogICAgY2xpZW50cy5icm93c2VyX2V4dGVuc2lvbiAtPiBzZXJ2ZXIuYXBpICJNYWtlcyByZXF1ZXN0cyB0byIKICAgIGNsaWVudHMuY2xpIC0+IHNlcnZlci5hcGkgIk1ha2VzIHJlcXVlc3RzIHRvIgogICAgY2xpZW50cy5kZXNrdG9wIC0+IHNlcnZlci5hcGkgIk1ha2VzIHJlcXVlc3RzIHRvIgogICAgY2xpZW50cy53ZWIgLT4gc2VydmVyLmlkZW50aXR5ICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICBjbGllbnRzLmJyb3dzZXJfZXh0ZW5zaW9uIC0+IHNlcnZlci5pZGVudGl0eSAiQXV0aGVudGljYXRlcyBXaXRoIgogICAgY2xpZW50cy5jbGkgLT4gc2VydmVyLmlkZW50aXR5ICJBdXRoZW50aWNhdGVzIFdpdGgiCiAgICBjbGllbnRzLmRlc2t0b3AgLT4gc2VydmVyLmlkZW50aXR5ICJBdXRoZW50aWNhdGVzIFdpdGgiCiAgICBzZXJ2ZXIuYXBpIC0+IHNlcnZlci5pZGVudGl0eSAiVmFsaWRhdGVzIEpXVHMgd2l0aCIgewogICAgICB1cmwgImh0dHBzOi8vYml0d2FyZGVuLmNvbSIKICAgIH0KICAgIGNsaWVudHMgLT4gc2VydmVyLmV2ZW50cyAiUG9zdHMgbG9jYWwgdXNhZ2UgZXZlbnRzIHRvIgogICAgCiAgICAjIHNlbGYgaG9zdCBwaG9uZSBob21lCiAgICBzZWxmX2hvc3RlZF9pbnN0YW5jZXMgLT4gc2VydmVyLm5vdGlmaWNhdGlvbnMgIlNlbmRzIHB1c2ggbm90aWZpY2F0aW9uIHByb3h5IHJlcXVlc3RzIHRvIgoKCiAgICBrZXlfY29ubmVjdG9yIC0+IHNlcnZlci5pZGVudGl0eSAiVmFsaWRhdGVzIEpXVHMgd2l0aCIKICB9CgogIHZpZXdzIHsKICAgIHN0eWxlcyB7CiAgICAgIGVsZW1lbnQgIlBlcnNvbiIgewogICAgICAgIGJhY2tncm91bmQgIzMxMDdkMwogICAgICAgIHNoYXBlIHBlcnNvbgogICAgICB9CiAgICAgIGVsZW1lbnQgIk1TUCIgewogICAgICAgIGJhY2tncm91bmQgIzMxMDdkMwogICAgICAgIHNoYXBlIHBlcnNvbgogICAgICB9CiAgICB9CiAgICBjb21wb25lbnQgY2xpZW50cy5kZXNrdG9wICJkZXNrdG9wX2Jpb21ldHJpY3NfbWFjb3MiIHsKICAgICAgaW5jbHVkZSAqCiAgICAgIGluY2x1ZGUgb3NfdXNlcl92ZXJpZmljYXRpb24KICAgICAgYXV0b0xheW91dCB0YgogICAgfQogICAgLy8gVE9ETzogQWRkIFdpbmRvd3MgYW5kIExpbnV4LCBleGNsdWRpbmcgcmVsZXZhbnQgVGFncwoKICAgIHN5c3RlbUxhbmRzY2FwZSAiQml0d2FyZGVuIiB7CiAgICAgIGluY2x1ZGUgKgogICAgfQoKICAgIGNvbnRhaW5lciBjbGllbnRzICJiaXR3YXJkZW5fanNfY2xpZW50cyIgewogICAgICBpbmNsdWRlICoKICAgIH0KCiAgICAvLyBUaGlzIGlzIGxhc3QgdG8gb3ZlcnJpZGUgdGVhbSBzdHlsZXMgd2l0aCBjb21tb24gc3R5bGVzCiAgICBzdHlsZXMgewogICAgICB0aGVtZSBkZWZhdWx0CiAgICAgIGVsZW1lbnQgIkVsZW1lbnQiIHsKICAgICAgICBjb2xvciAjM2MzYjNiCiAgICAgIH0KICAgICAgZWxlbWVudCAiUGVyc29uIiB7CiAgICAgICAgYmFja2dyb3VuZCAjZDM0NDA3CiAgICAgICAgc2hhcGUgcGVyc29uCiAgICAgIH0KICAgICAgZWxlbWVudCAiQ29udGFpbmVyIiB7CiAgICAgICAgYmFja2dyb3VuZCAjZjg4NzI4CiAgICAgIH0KICAgICAgZWxlbWVudCAiTVNQIiB7CiAgICAgICAgYmFja2dyb3VuZCAjMzEwN2QzCiAgICAgIH0KICAgICAgZWxlbWVudCAiUXVldWUiIHsKICAgICAgICBzaGFwZSBwaXBlCiAgICAgIH0KICAgICAgZWxlbWVudCAiTW9iaWxlIiB7CiAgICAgICAgc2hhcGUgbW9iaWxlRGV2aWNlUG9ydHJhaXQKICAgICAgfQogICAgICBlbGVtZW50ICJXZWIiIHsKICAgICAgICBzaGFwZSB3ZWJCcm93c2VyCiAgICAgIH0KICAgICAgZWxlbWVudCAiRGF0YWJhc2UiIHsKICAgICAgICBzaGFwZSBjeWxpbmRlcgogICAgICB9CiAgICAgIGVsZW1lbnQgIkV4dGVybmFsIiB7CiAgICAgICAgY29sb3IgIzAwMDAwMAogICAgICAgIGJhY2tncm91bmQgI2I1YjViNQogICAgICB9CiAgICB9CiAgfQp9"
},
"views": {
"componentViews": [
{
"automaticLayout": {
"applied": true,
"edgeSeparation": 0,
"implementation": "Graphviz",
"nodeSeparation": 300,
"rankDirection": "TopBottom",
"rankSeparation": 300,
"vertices": false
},
"containerId": "13",
"dimensions": {
"height": 3100,
"width": 1620
},
"elements": [
{
"id": "11",
"x": 220,
"y": 165
},
{
"id": "22",
"x": 220,
"y": 1365
},
{
"id": "23",
"x": 220,
"y": 1965
},
{
"id": "24",
"x": 220,
"y": 765
},
{
"id": "25",
"x": 220,
"y": 2565
},
{
"id": "26",
"x": 970,
"y": 1965
}
],
"externalContainerBoundariesVisible": false,
"key": "desktop_biometrics_macos",
"order": 1,
"relationships": [
{
"id": "28"
},
{
"id": "30"
},
{
"id": "31"
},
{
"id": "32"
},
{
"id": "35"
}
]
}
],
"configuration": {
"branding": {},
"lastSavedView": "desktop_biometrics_macos",
"metadataSymbols": "SquareBrackets",
"styles": {
"elements": [
{
"background": "#d34407",
"shape": "Person",
"tag": "Person"
},
{
"background": "#3107d3",
"shape": "Person",
"tag": "MSP"
},
{
"color": "#3c3b3b",
"tag": "Element"
},
{
"background": "#f88728",
"tag": "Container"
},
{
"shape": "Pipe",
"tag": "Queue"
},
{
"shape": "MobileDevicePortrait",
"tag": "Mobile"
},
{
"shape": "WebBrowser",
"tag": "Web"
},
{
"shape": "Cylinder",
"tag": "Database"
},
{
"background": "#b5b5b5",
"color": "#000000",
"tag": "External"
}
]
},
"terminology": {},
"themes": ["https://static.structurizr.com/themes/default/theme.json"]
},
"containerViews": [
{
"dimensions": {
"height": 2616,
"width": 3304
},
"elements": [
{
"id": "1",
"x": 1658,
"y": 208
},
{
"id": "4",
"x": 1012,
"y": 2108
},
{
"id": "10",
"x": 533,
"y": 908
},
{
"id": "11",
"x": 2033,
"y": 908
},
{
"id": "12",
"x": 1283,
"y": 908
},
{
"id": "13",
"x": 2033,
"y": 1508
},
{
"id": "17",
"x": 908,
"y": 208
},
{
"id": "18",
"x": 208,
"y": 208
},
{
"id": "25",
"x": 1896,
"y": 2108
},
{
"id": "26",
"x": 2646,
"y": 2108
}
],
"externalSoftwareSystemBoundariesVisible": false,
"key": "bitwarden_js_clients",
"order": 3,
"paperSize": "A3_Landscape",
"relationships": [
{
"id": "29"
},
{
"id": "33"
},
{
"id": "36"
},
{
"id": "42",
"vertices": [
{
"x": 1133,
"y": 804
}
]
},
{
"id": "44"
},
{
"id": "45"
},
{
"id": "46",
"vertices": [
{
"x": 2633,
"y": 804
},
{
"x": 2633,
"y": 1208
}
]
},
{
"id": "47"
},
{
"id": "49"
},
{
"id": "52"
},
{
"id": "55"
},
{
"id": "57",
"vertices": [
{
"x": 1350,
"y": 1508
}
]
},
{
"id": "59"
}
],
"softwareSystemId": "9"
}
],
"systemLandscapeViews": [
{
"dimensions": {
"height": 2308,
"width": 8191
},
"elements": [
{
"id": "1",
"x": 1733,
"y": 279
},
{
"id": "2",
"x": 6083,
"y": 279
},
{
"id": "3",
"x": 1708,
"y": 979
},
{
"id": "4",
"x": 958,
"y": 1679
},
{
"id": "9",
"x": 2408,
"y": 1029
},
{
"id": "14",
"x": 958,
"y": 1029
},
{
"id": "15",
"x": 208,
"y": 1029
},
{
"id": "16",
"x": 5333,
"y": 329
},
{
"id": "17",
"x": 2433,
"y": 279
},
{
"id": "18",
"x": 3133,
"y": 279
},
{
"id": "20",
"x": 4583,
"y": 329
},
{
"id": "21",
"x": 3833,
"y": 329
},
{
"id": "25",
"x": 3067,
"y": 1679
},
{
"id": "26",
"x": 3817,
"y": 1679
},
{
"id": "27",
"x": 6783,
"y": 329
},
{
"id": "41",
"x": 7533,
"y": 329
}
],
"enterpriseBoundaryVisible": true,
"key": "Bitwarden",
"order": 2,
"paperSize": "A1_Landscape",
"relationships": [
{
"id": "34"
},
{
"id": "37"
},
{
"id": "40",
"vertices": [
{
"x": 2258,
"y": 1379
}
]
},
{
"id": "43"
},
{
"id": "48"
},
{
"id": "50"
},
{
"id": "68"
},
{
"id": "70"
}
]
}
]
}
}