Files
server/docs/bitwarden_system.json
2025-12-17 09:56:00 -08:00

1279 lines
44 KiB
JSON

{
"configuration" : { },
"description" : "General Bitwarden System",
"documentation" : { },
"id" : 1,
"lastModifiedAgent" : "structurizr-ui",
"lastModifiedDate" : "2025-05-20T20:49:59Z",
"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" : "16",
"id" : "48",
"sourceId" : "1",
"tags" : "Relationship"
}, {
"description" : "Uses",
"destinationId" : "15",
"id" : "49",
"linkedRelationshipId" : "48",
"sourceId" : "1"
}, {
"description" : "Uses",
"destinationId" : "17",
"id" : "50",
"sourceId" : "1",
"tags" : "Relationship"
}, {
"description" : "Uses",
"destinationId" : "18",
"id" : "51",
"sourceId" : "1",
"tags" : "Relationship"
}, {
"description" : "Uses",
"destinationId" : "19",
"id" : "52",
"sourceId" : "1",
"tags" : "Relationship"
}, {
"description" : "Uses",
"destinationId" : "20",
"id" : "53",
"sourceId" : "1",
"tags" : "Relationship"
}, {
"description" : "Uses",
"destinationId" : "21",
"id" : "54",
"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"
},
"relationships" : [ {
"description" : "Administers System",
"destinationId" : "9",
"id" : "63",
"sourceId" : "2",
"tags" : "Relationship"
}, {
"description" : "Administers System",
"destinationId" : "4",
"id" : "64",
"linkedRelationshipId" : "63",
"sourceId" : "2"
} ],
"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"
},
"relationships" : [ {
"description" : "Inspects and supports",
"destinationId" : "9",
"id" : "61",
"sourceId" : "3",
"tags" : "Relationship"
}, {
"description" : "Inspects and supports",
"destinationId" : "4",
"id" : "62",
"linkedRelationshipId" : "61",
"sourceId" : "3"
} ],
"tags" : "Element,Person,Bitwarden Employee"
}, {
"description" : "An administrator of an organization",
"id" : "25",
"location" : "Unspecified",
"name" : "Organization Admin",
"properties" : {
"structurizr.dsl.identifier" : "admin"
},
"relationships" : [ {
"description" : "Administers Organizations",
"destinationId" : "16",
"id" : "55",
"sourceId" : "25",
"tags" : "Relationship"
}, {
"description" : "Administers Organizations",
"destinationId" : "15",
"id" : "56",
"linkedRelationshipId" : "55",
"sourceId" : "25"
} ],
"tags" : "Element,Person,Admin"
}, {
"description" : "And employee of a managed service provider",
"id" : "26",
"location" : "Unspecified",
"name" : "MSP",
"properties" : {
"structurizr.dsl.identifier" : "provider"
},
"relationships" : [ {
"description" : "Completes Provider registration with",
"destinationId" : "9",
"id" : "57",
"sourceId" : "26",
"tags" : "Relationship"
}, {
"description" : "Completes Provider registration with",
"destinationId" : "4",
"id" : "58",
"linkedRelationshipId" : "57",
"sourceId" : "26"
}, {
"description" : "Administers Providers and Organizations",
"destinationId" : "16",
"id" : "59",
"sourceId" : "26",
"tags" : "Relationship"
}, {
"description" : "Administers Providers and Organizations",
"destinationId" : "15",
"id" : "60",
"linkedRelationshipId" : "59",
"sourceId" : "26"
} ],
"tags" : "Element,Person,MSP"
} ],
"properties" : {
"structurizr.groupSeparator" : "/"
},
"softwareSystems" : [ {
"containers" : [ {
"components" : [ {
"documentation" : { },
"id" : "6",
"name" : "Billing",
"properties" : {
"structurizr.dsl.identifier" : "server.api.billing"
},
"relationships" : [ {
"description" : "Requests payments for customers",
"destinationId" : "32",
"id" : "101",
"sourceId" : "6",
"tags" : "Relationship"
}, {
"description" : "Requests payments for customers",
"destinationId" : "33",
"id" : "104",
"sourceId" : "6",
"tags" : "Relationship"
} ],
"tags" : "Element,Component,Billing"
} ],
"documentation" : { },
"id" : "5",
"name" : "API",
"properties" : {
"structurizr.dsl.identifier" : "server.api"
},
"relationships" : [ {
"description" : "Validates JWTs with",
"destinationId" : "30",
"id" : "85",
"sourceId" : "5",
"tags" : "Relationship",
"url" : "https://bitwarden.com"
}, {
"description" : "Queries",
"destinationId" : "11",
"id" : "87",
"sourceId" : "5",
"tags" : "Relationship"
}, {
"description" : "Sends events to",
"destinationId" : "12",
"id" : "89",
"sourceId" : "5",
"tags" : "Relationship"
}, {
"description" : "Sends emails to",
"destinationId" : "13",
"id" : "91",
"sourceId" : "5",
"tags" : "Relationship"
}, {
"description" : "Sends notifications to",
"destinationId" : "14",
"id" : "92",
"sourceId" : "5",
"tags" : "Relationship"
}, {
"description" : "Requests payments for customers",
"destinationId" : "32",
"id" : "102",
"linkedRelationshipId" : "101",
"sourceId" : "5"
}, {
"description" : "Requests payments for customers",
"destinationId" : "33",
"id" : "105",
"linkedRelationshipId" : "104",
"sourceId" : "5"
} ],
"tags" : "Element,Container,API"
}, {
"documentation" : { },
"id" : "7",
"name" : "Events",
"properties" : {
"structurizr.dsl.identifier" : "server.events"
},
"relationships" : [ {
"description" : "Sends events to",
"destinationId" : "12",
"id" : "90",
"sourceId" : "7",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Events"
}, {
"documentation" : { },
"id" : "8",
"name" : "Notifications",
"properties" : {
"structurizr.dsl.identifier" : "server.notifications"
},
"relationships" : [ {
"description" : "Sends notifications to",
"destinationId" : "14",
"id" : "93",
"sourceId" : "8",
"tags" : "Relationship"
} ],
"tags" : "Element,Container"
}, {
"documentation" : { },
"id" : "9",
"name" : "Bitwarden Portal",
"properties" : {
"structurizr.dsl.identifier" : "server.portal"
},
"relationships" : [ {
"description" : "Queries",
"destinationId" : "11",
"id" : "88",
"sourceId" : "9",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Web"
}, {
"documentation" : { },
"id" : "10",
"name" : "Events Processor",
"properties" : {
"structurizr.dsl.identifier" : "server.events_processor"
},
"tags" : "Element,Container,Events"
}, {
"documentation" : { },
"id" : "11",
"name" : "Database",
"properties" : {
"structurizr.dsl.identifier" : "server.database"
},
"tags" : "Element,Container,Database"
}, {
"documentation" : { },
"id" : "12",
"name" : "Events Queue",
"properties" : {
"structurizr.dsl.identifier" : "server.events_queue"
},
"relationships" : [ {
"description" : "Processes events from",
"destinationId" : "10",
"id" : "94",
"sourceId" : "12",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Queue,Azure"
}, {
"documentation" : { },
"id" : "13",
"name" : "Mail Queue",
"properties" : {
"structurizr.dsl.identifier" : "server.mail_queue"
},
"relationships" : [ {
"description" : "Processes emails from",
"destinationId" : "9",
"id" : "95",
"sourceId" : "13",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Queue,Azure"
}, {
"documentation" : { },
"id" : "14",
"name" : "Notifications Queue",
"properties" : {
"structurizr.dsl.identifier" : "server.notifications_queue"
},
"tags" : "Element,Container,Queue,Azure"
}, {
"documentation" : { },
"id" : "27",
"name" : "SCIM",
"properties" : {
"structurizr.dsl.identifier" : "server.scim"
},
"relationships" : [ {
"description" : "Queries",
"destinationId" : "11",
"id" : "98",
"sourceId" : "27",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,SCIM"
}, {
"documentation" : { },
"id" : "30",
"name" : "Identity",
"properties" : {
"structurizr.dsl.identifier" : "server.identity"
},
"relationships" : [ {
"description" : "Queries",
"destinationId" : "11",
"id" : "99",
"sourceId" : "30",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Auth"
}, {
"documentation" : { },
"id" : "31",
"name" : "SSO",
"properties" : {
"structurizr.dsl.identifier" : "server.sso"
},
"relationships" : [ {
"description" : "Queries",
"destinationId" : "11",
"id" : "100",
"sourceId" : "31",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Auth"
}, {
"components" : [ {
"description" : "IconsController",
"documentation" : { },
"id" : "35",
"name" : "IconsController",
"properties" : {
"structurizr.dsl.identifier" : "server.icons.icons_controller"
},
"relationships" : [ {
"description" : "Requests icons from",
"destinationId" : "37",
"id" : "42",
"sourceId" : "35",
"tags" : "Relationship"
}, {
"description" : "Caches icons in",
"destinationId" : "38",
"id" : "43",
"sourceId" : "35",
"tags" : "Relationship"
} ],
"tags" : "Element,Component",
"technology" : "C# ASP.NET Core"
}, {
"description" : "Provides information about the deployed icon service. Allow for health checks.",
"documentation" : { },
"id" : "36",
"name" : "InfoController",
"properties" : {
"structurizr.dsl.identifier" : "server.icons.info_controller"
},
"tags" : "Element,Component,Info,HealthCheck",
"technology" : "C# ASP.NET Core"
}, {
"description" : "Resolves a single source for a website icon and downloads it.",
"documentation" : { },
"id" : "37",
"name" : "IconDetermination",
"perspectives" : [ {
"description" : "Internal network exposure",
"name" : "Security",
"value" : "5"
} ],
"properties" : {
"structurizr.dsl.identifier" : "server.icons.icon_retrieval"
},
"relationships" : [ {
"description" : "Retrieves icons from",
"destinationId" : "44",
"id" : "45",
"sourceId" : "37",
"tags" : "Relationship"
} ],
"tags" : "Element,Component"
}, {
"description" : "Caches icons for a given domain",
"documentation" : { },
"id" : "38",
"name" : "IconCache",
"properties" : {
"structurizr.dsl.identifier" : "server.icons.icon_cache"
},
"tags" : "Element,Component,Cache",
"technology" : "C# MemoryCache"
} ],
"documentation" : { },
"id" : "34",
"name" : "Icons",
"properties" : {
"structurizr.dsl.identifier" : "server.icons"
},
"relationships" : [ {
"description" : "Retrieves icons from",
"destinationId" : "44",
"id" : "46",
"linkedRelationshipId" : "45",
"sourceId" : "34"
} ],
"tags" : "Element,Container"
} ],
"documentation" : { },
"group" : "Bitwarden Controlled",
"id" : "4",
"location" : "Unspecified",
"name" : "Bitwarden Server",
"properties" : {
"structurizr.dsl.identifier" : "server"
},
"relationships" : [ {
"description" : "Retrieves icons from",
"destinationId" : "44",
"id" : "47",
"linkedRelationshipId" : "45",
"sourceId" : "4"
}, {
"description" : "Requests payments for customers",
"destinationId" : "32",
"id" : "103",
"linkedRelationshipId" : "101",
"sourceId" : "4"
}, {
"description" : "Requests payments for customers",
"destinationId" : "33",
"id" : "106",
"linkedRelationshipId" : "104",
"sourceId" : "4"
} ],
"tags" : "Element,Software System"
}, {
"containers" : [ {
"documentation" : { },
"id" : "16",
"name" : "Web Application",
"properties" : {
"structurizr.dsl.identifier" : "clients.web"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "65",
"sourceId" : "16",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "66",
"linkedRelationshipId" : "65",
"sourceId" : "16"
}, {
"description" : "Authenticates with",
"destinationId" : "30",
"id" : "78",
"sourceId" : "16",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Web"
}, {
"documentation" : { },
"id" : "17",
"name" : "iOS Application",
"properties" : {
"structurizr.dsl.identifier" : "clients.ios"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "68",
"sourceId" : "17",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "69",
"linkedRelationshipId" : "68",
"sourceId" : "17"
}, {
"description" : "Authenticates With",
"destinationId" : "30",
"id" : "80",
"sourceId" : "17",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Mobile"
}, {
"documentation" : { },
"id" : "18",
"name" : "Android Application",
"properties" : {
"structurizr.dsl.identifier" : "clients.android"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "70",
"sourceId" : "18",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "71",
"linkedRelationshipId" : "70",
"sourceId" : "18"
}, {
"description" : "Authenticates With",
"destinationId" : "30",
"id" : "81",
"sourceId" : "18",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Mobile"
}, {
"documentation" : { },
"id" : "19",
"name" : "Browser Extension",
"properties" : {
"structurizr.dsl.identifier" : "clients.browser_extension"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "72",
"sourceId" : "19",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "73",
"linkedRelationshipId" : "72",
"sourceId" : "19"
}, {
"description" : "Authenticates With",
"destinationId" : "30",
"id" : "82",
"sourceId" : "19",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Browser"
}, {
"documentation" : { },
"id" : "20",
"name" : "CLI",
"properties" : {
"structurizr.dsl.identifier" : "clients.cli"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "74",
"sourceId" : "20",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "75",
"linkedRelationshipId" : "74",
"sourceId" : "20"
}, {
"description" : "Authenticates With",
"destinationId" : "30",
"id" : "83",
"sourceId" : "20",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,CLI"
}, {
"documentation" : { },
"id" : "21",
"name" : "Desktop Application",
"properties" : {
"structurizr.dsl.identifier" : "clients.desktop"
},
"relationships" : [ {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "76",
"sourceId" : "21",
"tags" : "Relationship"
}, {
"description" : "Makes requests to",
"destinationId" : "4",
"id" : "77",
"linkedRelationshipId" : "76",
"sourceId" : "21"
}, {
"description" : "Authenticates With",
"destinationId" : "30",
"id" : "84",
"sourceId" : "21",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,Desktop"
} ],
"documentation" : { },
"group" : "Bitwarden Controlled",
"id" : "15",
"location" : "Unspecified",
"name" : "Clients",
"properties" : {
"structurizr.dsl.identifier" : "clients"
},
"relationships" : [ {
"description" : "Requests icons for cleartext urls from",
"destinationId" : "35",
"id" : "39",
"sourceId" : "15",
"tags" : "Relationship"
}, {
"description" : "Requests icons for cleartext urls from",
"destinationId" : "34",
"id" : "40",
"linkedRelationshipId" : "39",
"sourceId" : "15"
}, {
"description" : "Requests icons for cleartext urls from",
"destinationId" : "4",
"id" : "41",
"linkedRelationshipId" : "39",
"sourceId" : "15"
}, {
"description" : "Makes requests to",
"destinationId" : "5",
"id" : "67",
"linkedRelationshipId" : "65",
"sourceId" : "15"
}, {
"description" : "Authenticates with",
"destinationId" : "30",
"id" : "79",
"linkedRelationshipId" : "78",
"sourceId" : "15"
}, {
"description" : "Posts local usage events to",
"destinationId" : "7",
"id" : "86",
"sourceId" : "15",
"tags" : "Relationship"
} ],
"tags" : "Element,Software System"
}, {
"documentation" : { },
"group" : "Bitwarden Controlled",
"id" : "22",
"location" : "Unspecified",
"name" : "Directory Connector",
"properties" : {
"structurizr.dsl.identifier" : "directory_connector"
},
"relationships" : [ {
"description" : "Syncs users and groups to Bitwarden",
"destinationId" : "5",
"id" : "28",
"sourceId" : "22",
"tags" : "Relationship"
}, {
"description" : "Syncs users and groups to Bitwarden",
"destinationId" : "4",
"id" : "29",
"linkedRelationshipId" : "28",
"sourceId" : "22"
} ],
"tags" : "Element,Software System,Directory,LDAP,Self-Hosted"
}, {
"documentation" : { },
"group" : "Bitwarden Controlled",
"id" : "23",
"location" : "Unspecified",
"name" : "Key Connector",
"properties" : {
"structurizr.dsl.identifier" : "key_connector"
},
"relationships" : [ {
"description" : "Validates JWTs with",
"destinationId" : "30",
"id" : "110",
"sourceId" : "23",
"tags" : "Relationship"
}, {
"description" : "Validates JWTs with",
"destinationId" : "4",
"id" : "111",
"linkedRelationshipId" : "110",
"sourceId" : "23"
} ],
"tags" : "Element,Software System"
}, {
"description" : "Self-hosted instances of Bitwarden servers",
"documentation" : { },
"id" : "24",
"location" : "Unspecified",
"name" : "Self-Hosted Instances",
"properties" : {
"structurizr.dsl.identifier" : "self_hosted_instances"
},
"relationships" : [ {
"description" : "Sends push notification proxy requests to",
"destinationId" : "8",
"id" : "96",
"sourceId" : "24",
"tags" : "Relationship"
}, {
"description" : "Sends push notification proxy requests to",
"destinationId" : "4",
"id" : "97",
"linkedRelationshipId" : "96",
"sourceId" : "24"
} ],
"tags" : "Element,Software System,Self-Hosted,External"
}, {
"description" : "Handles credit cards and subscriptions.",
"documentation" : { },
"group" : "Payment Systems",
"id" : "32",
"location" : "Unspecified",
"name" : "Stripe",
"properties" : {
"structurizr.dsl.identifier" : "stripe"
},
"relationships" : [ {
"description" : "Sends subscription events to",
"destinationId" : "6",
"id" : "107",
"sourceId" : "32",
"tags" : "Relationship"
}, {
"description" : "Sends subscription events to",
"destinationId" : "5",
"id" : "108",
"linkedRelationshipId" : "107",
"sourceId" : "32"
}, {
"description" : "Sends subscription events to",
"destinationId" : "4",
"id" : "109",
"linkedRelationshipId" : "107",
"sourceId" : "32"
} ],
"tags" : "Element,Software System,External,Billing"
}, {
"description" : "Handles PayPal and cryptocurrency.",
"documentation" : { },
"group" : "Payment Systems",
"id" : "33",
"location" : "Unspecified",
"name" : "Braintree",
"properties" : {
"structurizr.dsl.identifier" : "braintree"
},
"tags" : "Element,Software System,External,Billing"
}, {
"documentation" : { },
"id" : "44",
"location" : "Unspecified",
"name" : "External Websites",
"properties" : {
"structurizr.dsl.identifier" : "external_websites"
},
"tags" : "Element,Software System,External,Icons"
} ]
},
"name" : "Bitwarden",
"properties" : {
"structurizr.dsl" : "d29ya3NwYWNlICJCaXR3YXJkZW4iICJHZW5lcmFsIEJpdHdhcmRlbiBTeXN0ZW0iIHsKCiAgIWlkZW50aWZpZXJzIGhpZXJhcmNoaWNhbAoKICBtb2RlbCB7CiAgICBwcm9wZXJ0aWVzIHsKICAgICAgInN0cnVjdHVyaXpyLmdyb3VwU2VwYXJhdG9yIiAiLyIKICAgIH0KCiAgICAjIEluY2x1ZGUgc2hhcmVkIGxldmVsIG1vZGVscwogICAgIyBQZXJzb24gdHlwZXMKICAgIHVzZXIgPSBwZXJzb24gIkJpdHdhcmRlbiBVc2VyIiAiQW4gZW5kIHVzZXIgb2YgdGhlIEJpdHdhcmRlbiBTeXN0ZW0iCiAgICBzeXN0ZW1fYWRtaW4gPSBwZXJzb24gIlN5c3RlbSBBZG1pbiIgIkVpdGhlciBhIEJpdHdhcmRlbiBzaXRlLXJlbGlhYmlsaXR5IGVuZ2luZWVyIG9yIGFkbWluaXN0cmF0b3Igb2YgYSBzZWxmLWhvc3RlZCBpbnN0YW5jZSIgewogICAgICB0YWdzICJCaXR3YXJkZW4gRW1wbG95ZWUiICJTZWxmLUhvc3QgQWRtaW4iCiAgICB9CiAgICAKICAgIAogICAgYndfY29udHJvbGxlZCA9IGdyb3VwICJCaXR3YXJkZW4gQ29udHJvbGxlZCIgewogICAgICAjIEJpdHdhcmRlbiBzdGFmZgogICAgICBjdXN0b21lcl9zdWNjZXNzID0gcGVyc29uICJDdXN0b21lciBTdWNjZXNzIiAiQSBjdXN0b21lciBzdWNjZXNzIGVuZ2luZWVyLiBJbnNwZWN0cyBiaXR3YXJkZW4gc3RhdGUgdGhyb3VnaCB0aGUgYWRtaW4gcG9ydGFsIGFuZCBpbnRlcm5hbCB0b29scyIgewogICAgICAgIHRhZ3MgIkJpdHdhcmRlbiBFbXBsb3llZSIKICAgICAgfQogICAgICAKICAgICAgIyBSb290IHN5c3RlbXMKICAgICAgc2VydmVyID0gc29mdHdhcmVTeXN0ZW0gIkJpdHdhcmRlbiBTZXJ2ZXIiIHsKICAgICAgICBhcGkgPSBjb250YWluZXIgIkFQSSIgewogICAgICAgICAgYmlsbGluZyA9IGNvbXBvbmVudCAiQmlsbGluZyIgewogICAgICAgICAgICB0YWdzICJCaWxsaW5nIgogICAgICAgICAgfQogICAgICAgICAgdGFncyAiQVBJIgogICAgICAgIH0KICAgICAgICBldmVudHMgPSBjb250YWluZXIgIkV2ZW50cyIgewogICAgICAgICAgdGFncyAiRXZlbnRzIgogICAgICAgIH0KICAgICAgICBub3RpZmljYXRpb25zID0gY29udGFpbmVyICJOb3RpZmljYXRpb25zIgogICAgICAgIHBvcnRhbCA9IGNvbnRhaW5lciAiQml0d2FyZGVuIFBvcnRhbCIgewogICAgICAgICAgdGFncyAiV2ViIgogICAgICAgIH0KICAgICAgICBldmVudHNfcHJvY2Vzc29yID0gY29udGFpbmVyICJFdmVudHMgUHJvY2Vzc29yIiB7CiAgICAgICAgICB0YWdzICJFdmVudHMiCiAgICAgICAgfQogICAgCiAgICAgICAgIyBEYXRhIHN0b3JlcwogICAgICAgIGRhdGFiYXNlID0gY29udGFpbmVyICJEYXRhYmFzZSIgewogICAgICAgICAgdGFncyAiRGF0YWJhc2UiCiAgICAgICAgfQogICAgICAgIGV2ZW50c19xdWV1ZSA9IGNvbnRhaW5lciAiRXZlbnRzIFF1ZXVlIiB7CiAgICAgICAgICB0YWdzICJRdWV1ZSIKICAgICAgICAgIHRhZ3MgIkF6dXJlIgogICAgICAgIH0KICAgICAgICBtYWlsX3F1ZXVlID0gY29udGFpbmVyICJNYWlsIFF1ZXVlIiB7CiAgICAgICAgICB0YWdzICJRdWV1ZSIKICAgICAgICAgIHRhZ3MgIkF6dXJlIgogICAgICAgIH0KICAgICAgICBub3RpZmljYXRpb25zX3F1ZXVlID0gY29udGFpbmVyICJOb3RpZmljYXRpb25zIFF1ZXVlIiB7CiAgICAgICAgICB0YWdzICJRdWV1ZSIKICAgICAgICAgIHRhZ3MgIkF6dXJlIgogICAgICAgIH0KICAgICAgfQogICAgICBjbGllbnRzID0gc29mdHdhcmVTeXN0ZW0gIkNsaWVudHMiIHsKICAgICAgICB3ZWIgPSBjb250YWluZXIgIldlYiBBcHBsaWNhdGlvbiIgewogICAgICAgICAgdGFncyAiV2ViIgogICAgICAgIH0KICAgICAgICBpb3MgPSBjb250YWluZXIgImlPUyBBcHBsaWNhdGlvbiIgewogICAgICAgICAgdGFncyAiTW9iaWxlIgogICAgICAgIH0KICAgICAgICBhbmRyb2lkID0gY29udGFpbmVyICJBbmRyb2lkIEFwcGxpY2F0aW9uIiB7CiAgICAgICAgICB0YWdzICJNb2JpbGUiCiAgICAgICAgfQogICAgICAgIGJyb3dzZXJfZXh0ZW5zaW9uID0gY29udGFpbmVyICJCcm93c2VyIEV4dGVuc2lvbiIgewogICAgICAgICAgdGFncyAiQnJvd3NlciIKICAgICAgICB9CiAgICAgICAgY2xpID0gY29udGFpbmVyICJDTEkiIHsKICAgICAgICAgIHRhZ3MgIkNMSSIKICAgICAgICB9CiAgICAgICAgZGVza3RvcCA9IGNvbnRhaW5lciAiRGVza3RvcCBBcHBsaWNhdGlvbiIgewogICAgICAgICAgdGFncyAiRGVza3RvcCIKICAgICAgICB9CiAgICAgIH0KICAgICAgZGlyZWN0b3J5X2Nvbm5lY3RvciA9IHNvZnR3YXJlU3lzdGVtICJEaXJlY3RvcnkgQ29ubmVjdG9yIiB7CiAgICAgICAgdGFncyAiRGlyZWN0b3J5IgogICAgICAgIHRhZ3MgIkxEQVAiCiAgICAgICAgdGFncyAiU2VsZi1Ib3N0ZWQiCiAgICAgIH0KICAgICAga2V5X2Nvbm5lY3RvciA9IHNvZnR3YXJlU3lzdGVtICJLZXkgQ29ubmVjdG9yIiAKICAgIH0KICAgIAogICAgc2VsZl9ob3N0ZWRfaW5zdGFuY2VzID0gc29mdHdhcmVTeXN0ZW0gIlNlbGYtSG9zdGVkIEluc3RhbmNlcyIgewogICAgICB0YWdzICJTZWxmLUhvc3RlZCIKICAgICAgdGFncyAiRXh0ZXJuYWwiCiAgICAgIGRlc2NyaXB0aW9uICJTZWxmLWhvc3RlZCBpbnN0YW5jZXMgb2YgQml0d2FyZGVuIHNlcnZlcnMiCiAgICB9CgogICAgIyBJbmNsdWRlIHRlYW0gbGV2ZWwgbW9kZWxzCiAgICBhZG1pbiA9IHBlcnNvbiAiT3JnYW5pemF0aW9uIEFkbWluIiAiQW4gYWRtaW5pc3RyYXRvciBvZiBhbiBvcmdhbml6YXRpb24iIHsKICAgICAgdGFncyAiQWRtaW4iCiAgICB9CiAgICBwcm92aWRlciA9IHBlcnNvbiAiTVNQIiAiQW5kIGVtcGxveWVlIG9mIGEgbWFuYWdlZCBzZXJ2aWNlIHByb3ZpZGVyIiB7CiAgICAgIHRhZ3MgIk1TUCIKICAgIH0KICAgIAogICAgIWVsZW1lbnQgc2VydmVyIHsKICAgICAgc2NpbSA9IGNvbnRhaW5lciAiU0NJTSIgewogICAgICAgIHRhZ3MgIlNDSU0iCiAgICAgIH0KICAgIH0KICAgIAogICAgZGlyZWN0b3J5X2Nvbm5lY3RvciAtPiBzZXJ2ZXIuYXBpICJTeW5jcyB1c2VycyBhbmQgZ3JvdXBzIHRvIEJpdHdhcmRlbiIKICAgICFlbGVtZW50IHNlcnZlciB7CiAgICAgIGlkZW50aXR5ID0gY29udGFpbmVyICJJZGVudGl0eSIgewogICAgICAgIHRhZ3MgIkF1dGgiCiAgICAgIH0KICAgICAgc3NvID0gY29udGFpbmVyICJTU08iIHsKICAgICAgICB0YWdzICJBdXRoIgogICAgICB9CiAgICB9CiAgICAjIEV4dGVybmFsIHZlbmRvcnMKICAgIGdyb3VwICJQYXltZW50IFN5c3RlbXMiIHsKICAgICAgc3RyaXBlID0gc29mdHdhcmVTeXN0ZW0gIlN0cmlwZSIgewogICAgICAgIHRhZ3MgIkV4dGVybmFsIgogICAgICAgIHRhZ3MgIkJpbGxpbmciCiAgICAgICAgZGVzY3JpcHRpb24gIkhhbmRsZXMgY3JlZGl0IGNhcmRzIGFuZCBzdWJzY3JpcHRpb25zLiIKICAgICAgfQogICAgICBicmFpbnRyZWUgPSBzb2Z0d2FyZVN5c3RlbSAiQnJhaW50cmVlIiB7CiAgICAgICAgdGFncyAiRXh0ZXJuYWwiCiAgICAgICAgdGFncyAiQmlsbGluZyIKICAgICAgICBkZXNjcmlwdGlvbiAiSGFuZGxlcyBQYXlQYWwgYW5kIGNyeXB0b2N1cnJlbmN5LiIKICAgICAgfQogICAgfQogICAgCiAgICAhZWxlbWVudCBzZXJ2ZXIgewogICAgICBpY29ucyA9IGNvbnRhaW5lciAiSWNvbnMiIHsKICAgICAgICBpY29uc19jb250cm9sbGVyID0gY29tcG9uZW50ICJJY29uc0NvbnRyb2xsZXIiIHsKICAgICAgICAgIGRlc2NyaXB0aW9uICJJY29uc0NvbnRyb2xsZXIiCiAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBBU1AuTkVUIENvcmUiCiAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgaW5mb19jb250cm9sbGVyID0gY29tcG9uZW50ICJJbmZvQ29udHJvbGxlciIgewogICAgICAgICAgZGVzY3JpcHRpb24gIlByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXBsb3llZCBpY29uIHNlcnZpY2UuIEFsbG93IGZvciBoZWFsdGggY2hlY2tzLiIKICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIEFTUC5ORVQgQ29yZSIKICAgICAgICAgIHRhZ3MgIkluZm8iICJIZWFsdGhDaGVjayIKICAgICAgICB9CiAgICAgICAgaWNvbl9yZXRyaWV2YWwgPSBjb21wb25lbnQgIkljb25EZXRlcm1pbmF0aW9uIiB7CiAgICAgICAgICBkZXNjcmlwdGlvbiAiUmVzb2x2ZXMgYSBzaW5nbGUgc291cmNlIGZvciBhIHdlYnNpdGUgaWNvbiBhbmQgZG93bmxvYWRzIGl0LiIKICAgICAgICAgIHBlcnNwZWN0aXZlcyB7CiAgICAgICAgICAgICJTZWN1cml0eSIgIkludGVybmFsIG5ldHdvcmsgZXhwb3N1cmUiIDUKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWNvbl9jYWNoZSA9IGNvbXBvbmVudCAiSWNvbkNhY2hlIiB7CiAgICAgICAgICBkZXNjcmlwdGlvbiAiQ2FjaGVzIGljb25zIGZvciBhIGdpdmVuIGRvbWFpbiIKICAgICAgICAgIHRhZ3MgIkNhY2hlIgogICAgICAgICAgdGVjaG5vbG9neSAiQyMgTWVtb3J5Q2FjaGUiCiAgICAgICAgfQogICAgCiAgICAgICAgY2xpZW50cyAtPiBpY29uc19jb250cm9sbGVyICJSZXF1ZXN0cyBpY29ucyBmb3IgY2xlYXJ0ZXh0IHVybHMgZnJvbSIKICAgICAgICBpY29uc19jb250cm9sbGVyIC0+IGljb25fcmV0cmlldmFsICJSZXF1ZXN0cyBpY29ucyBmcm9tIgogICAgICAgIGljb25zX2NvbnRyb2xsZXIgLT4gaWNvbl9jYWNoZSAiQ2FjaGVzIGljb25zIGluIgogICAgICB9CiAgICB9CiAgICAKICAgIGV4dGVybmFsX3dlYnNpdGVzID0gc29mdHdhcmVTeXN0ZW0gIkV4dGVybmFsIFdlYnNpdGVzIiB7CiAgICAgIHRhZ3MgIkV4dGVybmFsIgogICAgICB0YWdzICJJY29ucyIKICAgIH0KICAgIAogICAgc2VydmVyLmljb25zLmljb25fcmV0cmlldmFsIC0+IGV4dGVybmFsX3dlYnNpdGVzICJSZXRyaWV2ZXMgaWNvbnMgZnJvbSIKCiAgICAjIEluY2x1ZGUgc2hhcmVkIGxldmVsIHJlbGF0aW9uc2hpcHMKICAgICMgVXNlciBSZWxhdGlvbnNoaXBzCiAgICB1c2VyIC0+IGNsaWVudHMud2ViICJVc2VzIgogICAgdXNlciAtPiBjbGllbnRzLmlvcyAiVXNlcyIKICAgIHVzZXIgLT4gY2xpZW50cy5hbmRyb2lkICJVc2VzIgogICAgdXNlciAtPiBjbGllbnRzLmJyb3dzZXJfZXh0ZW5zaW9uICJVc2VzIgogICAgdXNlciAtPiBjbGllbnRzLmNsaSAiVXNlcyIKICAgIHVzZXIgLT4gY2xpZW50cy5kZXNrdG9wICJVc2VzIgogICAgYWRtaW4gLT4gY2xpZW50cy53ZWIgIkFkbWluaXN0ZXJzIE9yZ2FuaXphdGlvbnMiCiAgICBwcm92aWRlciAtPiBzZXJ2ZXIucG9ydGFsICJDb21wbGV0ZXMgUHJvdmlkZXIgcmVnaXN0cmF0aW9uIHdpdGgiCiAgICBwcm92aWRlciAtPiBjbGllbnRzLndlYiAiQWRtaW5pc3RlcnMgUHJvdmlkZXJzIGFuZCBPcmdhbml6YXRpb25zIgogICAgY3VzdG9tZXJfc3VjY2VzcyAtPiBzZXJ2ZXIucG9ydGFsICJJbnNwZWN0cyBhbmQgc3VwcG9ydHMiCiAgICBzeXN0ZW1fYWRtaW4gLT4gc2VydmVyLnBvcnRhbCAiQWRtaW5pc3RlcnMgU3lzdGVtIgogICAgCiAgICAjIEhpZ2gtbGV2ZWwgQ2xpZW50IFJlbGF0aW9uc2hpcHMKICAgIGNsaWVudHMud2ViIC0+IHNlcnZlci5hcGkgIk1ha2VzIHJlcXVlc3RzIHRvIgogICAgY2xpZW50cy5pb3MgLT4gc2VydmVyLmFwaSAiTWFrZXMgcmVxdWVzdHMgdG8iCiAgICBjbGllbnRzLmFuZHJvaWQgLT4gc2VydmVyLmFwaSAiTWFrZXMgcmVxdWVzdHMgdG8iCiAgICBjbGllbnRzLmJyb3dzZXJfZXh0ZW5zaW9uIC0+IHNlcnZlci5hcGkgIk1ha2VzIHJlcXVlc3RzIHRvIgogICAgY2xpZW50cy5jbGkgLT4gc2VydmVyLmFwaSAiTWFrZXMgcmVxdWVzdHMgdG8iCiAgICBjbGllbnRzLmRlc2t0b3AgLT4gc2VydmVyLmFwaSAiTWFrZXMgcmVxdWVzdHMgdG8iCiAgICBjbGllbnRzLndlYiAtPiBzZXJ2ZXIuaWRlbnRpdHkgIkF1dGhlbnRpY2F0ZXMgd2l0aCIKICAgIGNsaWVudHMuaW9zIC0+IHNlcnZlci5pZGVudGl0eSAiQXV0aGVudGljYXRlcyBXaXRoIgogICAgY2xpZW50cy5hbmRyb2lkIC0+IHNlcnZlci5pZGVudGl0eSAiQXV0aGVudGljYXRlcyBXaXRoIgogICAgY2xpZW50cy5icm93c2VyX2V4dGVuc2lvbiAtPiBzZXJ2ZXIuaWRlbnRpdHkgIkF1dGhlbnRpY2F0ZXMgV2l0aCIKICAgIGNsaWVudHMuY2xpIC0+IHNlcnZlci5pZGVudGl0eSAiQXV0aGVudGljYXRlcyBXaXRoIgogICAgY2xpZW50cy5kZXNrdG9wIC0+IHNlcnZlci5pZGVudGl0eSAiQXV0aGVudGljYXRlcyBXaXRoIgogICAgc2VydmVyLmFwaSAtPiBzZXJ2ZXIuaWRlbnRpdHkgIlZhbGlkYXRlcyBKV1RzIHdpdGgiIHsKICAgICAgdXJsICJodHRwczovL2JpdHdhcmRlbi5jb20iCiAgICB9CiAgICBjbGllbnRzIC0+IHNlcnZlci5ldmVudHMgIlBvc3RzIGxvY2FsIHVzYWdlIGV2ZW50cyB0byIKICAgIAogICAgIyBEYXRhYmFzZSBSZWxhdGlvbnNoaXBzCiAgICAKICAgIHNlcnZlci5hcGkgLT4gc2VydmVyLmRhdGFiYXNlICJRdWVyaWVzIgogICAgc2VydmVyLnBvcnRhbCAtPiBzZXJ2ZXIuZGF0YWJhc2UgIlF1ZXJpZXMiCiAgICAKICAgICMgcXVldWUgUmVsYXRpb25zaGlwcwogICAgc2VydmVyLmFwaSAtPiBzZXJ2ZXIuZXZlbnRzX3F1ZXVlICJTZW5kcyBldmVudHMgdG8iCiAgICBzZXJ2ZXIuZXZlbnRzIC0+IHNlcnZlci5ldmVudHNfcXVldWUgIlNlbmRzIGV2ZW50cyB0byIKICAgIHNlcnZlci5hcGkgLT4gc2VydmVyLm1haWxfcXVldWUgIlNlbmRzIGVtYWlscyB0byIKICAgIHNlcnZlci5hcGkgLT4gc2VydmVyLm5vdGlmaWNhdGlvbnNfcXVldWUgIlNlbmRzIG5vdGlmaWNhdGlvbnMgdG8iCiAgICBzZXJ2ZXIubm90aWZpY2F0aW9ucyAtPiBzZXJ2ZXIubm90aWZpY2F0aW9uc19xdWV1ZSAiU2VuZHMgbm90aWZpY2F0aW9ucyB0byIKICAgIHNlcnZlci5ldmVudHNfcXVldWUgLT4gc2VydmVyLmV2ZW50c19wcm9jZXNzb3IgIlByb2Nlc3NlcyBldmVudHMgZnJvbSIKICAgIHNlcnZlci5tYWlsX3F1ZXVlIC0+IHNlcnZlci5wb3J0YWwgIlByb2Nlc3NlcyBlbWFpbHMgZnJvbSIKICAgIAogICAgIyBzZWxmIGhvc3QgcGhvbmUgaG9tZQogICAgc2VsZl9ob3N0ZWRfaW5zdGFuY2VzIC0+IHNlcnZlci5ub3RpZmljYXRpb25zICJTZW5kcyBwdXNoIG5vdGlmaWNhdGlvbiBwcm94eSByZXF1ZXN0cyB0byIKCgogICAgc2VydmVyLnNjaW0gLT4gc2VydmVyLmRhdGFiYXNlICJRdWVyaWVzIgogICAgc2VydmVyLmlkZW50aXR5IC0+IHNlcnZlci5kYXRhYmFzZSAiUXVlcmllcyIKICAgIHNlcnZlci5zc28gLT4gc2VydmVyLmRhdGFiYXNlICJRdWVyaWVzIgogICAgIyBIaWdoLWxldmVsIHByb3ZpZGVyIHJlbGF0aW9uc2hpcHMKICAgIHNlcnZlci5hcGkuYmlsbGluZyAtPiBzdHJpcGUgIlJlcXVlc3RzIHBheW1lbnRzIGZvciBjdXN0b21lcnMiCiAgICBzZXJ2ZXIuYXBpLmJpbGxpbmcgLT4gYnJhaW50cmVlICJSZXF1ZXN0cyBwYXltZW50cyBmb3IgY3VzdG9tZXJzIgogICAgc3RyaXBlIC0+IHNlcnZlci5hcGkuYmlsbGluZyAiU2VuZHMgc3Vic2NyaXB0aW9uIGV2ZW50cyB0byIKICAgIGtleV9jb25uZWN0b3IgLT4gc2VydmVyLmlkZW50aXR5ICJWYWxpZGF0ZXMgSldUcyB3aXRoIgogIH0KCiAgdmlld3MgewogICAgc3R5bGVzIHsKICAgICAgZWxlbWVudCAiUGVyc29uIiB7CiAgICAgICAgYmFja2dyb3VuZCAjMzEwN2QzCiAgICAgICAgc2hhcGUgcGVyc29uCiAgICAgIH0KICAgICAgZWxlbWVudCAiTVNQIiB7CiAgICAgICAgYmFja2dyb3VuZCAjMzEwN2QzCiAgICAgICAgc2hhcGUgcGVyc29uCiAgICAgIH0KICAgIH0KICAgIGNvbXBvbmVudCBzZXJ2ZXIuaWNvbnMgImljb25zX3NlcnZpY2UiIHsKICAgICAgaW5jbHVkZSAqCiAgICAgIGF1dG9sYXlvdXQgdGIKICAgIH0KCiAgICBzeXN0ZW1MYW5kc2NhcGUgIkJpdHdhcmRlbiIgewogICAgICBpbmNsdWRlICoKICAgIH0KCiAgICBjb250YWluZXIgc2VydmVyICJCaXR3YXJkZW5fU2VydmVyIiB7CiAgICAgIGluY2x1ZGUgKgogICAgfQoKICAgIC8vIFRoaXMgaXMgbGFzdCB0byBvdmVycmlkZSB0ZWFtIHN0eWxlcyB3aXRoIGNvbW1vbiBzdHlsZXMKICAgIHN0eWxlcyB7CiAgICAgIHRoZW1lIGRlZmF1bHQKICAgICAgZWxlbWVudCAiRWxlbWVudCIgewogICAgICAgIGNvbG9yICMzYzNiM2IKICAgICAgfQogICAgICBlbGVtZW50ICJQZXJzb24iIHsKICAgICAgICBiYWNrZ3JvdW5kICNkMzQ0MDcKICAgICAgICBzaGFwZSBwZXJzb24KICAgICAgfQogICAgICBlbGVtZW50ICJDb250YWluZXIiIHsKICAgICAgICBiYWNrZ3JvdW5kICNmODg3MjgKICAgICAgfQogICAgICBlbGVtZW50ICJNU1AiIHsKICAgICAgICBiYWNrZ3JvdW5kICMzMTA3ZDMKICAgICAgfQogICAgICBlbGVtZW50ICJRdWV1ZSIgewogICAgICAgIHNoYXBlIHBpcGUKICAgICAgfQogICAgICBlbGVtZW50ICJNb2JpbGUiIHsKICAgICAgICBzaGFwZSBtb2JpbGVEZXZpY2VQb3J0cmFpdAogICAgICB9CiAgICAgIGVsZW1lbnQgIldlYiIgewogICAgICAgIHNoYXBlIHdlYkJyb3dzZXIKICAgICAgfQogICAgICBlbGVtZW50ICJEYXRhYmFzZSIgewogICAgICAgIHNoYXBlIGN5bGluZGVyCiAgICAgIH0KICAgICAgZWxlbWVudCAiRXh0ZXJuYWwiIHsKICAgICAgICBjb2xvciAjMDAwMDAwCiAgICAgICAgYmFja2dyb3VuZCAjYjViNWI1CiAgICAgIH0KICAgIH0KICB9Cn0="
},
"views" : {
"componentViews" : [ {
"automaticLayout" : {
"applied" : false,
"edgeSeparation" : 0,
"implementation" : "Graphviz",
"nodeSeparation" : 300,
"rankDirection" : "TopBottom",
"rankSeparation" : 300,
"vertices" : false
},
"containerId" : "34",
"elements" : [ {
"id" : "15",
"x" : 0,
"y" : 0
}, {
"id" : "35",
"x" : 0,
"y" : 0
}, {
"id" : "36",
"x" : 0,
"y" : 0
}, {
"id" : "37",
"x" : 0,
"y" : 0
}, {
"id" : "38",
"x" : 0,
"y" : 0
}, {
"id" : "44",
"x" : 0,
"y" : 0
} ],
"externalContainerBoundariesVisible" : false,
"key" : "icons_service",
"order" : 1,
"relationships" : [ {
"id" : "39"
}, {
"id" : "42"
}, {
"id" : "43"
}, {
"id" : "45"
} ]
} ],
"configuration" : {
"branding" : { },
"lastSavedView" : "Bitwarden_Server",
"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" : 4020,
"width" : 7258
},
"elements" : [ {
"id" : "2",
"x" : 317,
"y" : 2108
}, {
"id" : "3",
"x" : 6650,
"y" : 2108
}, {
"id" : "5",
"x" : 2383,
"y" : 1508
}, {
"id" : "7",
"x" : 1633,
"y" : 1508
}, {
"id" : "8",
"x" : 3883,
"y" : 1508
}, {
"id" : "9",
"x" : 3883,
"y" : 2808
}, {
"id" : "10",
"x" : 1325,
"y" : 2808
}, {
"id" : "11",
"x" : 2825,
"y" : 3408
}, {
"id" : "12",
"x" : 1767,
"y" : 2158
}, {
"id" : "13",
"x" : 3042,
"y" : 2158
}, {
"id" : "14",
"x" : 3792,
"y" : 2158
}, {
"id" : "15",
"x" : 1633,
"y" : 908
}, {
"id" : "22",
"x" : 2383,
"y" : 908
}, {
"id" : "23",
"x" : 358,
"y" : 1508
}, {
"id" : "24",
"x" : 3883,
"y" : 908
}, {
"id" : "26",
"x" : 3825,
"y" : 208
}, {
"id" : "27",
"x" : 2825,
"y" : 2808
}, {
"id" : "30",
"x" : 1017,
"y" : 2158
}, {
"id" : "31",
"x" : 2075,
"y" : 2808
}, {
"id" : "32",
"x" : 3133,
"y" : 908
}, {
"id" : "33",
"x" : 4542,
"y" : 2158
}, {
"id" : "34",
"x" : 3133,
"y" : 1508
}, {
"id" : "44",
"x" : 5292,
"y" : 2158
} ],
"externalSoftwareSystemBoundariesVisible" : false,
"key" : "Bitwarden_Server",
"order" : 3,
"paperSize" : "A1_Landscape",
"relationships" : [ {
"id" : "100"
}, {
"id" : "102",
"vertices" : [ {
"x" : 3076,
"y" : 1475
} ]
}, {
"id" : "105",
"vertices" : [ {
"x" : 2983,
"y" : 1808
}, {
"x" : 4512,
"y" : 2108
} ]
}, {
"id" : "108",
"vertices" : [ {
"x" : 2889,
"y" : 1240
} ]
}, {
"id" : "110"
}, {
"id" : "28"
}, {
"id" : "40",
"vertices" : [ {
"x" : 2233,
"y" : 1208
}, {
"x" : 2983,
"y" : 1404
} ]
}, {
"id" : "46",
"vertices" : [ {
"x" : 3733,
"y" : 1808
}, {
"x" : 5142,
"y" : 2108
} ]
}, {
"id" : "57",
"vertices" : [ {
"x" : 5892,
"y" : 2108
}, {
"x" : 5892,
"y" : 2508
} ]
}, {
"id" : "60",
"vertices" : [ {
"x" : 2233,
"y" : 908
} ]
}, {
"id" : "61",
"vertices" : [ {
"x" : 6425,
"y" : 2508
} ]
}, {
"id" : "63",
"vertices" : [ {
"x" : 837,
"y" : 2508
}, {
"x" : 3425,
"y" : 2808
} ]
}, {
"id" : "67"
}, {
"id" : "79",
"vertices" : [ {
"x" : 208,
"y" : 1404
}, {
"x" : 208,
"y" : 1808
}, {
"x" : 867,
"y" : 2108
} ]
}, {
"id" : "85",
"vertices" : [ {
"x" : 1617,
"y" : 2108
} ]
}, {
"id" : "86"
}, {
"id" : "87",
"vertices" : [ {
"x" : 2892,
"y" : 2508
}, {
"x" : 3425,
"y" : 2808
}, {
"x" : 3425,
"y" : 3108
} ]
}, {
"id" : "88"
}, {
"id" : "89"
}, {
"id" : "90"
}, {
"id" : "91"
}, {
"id" : "92",
"vertices" : [ {
"x" : 3642,
"y" : 2108
} ]
}, {
"id" : "93"
}, {
"id" : "94"
}, {
"id" : "95"
}, {
"id" : "96"
}, {
"id" : "98"
}, {
"id" : "99",
"vertices" : [ {
"x" : 1175,
"y" : 2808
}, {
"x" : 1175,
"y" : 3108
} ]
} ],
"softwareSystemId" : "4"
} ],
"systemLandscapeViews" : [ {
"dimensions" : {
"height" : 2820,
"width" : 4433
},
"elements" : [ {
"id" : "1",
"x" : 2425,
"y" : 208
}, {
"id" : "2",
"x" : 208,
"y" : 908
}, {
"id" : "3",
"x" : 908,
"y" : 908
}, {
"id" : "4",
"x" : 1633,
"y" : 1608
}, {
"id" : "15",
"x" : 3108,
"y" : 958
}, {
"id" : "22",
"x" : 2358,
"y" : 958
}, {
"id" : "23",
"x" : 1608,
"y" : 958
}, {
"id" : "24",
"x" : 0,
"y" : 0
}, {
"id" : "25",
"x" : 3125,
"y" : 208
}, {
"id" : "26",
"x" : 3825,
"y" : 208
}, {
"id" : "32",
"x" : 1633,
"y" : 2208
}, {
"id" : "33",
"x" : 883,
"y" : 2208
}, {
"id" : "44",
"x" : 2383,
"y" : 2208
} ],
"enterpriseBoundaryVisible" : true,
"key" : "Bitwarden",
"order" : 2,
"paperSize" : "A3_Landscape",
"relationships" : [ {
"id" : "103",
"vertices" : [ {
"x" : 1708,
"y" : 2058
} ]
}, {
"id" : "106"
}, {
"id" : "109",
"vertices" : [ {
"x" : 2008,
"y" : 2058
} ]
}, {
"id" : "111"
}, {
"id" : "29"
}, {
"id" : "41",
"vertices" : [ {
"x" : 2958,
"y" : 1308
} ]
}, {
"id" : "47"
}, {
"id" : "49"
}, {
"id" : "56"
}, {
"id" : "58",
"vertices" : [ {
"x" : 3708,
"y" : 1308
} ]
}, {
"id" : "60"
}, {
"id" : "62"
}, {
"id" : "64",
"vertices" : [ {
"x" : 729,
"y" : 1308
} ]
}, {
"id" : "97"
} ]
} ]
}
}