diff --git a/docs/diagrams/libraries.dsl b/docs/diagrams/libraries.dsl
new file mode 100644
index 000000000..270246ff3
--- /dev/null
+++ b/docs/diagrams/libraries.dsl
@@ -0,0 +1,30 @@
+tenantClient = component "Tenant Client" {
+ technology "C# project"
+ description "Makes API calls to the Tenant API"
+ tags "Shared Component"
+}
+personClient = component "Person Client" {
+ technology "C# project"
+ description "Makes API calls to the Person API"
+ tags "Shared Component"
+}
+organisationClient = component "Organisation Client" {
+ technology "C# project"
+ description "Makes API calls to the Organisation API"
+ tags "Shared Component"
+}
+formsClient = component "Forms Client" {
+ technology "C# project"
+ description "Makes API calls to the Forms API"
+ tags "Shared Component"
+}
+dataSharingClient = component "Data Sharing Client" {
+ technology "C# project"
+ description "Makes API calls to the Data Sharing API"
+ tags "Shared Component"
+}
+entityVerificationClient = component "Entity Verification Client" {
+ technology "C# project"
+ description "Makes API calls to the Entity Verification API"
+ tags "Shared Component"
+}
diff --git a/docs/diagrams/workspace.dsl b/docs/diagrams/workspace.dsl
index 716c9dc1d..4e1877280 100644
--- a/docs/diagrams/workspace.dsl
+++ b/docs/diagrams/workspace.dsl
@@ -1,87 +1,124 @@
workspace "Central Digital Platform" {
+ !identifiers hierarchical
+
model {
supplier = person "Supplier"
buyer = person "Buyer"
eSender = softwareSystem "eSender" "Commercial Software that Buyers use to manage tender processes"
oneLogin = softwareSystem "Gov.uk One Login" "Let users sign in and prove their identities to use your service"
+ govNotify = softwareSystem "Gov.uk Notify" "Sends emails, text messages and letters"
+ companiesHouse = softwareSystem "Companies House" "Provides registered company details"
fts = softwareSystem "Find a Tender"
cfs = softwareSystem "Supplier Information and Contracts Finder"
ppg = softwareSystem "Public Procurement Gateway"
cdp = softwareSystem "Central Digital Platform" "Supports procurement" {
- authority = container "Authority" "" "Asp.Net Core" WebApi {
- openIdConfigurationEndpoint = component "OpenID Well-Known Configuration Endpoint" "Exposes OpenID configuration" "Asp.Net Core Web API"
- openIdJwksConfigurationEndpoint = component "OpenID Well-Known JWKS Configuration Endpoint" "Exposes Json Web Key Set" "Asp.Net Core Web API"
- tokenEndpoint = component "Token endpoint" "Exchanges a valid One Login token to a longer-lived token with additional claims." "Asp.Net Core Web API"
- }
- tenantApi = container "Tenant API" "" "Asp.Net Core" WebApi {
- tenantEndpoint = component "Tenant Endpoint" "" "Asp.Net Core Web API"
- registerTenantUseCase = component "Register Tenant Use Case"
- getTenantUseCase = component "Get Tenant Use Case"
- tenantPersistence = component "Persistence" "" "Project"
- tenantEndpoint -> registerTenantUseCase "Executes"
- tenantEndpoint -> getTenantUseCase "Executes"
- registerTenantUseCase -> tenantPersistence "Calls"
- getTenantUseCase -> tenantPersistence "Calls"
- }
- personApi = container "Person API" "" "Asp.Net Core" WebApi {
- personEndpoint = component "Person Endpoint" "" "Asp.Net Core Web API"
- }
- organisationApi = container "Organisation API" "" "Asp.Net Core" WebApi {
- organisationEndpoint = component "Organisation Endpoint" "" "Asp.Net Core Web API"
- }
- formsApi = container "Forms API" "" "Asp.Net Core" WebApi {
- formsEndpoint = component "Forms Endpoint" "" "Asp.Net Core Web API"
- }
- dataSharingApi = container "Data Sharing API" "" "Asp.Net Core" WebApi {
- dataSharingEndpoint = component "Data Sharing Endpoint" "" "Asp.Net Core Web API"
+
+ messageQueue = container "Message Queue" "" SQS "Message Queue" {
}
- database = container "Organisation Information Database" "" PostgreSQL Database {
- tenantPersistence -> database "reads/writes" "SQL"
+
+ group "Entity Verification" {
+ entityVerificationDatabase = container "Entity Verification Database" "" PostgreSQL Database {
+ }
+ entityVerification = container "Entity Verification" "" "Asp.Net Core" WebApi {
+ entityVerificationEndpoint = component "Entity Verification Endpoint" "Queries known identifers." "Asp.Net Core Web API"
+ entityVerificationUseCase = component "Use Case"
+ entityVerificationUseCase -> messageQueue "publishes to / listens to" "HTTPS"
+ -> entityVerificationDatabase "reads/writes" "SQL"
+ }
}
- webApp = container "Web Application" "Account & data capture frontend" "Asp.Net Core MVC" WebApp {
- mvcController = component "MVC Controller" "Enables web users to perform tasks." "Asp.Net Core MVC Controller"
-
- tenantClient = component "Tenant Client" "Makes API calls to the Tenant API" "library"
- personClient = component "Person Client" "Makes API calls to the Person API" "library"
- organisationClient = component "Organisation Client" "Makes API calls to the Organisation API" "library"
- formsClient = component "Forms Client" "Makes API calls to the Forms API" "library"
- dataSharingClient = component "Data Sharing Client" "Makes API calls to the Data Sharing API" "library"
-
- supplier -> mvcController "Uses" "HTTPS"
-
- mvcController -> oneLogin "Authenticates with" "HTTPS"
- mvcController -> tokenEndpoint "Authenticates and authorises with" "HTTPS"
- mvcController -> tenantClient "Uses"
- mvcController -> personClient "Uses"
- mvcController -> organisationClient "Uses"
- mvcController -> formsClient "Uses"
- mvcController -> dataSharingClient "Uses"
+
+ group "Organisation Information" {
+ organisationInformationDatabase = container "Organisation Information Database" "" PostgreSQL Database {
+ }
+ fileStorage = container "File Storage" "" S3 "File Storage" {
+ }
+
+ authority = container "Authority" "" "Asp.Net Core" WebApi {
+ openIdConfigurationEndpoint = component "OpenID Well-Known Configuration Endpoint" "Exposes OpenID configuration" "Asp.Net Core Web API"
+ openIdJwksConfigurationEndpoint = component "OpenID Well-Known JWKS Configuration Endpoint" "Exposes Json Web Key Set" "Asp.Net Core Web API"
+ tokenEndpoint = component "Token endpoint" "Exchanges a valid One Login token to a longer-lived token with additional claims." "Asp.Net Core Web API"
+ -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ tenantApi = container "Tenant API" "" "Asp.Net Core" WebApi {
+ tenantEndpoint = component "Tenant Endpoint" "" "Asp.Net Core Web API"
+ registerTenantUseCase = component "Register Tenant Use Case"
+ getTenantUseCase = component "Get Tenant Use Case"
+ tenantPersistence = component "Persistence" "" "Project"
+ tenantEndpoint -> registerTenantUseCase "Executes"
+ tenantEndpoint -> getTenantUseCase "Executes"
+ registerTenantUseCase -> tenantPersistence "Calls"
+ getTenantUseCase -> tenantPersistence "Calls"
+ tenantPersistence -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ personApi = container "Person API" "" "Asp.Net Core" WebApi {
+ personEndpoint = component "Person Endpoint" "" "Asp.Net Core Web API"
+ -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ organisationApi = container "Organisation API" "" "Asp.Net Core" WebApi {
+ organisationEndpoint = component "Organisation Endpoint" "" "Asp.Net Core Web API"
+ useCase = component "Use Case"
+ useCase -> messageQueue "publishes to / listens to" "HTTPS"
+ useCase -> govNotify "sends notifications with" "HTTPS"
+ -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ formsApi = container "Forms API" "" "Asp.Net Core" WebApi {
+ formsEndpoint = component "Forms Endpoint" "" "Asp.Net Core Web API"
+ useCase = component "Use Case"
+ useCase -> fileStorage "writes to" "HTTPS"
+ -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ dataSharingApi = container "Data Sharing API" "" "Asp.Net Core" WebApi {
+ dataSharingEndpoint = component "Data Sharing Endpoint" "" "Asp.Net Core Web API"
+ useCase = component "Use Case"
+ useCase -> fileStorage "writes to / reads from" "HTTPS"
+ -> organisationInformationDatabase "reads/writes" "SQL"
+ }
+ webApp = container "Web Application" "Account & data capture frontend" "Asp.Net Core MVC" WebApp {
+ group "Libraries" {
+ !include "libraries.dsl"
+ }
+
+ mvcController = component "MVC Controller" "Enables web users to perform tasks." "Asp.Net Core MVC Controller"
+
+ supplier -> mvcController "Uses" "HTTPS"
+ buyer -> mvcController "Uses" "HTTPS"
+
+ mvcController -> oneLogin "Authenticates with" "HTTPS"
+ mvcController -> companiesHouse "Pulls company details from" "HTTPS"
+ mvcController -> authority.tokenEndpoint "Authenticates and authorises with" "HTTPS"
+ mvcController -> tenantClient "Uses"
+ mvcController -> personClient "Uses"
+ mvcController -> organisationClient "Uses"
+ mvcController -> formsClient "Uses"
+ mvcController -> dataSharingClient "Uses"
+ mvcController -> entityVerificationClient "Uses"
+ mvcController -> fileStorage "writes to" "HTTPS"
+
+ tenantClient -> tenantApi.tenantEndpoint "Calls" "HTTPS/json"
+ personClient -> personApi.personEndpoint "Calls" "HTTPS/json"
+ organisationClient -> organisationApi.organisationEndpoint "Calls" "HTTPS/json"
+ formsClient -> formsApi.formsEndpoint "Calls" "HTTPS/json"
+ dataSharingClient -> dataSharingApi.dataSharingEndpoint "Calls" "HTTPS/json"
+ entityVerificationClient -> entityVerification.entityVerificationEndpoint "Calls" "HTTPS/json"
+
+ -> cdp.authority.openIdConfigurationEndpoint "Retrieves OpenID configuration from"
+ -> cdp.authority.openIdJwksConfigurationEndpoint "Retrieves Json Web Key Set from"
+ }
}
- personApi -> database "reads/writes" "SQL"
- organisationApi -> database "reads/writes" "SQL"
- formsApi -> database "reads/writes" "SQL"
- dataSharingApi -> database "reads/writes" "SQL"
-
- tenantClient -> tenantEndpoint "Calls" "HTTPS/json"
- personClient -> personEndpoint "Calls" "HTTPS/json"
- organisationClient -> organisationEndpoint "Calls" "HTTPS/json"
- formsClient -> formsEndpoint "Calls" "HTTPS/json"
- dataSharingClient -> dataSharingEndpoint "Calls" "HTTPS/json"
- eSender -> dataSharingEndpoint "Looks up supplier information" "HTTPS/json"
+ eSender -> dataSharingApi.dataSharingEndpoint "Looks up supplier information" "HTTPS/json"
}
buyer -> eSender "Uses"
fts -> oneLogin "Authenticates with"
- fts -> tokenEndpoint "Authorizes with"
- fts -> openIdConfigurationEndpoint "Retrieves OpenID configuration from"
- fts -> openIdJwksConfigurationEndpoint "Retrieves Json Web Key Set from"
- webApp -> openIdConfigurationEndpoint "Retrieves OpenID configuration from"
- webApp -> openIdJwksConfigurationEndpoint "Retrieves Json Web Key Set from"
- cfs -> authority "Authorizes with"
- ppg -> authority "Authorizes with"
+ fts -> cdp.authority.tokenEndpoint "Authenticates with"
+ fts -> cdp.authority.openIdConfigurationEndpoint "Retrieves OpenID configuration from"
+ fts -> cdp.authority.openIdJwksConfigurationEndpoint "Retrieves Json Web Key Set from"
+ fts -> cdp.organisationApi.organisationEndpoint "Calls" "HTTPS/json"
+ cfs -> cdp.authority "Authenticates with"
+ ppg -> cdp.authority "Authenticates with"
}
views {
@@ -93,39 +130,49 @@ workspace "Central Digital Platform" {
include *
description "The container diagram for the Central Digital Platform."
}
- component authority "CDP-3-Authority-Components" {
+ component cdp.authority "CDP-3-Authority-Components" {
include *
description "The component diagram for the Authority service."
}
- component webApp "CDP-3-WebApp-Components" {
+ component cdp.webApp "CDP-3-WebApp-Components" {
include *
description "The component diagram for the Web Application."
}
- component tenantApi "CDP-4-TenantApi-Components" {
+ component cdp.tenantApi "CDP-4-TenantApi-Components" {
include *
description "The component diagram for the Tenant API."
}
- component personApi "CDP-5-PersonApi-Components" {
+ component cdp.personApi "CDP-5-PersonApi-Components" {
include *
description "The component diagram for the Person API."
}
- component organisationApi "CDP-6-OrganisationApi-Components" {
+ component cdp.organisationApi "CDP-6-OrganisationApi-Components" {
include *
description "The component diagram for the Organisation API."
}
- component formsApi "CDP-7-FormsApi-Components" {
+ component cdp.formsApi "CDP-7-FormsApi-Components" {
include *
description "The component diagram for the Forms API."
}
- component dataSharingApi "CDP-8-DataSharingApi-Components" {
+ component cdp.dataSharingApi "CDP-8-DataSharingApi-Components" {
include *
description "The component diagram for the Data Sharing API."
}
+ component cdp.entityVerification "CDP-9-EntityVerification-Components" {
+ include *
+ description "The component diagram for the Entity Verification."
+ }
theme default
styles {
element Database {
shape Cylinder
}
+ element "Message Queue" {
+ shape Pipe
+ }
+ element "File Storage" {
+ shape Folder
+ }
element WebApp {
shape WebBrowser
}
diff --git a/docs/diagrams/workspace.json b/docs/diagrams/workspace.json
index 53a2d1f42..d3df767ab 100644
--- a/docs/diagrams/workspace.json
+++ b/docs/diagrams/workspace.json
@@ -5,7 +5,8 @@
"description" : "Description",
"documentation" : { },
"id" : 1,
- "lastModifiedDate" : "2024-06-06T11:24:12Z",
+ "lastModifiedAgent" : "structurizr-ui",
+ "lastModifiedDate" : "2024-10-02T13:32:10Z",
"model" : {
"people" : [ {
"id" : "1",
@@ -16,26 +17,26 @@
},
"relationships" : [ {
"description" : "Uses",
- "destinationId" : "34",
- "id" : "40",
+ "destinationId" : "68",
+ "id" : "69",
"properties" : {
- "structurizr.dsl.identifier" : "aed0e8ba-d218-4d90-ad84-4f46eaf56f81"
+ "structurizr.dsl.identifier" : "e1cc0832-353f-477f-874d-b7723864b7e9"
},
"sourceId" : "1",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Uses",
- "destinationId" : "33",
- "id" : "41",
- "linkedRelationshipId" : "40",
+ "destinationId" : "61",
+ "id" : "70",
+ "linkedRelationshipId" : "69",
"sourceId" : "1",
"technology" : "HTTPS"
}, {
"description" : "Uses",
- "destinationId" : "8",
- "id" : "42",
- "linkedRelationshipId" : "40",
+ "destinationId" : "10",
+ "id" : "71",
+ "linkedRelationshipId" : "69",
"sourceId" : "1",
"technology" : "HTTPS"
} ],
@@ -48,11 +49,35 @@
"structurizr.dsl.identifier" : "buyer"
},
"relationships" : [ {
+ "description" : "Uses",
+ "destinationId" : "68",
+ "id" : "72",
+ "properties" : {
+ "structurizr.dsl.identifier" : "a8598355-a413-4858-a06d-c3ca23ff00d9"
+ },
+ "sourceId" : "2",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "61",
+ "id" : "73",
+ "linkedRelationshipId" : "72",
+ "sourceId" : "2",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "10",
+ "id" : "74",
+ "linkedRelationshipId" : "72",
+ "sourceId" : "2",
+ "technology" : "HTTPS"
+ }, {
"description" : "Uses",
"destinationId" : "3",
- "id" : "82",
+ "id" : "122",
"properties" : {
- "structurizr.dsl.identifier" : "540baa87-83cc-4826-b7eb-9d01f6dc299e"
+ "structurizr.dsl.identifier" : "7d21cd2d-1658-440c-bde3-a9312ec208a0"
},
"sourceId" : "2",
"tags" : "Relationship"
@@ -70,26 +95,26 @@
},
"relationships" : [ {
"description" : "Looks up supplier information",
- "destinationId" : "29",
- "id" : "79",
+ "destinationId" : "56",
+ "id" : "119",
"properties" : {
- "structurizr.dsl.identifier" : "556890f1-aa5e-4ea4-b662-efd311d94bec"
+ "structurizr.dsl.identifier" : "0dc12910-d79d-4fc2-be23-0289f884be35"
},
"sourceId" : "3",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Looks up supplier information",
- "destinationId" : "28",
- "id" : "80",
- "linkedRelationshipId" : "79",
+ "destinationId" : "55",
+ "id" : "120",
+ "linkedRelationshipId" : "119",
"sourceId" : "3",
"technology" : "HTTPS/json"
}, {
"description" : "Looks up supplier information",
- "destinationId" : "8",
- "id" : "81",
- "linkedRelationshipId" : "79",
+ "destinationId" : "10",
+ "id" : "121",
+ "linkedRelationshipId" : "119",
"sourceId" : "3",
"technology" : "HTTPS/json"
} ],
@@ -105,9 +130,29 @@
},
"tags" : "Element,Software System"
}, {
+ "description" : "Sends emails, text messages and letters",
"documentation" : { },
"id" : "5",
"location" : "Unspecified",
+ "name" : "Gov.uk Notify",
+ "properties" : {
+ "structurizr.dsl.identifier" : "govnotify"
+ },
+ "tags" : "Element,Software System"
+ }, {
+ "description" : "Provides registered company details",
+ "documentation" : { },
+ "id" : "6",
+ "location" : "Unspecified",
+ "name" : "Companies House",
+ "properties" : {
+ "structurizr.dsl.identifier" : "companieshouse"
+ },
+ "tags" : "Element,Software System"
+ }, {
+ "documentation" : { },
+ "id" : "7",
+ "location" : "Unspecified",
"name" : "Find a Tender",
"properties" : {
"structurizr.dsl.identifier" : "fts"
@@ -115,224 +160,350 @@
"relationships" : [ {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "83",
+ "id" : "123",
"properties" : {
- "structurizr.dsl.identifier" : "7d0b5c90-f7c7-4270-81ea-8d9ada9abb59"
+ "structurizr.dsl.identifier" : "ac5244f3-5a21-4222-8763-c4d1056dad4e"
},
- "sourceId" : "5",
+ "sourceId" : "7",
"tags" : "Relationship"
}, {
- "description" : "Authorizes with",
- "destinationId" : "12",
- "id" : "84",
+ "description" : "Authenticates with",
+ "destinationId" : "24",
+ "id" : "124",
"properties" : {
- "structurizr.dsl.identifier" : "6e245d2f-b5ba-4c95-95cc-6969fce06c76"
+ "structurizr.dsl.identifier" : "e99b18c6-8ad5-4bfc-9db3-d1cd8088188e"
},
- "sourceId" : "5",
+ "sourceId" : "7",
"tags" : "Relationship"
}, {
- "description" : "Authorizes with",
- "destinationId" : "9",
- "id" : "85",
- "linkedRelationshipId" : "84",
- "sourceId" : "5"
+ "description" : "Authenticates with",
+ "destinationId" : "21",
+ "id" : "125",
+ "linkedRelationshipId" : "124",
+ "sourceId" : "7"
}, {
- "description" : "Authorizes with",
- "destinationId" : "8",
- "id" : "86",
- "linkedRelationshipId" : "84",
- "sourceId" : "5"
+ "description" : "Authenticates with",
+ "destinationId" : "10",
+ "id" : "126",
+ "linkedRelationshipId" : "124",
+ "sourceId" : "7"
}, {
"description" : "Retrieves OpenID configuration from",
- "destinationId" : "10",
- "id" : "87",
+ "destinationId" : "22",
+ "id" : "127",
"properties" : {
- "structurizr.dsl.identifier" : "46257dda-51e3-4377-9dd1-aeb36772b733"
+ "structurizr.dsl.identifier" : "f4f4762a-d6a3-497e-9139-cc69f78bb47d"
},
- "sourceId" : "5",
+ "sourceId" : "7",
"tags" : "Relationship"
}, {
"description" : "Retrieves Json Web Key Set from",
- "destinationId" : "11",
- "id" : "88",
+ "destinationId" : "23",
+ "id" : "128",
"properties" : {
- "structurizr.dsl.identifier" : "dbaec6f8-50ce-4c22-a44a-fd8a6d39b6c1"
+ "structurizr.dsl.identifier" : "ced07fbc-aa0c-4d7d-bd2c-88a206c201b0"
},
- "sourceId" : "5",
+ "sourceId" : "7",
"tags" : "Relationship"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "41",
+ "id" : "129",
+ "properties" : {
+ "structurizr.dsl.identifier" : "59b397e3-c85c-4a6f-bd99-d8a9248be30e"
+ },
+ "sourceId" : "7",
+ "tags" : "Relationship",
+ "technology" : "HTTPS/json"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "40",
+ "id" : "130",
+ "linkedRelationshipId" : "129",
+ "sourceId" : "7",
+ "technology" : "HTTPS/json"
} ],
"tags" : "Element,Software System"
}, {
"documentation" : { },
- "id" : "6",
+ "id" : "8",
"location" : "Unspecified",
"name" : "Supplier Information and Contracts Finder",
"properties" : {
"structurizr.dsl.identifier" : "cfs"
},
"relationships" : [ {
- "description" : "Authorizes with",
- "destinationId" : "9",
- "id" : "91",
+ "description" : "Authenticates with",
+ "destinationId" : "21",
+ "id" : "131",
"properties" : {
- "structurizr.dsl.identifier" : "f3ba282e-c603-4463-813f-3256a8059917"
+ "structurizr.dsl.identifier" : "d4992069-d456-48a4-b7f8-975ab391421a"
},
- "sourceId" : "6",
+ "sourceId" : "8",
"tags" : "Relationship"
}, {
- "description" : "Authorizes with",
- "destinationId" : "8",
- "id" : "92",
- "linkedRelationshipId" : "91",
- "sourceId" : "6"
+ "description" : "Authenticates with",
+ "destinationId" : "10",
+ "id" : "132",
+ "linkedRelationshipId" : "131",
+ "sourceId" : "8"
} ],
"tags" : "Element,Software System"
}, {
"documentation" : { },
- "id" : "7",
+ "id" : "9",
"location" : "Unspecified",
"name" : "Public Procurement Gateway",
"properties" : {
"structurizr.dsl.identifier" : "ppg"
},
"relationships" : [ {
- "description" : "Authorizes with",
- "destinationId" : "9",
- "id" : "93",
+ "description" : "Authenticates with",
+ "destinationId" : "21",
+ "id" : "133",
"properties" : {
- "structurizr.dsl.identifier" : "8169964c-920b-4bdf-9090-483856fa2eda"
+ "structurizr.dsl.identifier" : "e5ce2c0f-1c81-498a-88ff-ebcb40425812"
},
- "sourceId" : "7",
+ "sourceId" : "9",
"tags" : "Relationship"
}, {
- "description" : "Authorizes with",
- "destinationId" : "8",
- "id" : "94",
- "linkedRelationshipId" : "93",
- "sourceId" : "7"
+ "description" : "Authenticates with",
+ "destinationId" : "10",
+ "id" : "134",
+ "linkedRelationshipId" : "133",
+ "sourceId" : "9"
} ],
"tags" : "Element,Software System"
}, {
"containers" : [ {
+ "documentation" : { },
+ "id" : "11",
+ "name" : "Message Queue",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.messagequeue"
+ },
+ "tags" : "Element,Container,Message Queue",
+ "technology" : "SQS"
+ }, {
+ "documentation" : { },
+ "group" : "Entity Verification",
+ "id" : "12",
+ "name" : "Entity Verification Database",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverificationdatabase"
+ },
+ "tags" : "Element,Container,Database",
+ "technology" : "PostgreSQL"
+ }, {
+ "components" : [ {
+ "description" : "Queries known identifers.",
+ "documentation" : { },
+ "id" : "14",
+ "name" : "Entity Verification Endpoint",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification.entityverificationendpoint"
+ },
+ "tags" : "Element,Component",
+ "technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "15",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification.entityverificationusecase"
+ },
+ "relationships" : [ {
+ "description" : "publishes to / listens to",
+ "destinationId" : "11",
+ "id" : "16",
+ "properties" : {
+ "structurizr.dsl.identifier" : "b39d6bc8-01e9-4f2e-bb4f-2d449400cec4"
+ },
+ "sourceId" : "15",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ } ],
+ "tags" : "Element,Component"
+ } ],
+ "documentation" : { },
+ "group" : "Entity Verification",
+ "id" : "13",
+ "name" : "Entity Verification",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification"
+ },
+ "relationships" : [ {
+ "description" : "publishes to / listens to",
+ "destinationId" : "11",
+ "id" : "17",
+ "linkedRelationshipId" : "16",
+ "sourceId" : "13",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "reads/writes",
+ "destinationId" : "12",
+ "id" : "18",
+ "properties" : {
+ "structurizr.dsl.identifier" : "5a303626-1bd2-461a-9a5d-fa94bf9296cd"
+ },
+ "sourceId" : "13",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Container,WebApi",
+ "technology" : "Asp.Net Core"
+ }, {
+ "documentation" : { },
+ "group" : "Organisation Information",
+ "id" : "19",
+ "name" : "Organisation Information Database",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationinformationdatabase"
+ },
+ "tags" : "Element,Container,Database",
+ "technology" : "PostgreSQL"
+ }, {
+ "documentation" : { },
+ "group" : "Organisation Information",
+ "id" : "20",
+ "name" : "File Storage",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.filestorage"
+ },
+ "tags" : "Element,Container,File Storage",
+ "technology" : "S3"
+ }, {
"components" : [ {
"description" : "Exposes OpenID configuration",
"documentation" : { },
- "id" : "10",
+ "id" : "22",
"name" : "OpenID Well-Known Configuration Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "openidconfigurationendpoint"
+ "structurizr.dsl.identifier" : "cdp.authority.openidconfigurationendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"description" : "Exposes Json Web Key Set",
"documentation" : { },
- "id" : "11",
+ "id" : "23",
"name" : "OpenID Well-Known JWKS Configuration Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "openidjwksconfigurationendpoint"
+ "structurizr.dsl.identifier" : "cdp.authority.openidjwksconfigurationendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"description" : "Exchanges a valid One Login token to a longer-lived token with additional claims.",
"documentation" : { },
- "id" : "12",
+ "id" : "24",
"name" : "Token endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "tokenendpoint"
+ "structurizr.dsl.identifier" : "cdp.authority.tokenendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
} ],
"documentation" : { },
- "id" : "9",
+ "group" : "Organisation Information",
+ "id" : "21",
"name" : "Authority",
"properties" : {
- "structurizr.dsl.identifier" : "authority"
+ "structurizr.dsl.identifier" : "cdp.authority"
},
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "19",
+ "id" : "25",
+ "properties" : {
+ "structurizr.dsl.identifier" : "5161ab2d-0f48-4b98-b059-1408ebe8ee47"
+ },
+ "sourceId" : "21",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
"documentation" : { },
- "id" : "14",
+ "id" : "27",
"name" : "Tenant Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "tenantendpoint"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.tenantendpoint"
},
"relationships" : [ {
"description" : "Executes",
- "destinationId" : "15",
- "id" : "18",
+ "destinationId" : "28",
+ "id" : "31",
"properties" : {
- "structurizr.dsl.identifier" : "42cd5322-5e3f-4d07-8fa4-f8ccbb748afd"
+ "structurizr.dsl.identifier" : "4842ca8e-ac64-4322-85eb-ef93bae80519"
},
- "sourceId" : "14",
+ "sourceId" : "27",
"tags" : "Relationship"
}, {
"description" : "Executes",
- "destinationId" : "16",
- "id" : "19",
+ "destinationId" : "29",
+ "id" : "32",
"properties" : {
- "structurizr.dsl.identifier" : "e5a67029-c9e9-4ac4-b51e-9f86982aef27"
+ "structurizr.dsl.identifier" : "5606c05b-f66b-485b-ada4-3b195f4b323d"
},
- "sourceId" : "14",
+ "sourceId" : "27",
"tags" : "Relationship"
} ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"documentation" : { },
- "id" : "15",
+ "id" : "28",
"name" : "Register Tenant Use Case",
"properties" : {
- "structurizr.dsl.identifier" : "registertenantusecase"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.registertenantusecase"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "17",
- "id" : "20",
+ "destinationId" : "30",
+ "id" : "33",
"properties" : {
- "structurizr.dsl.identifier" : "1b24b1ad-e99c-403f-8baf-cc94b058a608"
+ "structurizr.dsl.identifier" : "d1cfc025-4a0a-4aa4-96d2-ad581f481df7"
},
- "sourceId" : "15",
+ "sourceId" : "28",
"tags" : "Relationship"
} ],
"tags" : "Element,Component"
}, {
"documentation" : { },
- "id" : "16",
+ "id" : "29",
"name" : "Get Tenant Use Case",
"properties" : {
- "structurizr.dsl.identifier" : "gettenantusecase"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.gettenantusecase"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "17",
- "id" : "21",
+ "destinationId" : "30",
+ "id" : "34",
"properties" : {
- "structurizr.dsl.identifier" : "4453c877-0578-4b30-87bf-3eb26340c7fa"
+ "structurizr.dsl.identifier" : "1ec2979b-73e9-4f15-b614-50d397d7edf5"
},
- "sourceId" : "16",
+ "sourceId" : "29",
"tags" : "Relationship"
} ],
"tags" : "Element,Component"
}, {
"documentation" : { },
- "id" : "17",
+ "id" : "30",
"name" : "Persistence",
"properties" : {
- "structurizr.dsl.identifier" : "tenantpersistence"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.tenantpersistence"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "31",
+ "destinationId" : "19",
+ "id" : "35",
"properties" : {
- "structurizr.dsl.identifier" : "04ff222d-fa22-48a8-94df-f0408e68b851"
+ "structurizr.dsl.identifier" : "6bdb358a-a227-4aae-9d69-6bf8fb7f5f84"
},
- "sourceId" : "17",
+ "sourceId" : "30",
"tags" : "Relationship",
"technology" : "SQL"
} ],
@@ -340,17 +511,18 @@
"technology" : "Project"
} ],
"documentation" : { },
- "id" : "13",
+ "group" : "Organisation Information",
+ "id" : "26",
"name" : "Tenant API",
"properties" : {
- "structurizr.dsl.identifier" : "tenantapi"
+ "structurizr.dsl.identifier" : "cdp.tenantapi"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "32",
- "linkedRelationshipId" : "31",
- "sourceId" : "13",
+ "destinationId" : "19",
+ "id" : "36",
+ "linkedRelationshipId" : "35",
+ "sourceId" : "26",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
@@ -358,28 +530,29 @@
}, {
"components" : [ {
"documentation" : { },
- "id" : "23",
+ "id" : "38",
"name" : "Person Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "personendpoint"
+ "structurizr.dsl.identifier" : "cdp.personapi.personendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
} ],
"documentation" : { },
- "id" : "22",
+ "group" : "Organisation Information",
+ "id" : "37",
"name" : "Person API",
"properties" : {
- "structurizr.dsl.identifier" : "personapi"
+ "structurizr.dsl.identifier" : "cdp.personapi"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "55",
+ "destinationId" : "19",
+ "id" : "39",
"properties" : {
- "structurizr.dsl.identifier" : "eb2f2990-f2ea-4e35-8bb5-f5ba338c52e1"
+ "structurizr.dsl.identifier" : "5922eeb4-8432-44a4-82ab-bb3559787006"
},
- "sourceId" : "22",
+ "sourceId" : "37",
"tags" : "Relationship",
"technology" : "SQL"
} ],
@@ -388,28 +561,72 @@
}, {
"components" : [ {
"documentation" : { },
- "id" : "25",
+ "id" : "41",
"name" : "Organisation Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "organisationendpoint"
+ "structurizr.dsl.identifier" : "cdp.organisationapi.organisationendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "42",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationapi.usecase"
+ },
+ "relationships" : [ {
+ "description" : "publishes to / listens to",
+ "destinationId" : "11",
+ "id" : "43",
+ "properties" : {
+ "structurizr.dsl.identifier" : "6d0ebdc5-a4d8-471a-bff8-b3b3988882d8"
+ },
+ "sourceId" : "42",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "sends notifications with",
+ "destinationId" : "5",
+ "id" : "45",
+ "properties" : {
+ "structurizr.dsl.identifier" : "ad49273b-ad09-4a09-a355-98e7b8d641e3"
+ },
+ "sourceId" : "42",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ } ],
+ "tags" : "Element,Component"
} ],
"documentation" : { },
- "id" : "24",
+ "group" : "Organisation Information",
+ "id" : "40",
"name" : "Organisation API",
"properties" : {
- "structurizr.dsl.identifier" : "organisationapi"
+ "structurizr.dsl.identifier" : "cdp.organisationapi"
},
"relationships" : [ {
+ "description" : "publishes to / listens to",
+ "destinationId" : "11",
+ "id" : "44",
+ "linkedRelationshipId" : "43",
+ "sourceId" : "40",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "sends notifications with",
+ "destinationId" : "5",
+ "id" : "46",
+ "linkedRelationshipId" : "45",
+ "sourceId" : "40",
+ "technology" : "HTTPS"
+ }, {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "56",
+ "destinationId" : "19",
+ "id" : "48",
"properties" : {
- "structurizr.dsl.identifier" : "a5d43f48-121d-4b10-aef2-78886fe596cb"
+ "structurizr.dsl.identifier" : "6789dadb-e82e-40a1-bfaa-e35973d557b4"
},
- "sourceId" : "24",
+ "sourceId" : "40",
"tags" : "Relationship",
"technology" : "SQL"
} ],
@@ -418,28 +635,55 @@
}, {
"components" : [ {
"documentation" : { },
- "id" : "27",
+ "id" : "50",
"name" : "Forms Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "formsendpoint"
+ "structurizr.dsl.identifier" : "cdp.formsapi.formsendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "51",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.formsapi.usecase"
+ },
+ "relationships" : [ {
+ "description" : "writes to",
+ "destinationId" : "20",
+ "id" : "52",
+ "properties" : {
+ "structurizr.dsl.identifier" : "7aefd0c2-43bc-4728-b3b2-17b5010bdd86"
+ },
+ "sourceId" : "51",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ } ],
+ "tags" : "Element,Component"
} ],
"documentation" : { },
- "id" : "26",
+ "group" : "Organisation Information",
+ "id" : "49",
"name" : "Forms API",
"properties" : {
- "structurizr.dsl.identifier" : "formsapi"
+ "structurizr.dsl.identifier" : "cdp.formsapi"
},
"relationships" : [ {
+ "description" : "writes to",
+ "destinationId" : "20",
+ "id" : "53",
+ "linkedRelationshipId" : "52",
+ "sourceId" : "49",
+ "technology" : "HTTPS"
+ }, {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "57",
+ "destinationId" : "19",
+ "id" : "54",
"properties" : {
- "structurizr.dsl.identifier" : "7b5430e3-f102-47f1-922c-bae87fded64d"
+ "structurizr.dsl.identifier" : "494ab583-7e7e-48cc-88d0-44c20ccd666c"
},
- "sourceId" : "26",
+ "sourceId" : "49",
"tags" : "Relationship",
"technology" : "SQL"
} ],
@@ -448,382 +692,492 @@
}, {
"components" : [ {
"documentation" : { },
- "id" : "29",
+ "id" : "56",
"name" : "Data Sharing Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "datasharingendpoint"
+ "structurizr.dsl.identifier" : "cdp.datasharingapi.datasharingendpoint"
},
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "57",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.datasharingapi.usecase"
+ },
+ "relationships" : [ {
+ "description" : "writes to / reads from",
+ "destinationId" : "20",
+ "id" : "58",
+ "properties" : {
+ "structurizr.dsl.identifier" : "0c73bf04-027f-44b6-80ad-ddc11c2df853"
+ },
+ "sourceId" : "57",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ } ],
+ "tags" : "Element,Component"
} ],
"documentation" : { },
- "id" : "28",
+ "group" : "Organisation Information",
+ "id" : "55",
"name" : "Data Sharing API",
"properties" : {
- "structurizr.dsl.identifier" : "datasharingapi"
+ "structurizr.dsl.identifier" : "cdp.datasharingapi"
},
"relationships" : [ {
+ "description" : "writes to / reads from",
+ "destinationId" : "20",
+ "id" : "59",
+ "linkedRelationshipId" : "58",
+ "sourceId" : "55",
+ "technology" : "HTTPS"
+ }, {
"description" : "reads/writes",
- "destinationId" : "30",
- "id" : "58",
+ "destinationId" : "19",
+ "id" : "60",
"properties" : {
- "structurizr.dsl.identifier" : "aa045b4c-0005-4735-a1a2-dcd70630bdfd"
+ "structurizr.dsl.identifier" : "2aaae187-ea95-4346-8bcc-1fedcf204db7"
},
- "sourceId" : "28",
+ "sourceId" : "55",
"tags" : "Relationship",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
- }, {
- "documentation" : { },
- "id" : "30",
- "name" : "Organisation Information Database",
- "properties" : {
- "structurizr.dsl.identifier" : "database"
- },
- "tags" : "Element,Container,Database",
- "technology" : "PostgreSQL"
}, {
"components" : [ {
- "description" : "Enables web users to perform tasks.",
+ "description" : "Makes API calls to the Tenant API",
"documentation" : { },
- "id" : "34",
- "name" : "MVC Controller",
+ "group" : "Libraries",
+ "id" : "62",
+ "name" : "Tenant Client",
"properties" : {
- "structurizr.dsl.identifier" : "mvccontroller"
+ "structurizr.dsl.identifier" : "cdp.webapp.tenantclient"
},
"relationships" : [ {
- "description" : "Authenticates with",
- "destinationId" : "4",
- "id" : "43",
+ "description" : "Calls",
+ "destinationId" : "27",
+ "id" : "93",
"properties" : {
- "structurizr.dsl.identifier" : "68b59b51-c29a-48fd-a0f1-6f8d466ca749"
+ "structurizr.dsl.identifier" : "5965c60f-5cd6-4f2b-b2e0-a2d0c1ed50e3"
},
- "sourceId" : "34",
+ "sourceId" : "62",
"tags" : "Relationship",
- "technology" : "HTTPS"
+ "technology" : "HTTPS/json"
}, {
- "description" : "Authenticates and authorises with",
- "destinationId" : "12",
- "id" : "46",
+ "description" : "Calls",
+ "destinationId" : "26",
+ "id" : "94",
+ "linkedRelationshipId" : "93",
+ "sourceId" : "62",
+ "technology" : "HTTPS/json"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "description" : "Makes API calls to the Person API",
+ "documentation" : { },
+ "group" : "Libraries",
+ "id" : "63",
+ "name" : "Person Client",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.webapp.personclient"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "38",
+ "id" : "97",
"properties" : {
- "structurizr.dsl.identifier" : "f2e62d5a-5ab6-4609-87b2-0725d07cc2ad"
+ "structurizr.dsl.identifier" : "c146fb9f-7d84-40f1-8942-3a365dd66292"
},
- "sourceId" : "34",
+ "sourceId" : "63",
"tags" : "Relationship",
- "technology" : "HTTPS"
- }, {
- "description" : "Authenticates and authorises with",
- "destinationId" : "9",
- "id" : "47",
- "linkedRelationshipId" : "46",
- "sourceId" : "34",
- "technology" : "HTTPS"
- }, {
- "description" : "Uses",
- "destinationId" : "35",
- "id" : "50",
- "properties" : {
- "structurizr.dsl.identifier" : "e1468086-bdb8-4ca9-a90d-eda4fee755cf"
- },
- "sourceId" : "34",
- "tags" : "Relationship"
- }, {
- "description" : "Uses",
- "destinationId" : "36",
- "id" : "51",
- "properties" : {
- "structurizr.dsl.identifier" : "d601485c-31ae-49d8-8482-f65acd678992"
- },
- "sourceId" : "34",
- "tags" : "Relationship"
+ "technology" : "HTTPS/json"
}, {
- "description" : "Uses",
+ "description" : "Calls",
"destinationId" : "37",
- "id" : "52",
- "properties" : {
- "structurizr.dsl.identifier" : "1b274eae-c1b1-4a35-b72c-9f810dd9c8e8"
- },
- "sourceId" : "34",
- "tags" : "Relationship"
- }, {
- "description" : "Uses",
- "destinationId" : "38",
- "id" : "53",
- "properties" : {
- "structurizr.dsl.identifier" : "7ddd3462-551a-4314-8f6e-8cbf375932eb"
- },
- "sourceId" : "34",
- "tags" : "Relationship"
- }, {
- "description" : "Uses",
- "destinationId" : "39",
- "id" : "54",
- "properties" : {
- "structurizr.dsl.identifier" : "1eda0158-99b2-49ea-9030-a514eda06f57"
- },
- "sourceId" : "34",
- "tags" : "Relationship"
+ "id" : "98",
+ "linkedRelationshipId" : "97",
+ "sourceId" : "63",
+ "technology" : "HTTPS/json"
} ],
- "tags" : "Element,Component",
- "technology" : "Asp.Net Core MVC Controller"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
- "description" : "Makes API calls to the Tenant API",
+ "description" : "Makes API calls to the Organisation API",
"documentation" : { },
- "id" : "35",
- "name" : "Tenant Client",
+ "group" : "Libraries",
+ "id" : "64",
+ "name" : "Organisation Client",
"properties" : {
- "structurizr.dsl.identifier" : "tenantclient"
+ "structurizr.dsl.identifier" : "cdp.webapp.organisationclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "14",
- "id" : "59",
+ "destinationId" : "41",
+ "id" : "101",
"properties" : {
- "structurizr.dsl.identifier" : "3c6f3ad3-2cb6-4879-b356-1b0681c8ad62"
+ "structurizr.dsl.identifier" : "fe2fccdc-a01f-4d5e-aedc-f7fb28c80b6f"
},
- "sourceId" : "35",
+ "sourceId" : "64",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "13",
- "id" : "60",
- "linkedRelationshipId" : "59",
- "sourceId" : "35",
+ "destinationId" : "40",
+ "id" : "102",
+ "linkedRelationshipId" : "101",
+ "sourceId" : "64",
"technology" : "HTTPS/json"
} ],
- "tags" : "Element,Component",
- "technology" : "library"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
- "description" : "Makes API calls to the Person API",
+ "description" : "Makes API calls to the Forms API",
"documentation" : { },
- "id" : "36",
- "name" : "Person Client",
+ "group" : "Libraries",
+ "id" : "65",
+ "name" : "Forms Client",
"properties" : {
- "structurizr.dsl.identifier" : "personclient"
+ "structurizr.dsl.identifier" : "cdp.webapp.formsclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "23",
- "id" : "63",
+ "destinationId" : "50",
+ "id" : "105",
"properties" : {
- "structurizr.dsl.identifier" : "5ab4fdcd-e3bd-419a-bc9e-7c8551831d4d"
+ "structurizr.dsl.identifier" : "fa9c4ca8-11ab-4acc-9175-64451c202026"
},
- "sourceId" : "36",
+ "sourceId" : "65",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "22",
- "id" : "64",
- "linkedRelationshipId" : "63",
- "sourceId" : "36",
+ "destinationId" : "49",
+ "id" : "106",
+ "linkedRelationshipId" : "105",
+ "sourceId" : "65",
"technology" : "HTTPS/json"
} ],
- "tags" : "Element,Component",
- "technology" : "library"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
- "description" : "Makes API calls to the Organisation API",
+ "description" : "Makes API calls to the Data Sharing API",
"documentation" : { },
- "id" : "37",
- "name" : "Organisation Client",
+ "group" : "Libraries",
+ "id" : "66",
+ "name" : "Data Sharing Client",
"properties" : {
- "structurizr.dsl.identifier" : "organisationclient"
+ "structurizr.dsl.identifier" : "cdp.webapp.datasharingclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "25",
- "id" : "67",
+ "destinationId" : "56",
+ "id" : "109",
"properties" : {
- "structurizr.dsl.identifier" : "607f8b6c-9910-461d-ba35-937b4227b906"
+ "structurizr.dsl.identifier" : "a46e24f7-6008-459a-997b-016b15b44627"
},
- "sourceId" : "37",
+ "sourceId" : "66",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "24",
- "id" : "68",
- "linkedRelationshipId" : "67",
- "sourceId" : "37",
+ "destinationId" : "55",
+ "id" : "110",
+ "linkedRelationshipId" : "109",
+ "sourceId" : "66",
"technology" : "HTTPS/json"
} ],
- "tags" : "Element,Component",
- "technology" : "library"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
- "description" : "Makes API calls to the Forms API",
+ "description" : "Makes API calls to the Entity Verification API",
"documentation" : { },
- "id" : "38",
- "name" : "Forms Client",
+ "group" : "Libraries",
+ "id" : "67",
+ "name" : "Entity Verification Client",
"properties" : {
- "structurizr.dsl.identifier" : "formsclient"
+ "structurizr.dsl.identifier" : "cdp.webapp.entityverificationclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "27",
- "id" : "71",
+ "destinationId" : "14",
+ "id" : "113",
"properties" : {
- "structurizr.dsl.identifier" : "2b36de4e-6744-4bb5-aa8e-e0dda82e506b"
+ "structurizr.dsl.identifier" : "f6b8d584-398d-41ec-a6ee-7d8463da5fda"
},
- "sourceId" : "38",
+ "sourceId" : "67",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "26",
- "id" : "72",
- "linkedRelationshipId" : "71",
- "sourceId" : "38",
+ "destinationId" : "13",
+ "id" : "114",
+ "linkedRelationshipId" : "113",
+ "sourceId" : "67",
"technology" : "HTTPS/json"
} ],
- "tags" : "Element,Component",
- "technology" : "library"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
- "description" : "Makes API calls to the Data Sharing API",
+ "description" : "Enables web users to perform tasks.",
"documentation" : { },
- "id" : "39",
- "name" : "Data Sharing Client",
+ "id" : "68",
+ "name" : "MVC Controller",
"properties" : {
- "structurizr.dsl.identifier" : "datasharingclient"
+ "structurizr.dsl.identifier" : "cdp.webapp.mvccontroller"
},
"relationships" : [ {
- "description" : "Calls",
- "destinationId" : "29",
+ "description" : "Authenticates with",
+ "destinationId" : "4",
"id" : "75",
"properties" : {
- "structurizr.dsl.identifier" : "a1fc17e5-0b7a-4efc-86bc-32d1e61e7bb1"
+ "structurizr.dsl.identifier" : "59c8a693-9961-4ea0-b892-9fe4eb1f1592"
},
- "sourceId" : "39",
+ "sourceId" : "68",
"tags" : "Relationship",
- "technology" : "HTTPS/json"
+ "technology" : "HTTPS"
}, {
- "description" : "Calls",
- "destinationId" : "28",
- "id" : "76",
- "linkedRelationshipId" : "75",
- "sourceId" : "39",
- "technology" : "HTTPS/json"
+ "description" : "Pulls company details from",
+ "destinationId" : "6",
+ "id" : "78",
+ "properties" : {
+ "structurizr.dsl.identifier" : "d94c18bd-b3a5-4f1e-aacf-a76274356129"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Authenticates and authorises with",
+ "destinationId" : "24",
+ "id" : "81",
+ "properties" : {
+ "structurizr.dsl.identifier" : "6f6c0329-ff39-4a33-bbe5-835a7ed7005d"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Authenticates and authorises with",
+ "destinationId" : "21",
+ "id" : "82",
+ "linkedRelationshipId" : "81",
+ "sourceId" : "68",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "62",
+ "id" : "85",
+ "properties" : {
+ "structurizr.dsl.identifier" : "99f7b9c9-d8c3-4b5c-a795-759ee864898a"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "63",
+ "id" : "86",
+ "properties" : {
+ "structurizr.dsl.identifier" : "8d78cbd3-2e06-41f8-b2ef-cbb2facbfe0a"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "64",
+ "id" : "87",
+ "properties" : {
+ "structurizr.dsl.identifier" : "190d50a2-3c50-4357-8d00-042ccc8fb544"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "65",
+ "id" : "88",
+ "properties" : {
+ "structurizr.dsl.identifier" : "4cbdb012-1070-499d-9e3b-6a4829feab63"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "66",
+ "id" : "89",
+ "properties" : {
+ "structurizr.dsl.identifier" : "65e193f9-3f7b-4f84-9084-ca10755dd27e"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Uses",
+ "destinationId" : "67",
+ "id" : "90",
+ "properties" : {
+ "structurizr.dsl.identifier" : "bc92a39e-e6d1-4557-bd4b-818d33a9379e"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship"
+ }, {
+ "description" : "writes to",
+ "destinationId" : "20",
+ "id" : "91",
+ "properties" : {
+ "structurizr.dsl.identifier" : "a655bd6a-e21b-4406-bf31-7558ca337543"
+ },
+ "sourceId" : "68",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
} ],
"tags" : "Element,Component",
- "technology" : "library"
+ "technology" : "Asp.Net Core MVC Controller"
} ],
"description" : "Account & data capture frontend",
"documentation" : { },
- "id" : "33",
+ "group" : "Organisation Information",
+ "id" : "61",
"name" : "Web Application",
"properties" : {
- "structurizr.dsl.identifier" : "webapp"
+ "structurizr.dsl.identifier" : "cdp.webapp"
},
"relationships" : [ {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "44",
- "linkedRelationshipId" : "43",
- "sourceId" : "33",
+ "id" : "76",
+ "linkedRelationshipId" : "75",
+ "sourceId" : "61",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Pulls company details from",
+ "destinationId" : "6",
+ "id" : "79",
+ "linkedRelationshipId" : "78",
+ "sourceId" : "61",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Authenticates and authorises with",
+ "destinationId" : "24",
+ "id" : "83",
+ "linkedRelationshipId" : "81",
+ "sourceId" : "61",
"technology" : "HTTPS"
}, {
"description" : "Authenticates and authorises with",
- "destinationId" : "12",
- "id" : "48",
- "linkedRelationshipId" : "46",
- "sourceId" : "33",
+ "destinationId" : "21",
+ "id" : "84",
+ "linkedRelationshipId" : "81",
+ "sourceId" : "61",
"technology" : "HTTPS"
}, {
- "description" : "Authenticates and authorises with",
- "destinationId" : "9",
- "id" : "49",
- "linkedRelationshipId" : "46",
- "sourceId" : "33",
+ "description" : "writes to",
+ "destinationId" : "20",
+ "id" : "92",
+ "linkedRelationshipId" : "91",
+ "sourceId" : "61",
"technology" : "HTTPS"
}, {
"description" : "Calls",
- "destinationId" : "14",
- "id" : "61",
- "linkedRelationshipId" : "59",
- "sourceId" : "33",
+ "destinationId" : "27",
+ "id" : "95",
+ "linkedRelationshipId" : "93",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "13",
- "id" : "62",
- "linkedRelationshipId" : "59",
- "sourceId" : "33",
+ "destinationId" : "26",
+ "id" : "96",
+ "linkedRelationshipId" : "93",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "23",
- "id" : "65",
- "linkedRelationshipId" : "63",
- "sourceId" : "33",
+ "destinationId" : "38",
+ "id" : "99",
+ "linkedRelationshipId" : "97",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "22",
- "id" : "66",
- "linkedRelationshipId" : "63",
- "sourceId" : "33",
+ "destinationId" : "37",
+ "id" : "100",
+ "linkedRelationshipId" : "97",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "25",
- "id" : "69",
- "linkedRelationshipId" : "67",
- "sourceId" : "33",
+ "destinationId" : "41",
+ "id" : "103",
+ "linkedRelationshipId" : "101",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "24",
- "id" : "70",
- "linkedRelationshipId" : "67",
- "sourceId" : "33",
+ "destinationId" : "40",
+ "id" : "104",
+ "linkedRelationshipId" : "101",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "27",
- "id" : "73",
- "linkedRelationshipId" : "71",
- "sourceId" : "33",
+ "destinationId" : "50",
+ "id" : "107",
+ "linkedRelationshipId" : "105",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "26",
- "id" : "74",
- "linkedRelationshipId" : "71",
- "sourceId" : "33",
+ "destinationId" : "49",
+ "id" : "108",
+ "linkedRelationshipId" : "105",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "29",
- "id" : "77",
- "linkedRelationshipId" : "75",
- "sourceId" : "33",
+ "destinationId" : "56",
+ "id" : "111",
+ "linkedRelationshipId" : "109",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "28",
- "id" : "78",
- "linkedRelationshipId" : "75",
- "sourceId" : "33",
+ "destinationId" : "55",
+ "id" : "112",
+ "linkedRelationshipId" : "109",
+ "sourceId" : "61",
+ "technology" : "HTTPS/json"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "14",
+ "id" : "115",
+ "linkedRelationshipId" : "113",
+ "sourceId" : "61",
+ "technology" : "HTTPS/json"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "13",
+ "id" : "116",
+ "linkedRelationshipId" : "113",
+ "sourceId" : "61",
"technology" : "HTTPS/json"
}, {
"description" : "Retrieves OpenID configuration from",
- "destinationId" : "10",
- "id" : "89",
+ "destinationId" : "22",
+ "id" : "117",
"properties" : {
- "structurizr.dsl.identifier" : "47719f24-0734-4fb6-8a0c-f16b1594e864"
+ "structurizr.dsl.identifier" : "b4ac56d2-405e-4814-ac76-f9a26a9a928b"
},
- "sourceId" : "33",
+ "sourceId" : "61",
"tags" : "Relationship"
}, {
"description" : "Retrieves Json Web Key Set from",
- "destinationId" : "11",
- "id" : "90",
+ "destinationId" : "23",
+ "id" : "118",
"properties" : {
- "structurizr.dsl.identifier" : "faf594ab-d55d-4ca2-adf3-d339c6802e14"
+ "structurizr.dsl.identifier" : "2a4ac1e1-8047-49e3-a759-b893c60db009"
},
- "sourceId" : "33",
+ "sourceId" : "61",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,WebApp",
@@ -831,18 +1185,32 @@
} ],
"description" : "Supports procurement",
"documentation" : { },
- "id" : "8",
+ "id" : "10",
"location" : "Unspecified",
"name" : "Central Digital Platform",
"properties" : {
"structurizr.dsl.identifier" : "cdp"
},
"relationships" : [ {
+ "description" : "sends notifications with",
+ "destinationId" : "5",
+ "id" : "47",
+ "linkedRelationshipId" : "45",
+ "sourceId" : "10",
+ "technology" : "HTTPS"
+ }, {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "45",
- "linkedRelationshipId" : "43",
- "sourceId" : "8",
+ "id" : "77",
+ "linkedRelationshipId" : "75",
+ "sourceId" : "10",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Pulls company details from",
+ "destinationId" : "6",
+ "id" : "80",
+ "linkedRelationshipId" : "78",
+ "sourceId" : "10",
"technology" : "HTTPS"
} ],
"tags" : "Element,Software System"
@@ -850,34 +1218,34 @@
},
"name" : "Central Digital Platform",
"properties" : {
- "structurizr.dsl" : "d29ya3NwYWNlICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iIHsKCiAgICBtb2RlbCB7CiAgICAgICAgc3VwcGxpZXIgPSBwZXJzb24gIlN1cHBsaWVyIgogICAgICAgIGJ1eWVyID0gcGVyc29uICJCdXllciIKICAgICAgICBlU2VuZGVyID0gc29mdHdhcmVTeXN0ZW0gImVTZW5kZXIiICJDb21tZXJjaWFsIFNvZnR3YXJlIHRoYXQgQnV5ZXJzIHVzZSB0byBtYW5hZ2UgdGVuZGVyIHByb2Nlc3NlcyIKICAgICAgICBvbmVMb2dpbiA9IHNvZnR3YXJlU3lzdGVtICJHb3YudWsgT25lIExvZ2luIiAiTGV0IHVzZXJzIHNpZ24gaW4gYW5kIHByb3ZlIHRoZWlyIGlkZW50aXRpZXMgdG8gdXNlIHlvdXIgc2VydmljZSIKICAgICAgICBmdHMgPSBzb2Z0d2FyZVN5c3RlbSAiRmluZCBhIFRlbmRlciIKICAgICAgICBjZnMgPSBzb2Z0d2FyZVN5c3RlbSAiU3VwcGxpZXIgSW5mb3JtYXRpb24gYW5kIENvbnRyYWN0cyBGaW5kZXIiCiAgICAgICAgcHBnID0gc29mdHdhcmVTeXN0ZW0gIlB1YmxpYyBQcm9jdXJlbWVudCBHYXRld2F5IgogICAgICAgIGNkcCA9IHNvZnR3YXJlU3lzdGVtICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iICJTdXBwb3J0cyBwcm9jdXJlbWVudCIgewogICAgICAgICAgICBhdXRob3JpdHkgPSBjb250YWluZXIgIkF1dGhvcml0eSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgIG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3BlbklEIFdlbGwtS25vd24gQ29uZmlndXJhdGlvbiBFbmRwb2ludCIgIkV4cG9zZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24iICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgIG9wZW5JZEp3a3NDb25maWd1cmF0aW9uRW5kcG9pbnQgPSBjb21wb25lbnQgIk9wZW5JRCBXZWxsLUtub3duIEpXS1MgQ29uZmlndXJhdGlvbiBFbmRwb2ludCIgIkV4cG9zZXMgSnNvbiBXZWIgS2V5IFNldCIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgdG9rZW5FbmRwb2ludCA9IGNvbXBvbmVudCAiVG9rZW4gZW5kcG9pbnQiICJFeGNoYW5nZXMgYSB2YWxpZCBPbmUgTG9naW4gdG9rZW4gdG8gYSBsb25nZXItbGl2ZWQgdG9rZW4gd2l0aCBhZGRpdGlvbmFsIGNsYWltcy4iICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgfQogICAgICAgICAgICB0ZW5hbnRBcGkgPSBjb250YWluZXIgIlRlbmFudCBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICB0ZW5hbnRFbmRwb2ludCA9IGNvbXBvbmVudCAiVGVuYW50IEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICByZWdpc3RlclRlbmFudFVzZUNhc2UgPSBjb21wb25lbnQgIlJlZ2lzdGVyIFRlbmFudCBVc2UgQ2FzZSIKICAgICAgICAgICAgICAgIGdldFRlbmFudFVzZUNhc2UgPSBjb21wb25lbnQgIkdldCBUZW5hbnQgVXNlIENhc2UiCiAgICAgICAgICAgICAgICB0ZW5hbnRQZXJzaXN0ZW5jZSA9IGNvbXBvbmVudCAiUGVyc2lzdGVuY2UiICIiICJQcm9qZWN0IgogICAgICAgICAgICAgICAgdGVuYW50RW5kcG9pbnQgLT4gcmVnaXN0ZXJUZW5hbnRVc2VDYXNlICJFeGVjdXRlcyIKICAgICAgICAgICAgICAgIHRlbmFudEVuZHBvaW50IC0+IGdldFRlbmFudFVzZUNhc2UgIkV4ZWN1dGVzIgogICAgICAgICAgICAgICAgcmVnaXN0ZXJUZW5hbnRVc2VDYXNlIC0+IHRlbmFudFBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgIGdldFRlbmFudFVzZUNhc2UgLT4gdGVuYW50UGVyc2lzdGVuY2UgIkNhbGxzIgogICAgICAgICAgICB9CiAgICAgICAgICAgIHBlcnNvbkFwaSA9IGNvbnRhaW5lciAiUGVyc29uIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgIHBlcnNvbkVuZHBvaW50ID0gY29tcG9uZW50ICJQZXJzb24gRW5kcG9pbnQiICIiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgfQogICAgICAgICAgICBvcmdhbmlzYXRpb25BcGkgPSBjb250YWluZXIgIk9yZ2FuaXNhdGlvbiBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9ybXNBcGkgPSBjb250YWluZXIgIkZvcm1zIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgIGZvcm1zRW5kcG9pbnQgPSBjb21wb25lbnQgIkZvcm1zIEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZGF0YVNoYXJpbmdBcGkgPSBjb250YWluZXIgIkRhdGEgU2hhcmluZyBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICBkYXRhU2hhcmluZ0VuZHBvaW50ID0gY29tcG9uZW50ICJEYXRhIFNoYXJpbmcgRW5kcG9pbnQiICIiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgfQogICAgICAgICAgICBkYXRhYmFzZSA9IGNvbnRhaW5lciAiT3JnYW5pc2F0aW9uIEluZm9ybWF0aW9uIERhdGFiYXNlIiAiIiBQb3N0Z3JlU1FMIERhdGFiYXNlIHsKICAgICAgICAgICAgICAgIHRlbmFudFBlcnNpc3RlbmNlIC0+IGRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2ViQXBwID0gY29udGFpbmVyICJXZWIgQXBwbGljYXRpb24iICJBY2NvdW50ICYgZGF0YSBjYXB0dXJlIGZyb250ZW5kIiAiQXNwLk5ldCBDb3JlIE1WQyIgV2ViQXBwIHsKICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgPSBjb21wb25lbnQgIk1WQyBDb250cm9sbGVyIiAiRW5hYmxlcyB3ZWIgdXNlcnMgdG8gcGVyZm9ybSB0YXNrcy4iICJBc3AuTmV0IENvcmUgTVZDIENvbnRyb2xsZXIiCgogICAgICAgICAgICAgICAgdGVuYW50Q2xpZW50ID0gY29tcG9uZW50ICJUZW5hbnQgQ2xpZW50IiAiTWFrZXMgQVBJIGNhbGxzIHRvIHRoZSBUZW5hbnQgQVBJIiAibGlicmFyeSIKICAgICAgICAgICAgICAgIHBlcnNvbkNsaWVudCA9IGNvbXBvbmVudCAiUGVyc29uIENsaWVudCIgIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgUGVyc29uIEFQSSIgImxpYnJhcnkiCiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25DbGllbnQgPSBjb21wb25lbnQgIk9yZ2FuaXNhdGlvbiBDbGllbnQiICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIE9yZ2FuaXNhdGlvbiBBUEkiICJsaWJyYXJ5IgogICAgICAgICAgICAgICAgZm9ybXNDbGllbnQgPSBjb21wb25lbnQgIkZvcm1zIENsaWVudCIgIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgRm9ybXMgQVBJIiAibGlicmFyeSIKICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQ2xpZW50ID0gY29tcG9uZW50ICJEYXRhIFNoYXJpbmcgQ2xpZW50IiAiTWFrZXMgQVBJIGNhbGxzIHRvIHRoZSBEYXRhIFNoYXJpbmcgQVBJIiAibGlicmFyeSIKCiAgICAgICAgICAgICAgICBzdXBwbGllciAtPiBtdmNDb250cm9sbGVyICJVc2VzIiAiSFRUUFMiCgogICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBvbmVMb2dpbiAiQXV0aGVudGljYXRlcyB3aXRoIiAiSFRUUFMiCiAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IHRva2VuRW5kcG9pbnQgIkF1dGhlbnRpY2F0ZXMgYW5kIGF1dGhvcmlzZXMgd2l0aCIgIkhUVFBTIgogICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiB0ZW5hbnRDbGllbnQgIlVzZXMiCiAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IHBlcnNvbkNsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gb3JnYW5pc2F0aW9uQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBmb3Jtc0NsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gZGF0YVNoYXJpbmdDbGllbnQgIlVzZXMiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHBlcnNvbkFwaSAtPiBkYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICBvcmdhbmlzYXRpb25BcGkgLT4gZGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgZm9ybXNBcGkgLT4gZGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgZGF0YVNoYXJpbmdBcGkgLT4gZGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKCiAgICAgICAgICAgIHRlbmFudENsaWVudCAtPiB0ZW5hbnRFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICBwZXJzb25DbGllbnQgLT4gcGVyc29uRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgb3JnYW5pc2F0aW9uQ2xpZW50IC0+IG9yZ2FuaXNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgICAgIGZvcm1zQ2xpZW50IC0+IGZvcm1zRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgZGF0YVNoYXJpbmdDbGllbnQgLT4gZGF0YVNoYXJpbmdFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICBlU2VuZGVyIC0+IGRhdGFTaGFyaW5nRW5kcG9pbnQgIkxvb2tzIHVwIHN1cHBsaWVyIGluZm9ybWF0aW9uIiAiSFRUUFMvanNvbiIKICAgICAgICB9CgogICAgICAgIGJ1eWVyIC0+IGVTZW5kZXIgIlVzZXMiCgogICAgICAgIGZ0cyAtPiBvbmVMb2dpbiAiQXV0aGVudGljYXRlcyB3aXRoIgogICAgICAgIGZ0cyAtPiB0b2tlbkVuZHBvaW50ICJBdXRob3JpemVzIHdpdGgiCiAgICAgICAgZnRzIC0+IG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIE9wZW5JRCBjb25maWd1cmF0aW9uIGZyb20iCiAgICAgICAgZnRzIC0+IG9wZW5JZEp3a3NDb25maWd1cmF0aW9uRW5kcG9pbnQgIlJldHJpZXZlcyBKc29uIFdlYiBLZXkgU2V0IGZyb20iCiAgICAgICAgd2ViQXBwIC0+IG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIE9wZW5JRCBjb25maWd1cmF0aW9uIGZyb20iCiAgICAgICAgd2ViQXBwIC0+IG9wZW5JZEp3a3NDb25maWd1cmF0aW9uRW5kcG9pbnQgIlJldHJpZXZlcyBKc29uIFdlYiBLZXkgU2V0IGZyb20iCiAgICAgICAgY2ZzIC0+IGF1dGhvcml0eSAiQXV0aG9yaXplcyB3aXRoIgogICAgICAgIHBwZyAtPiBhdXRob3JpdHkgIkF1dGhvcml6ZXMgd2l0aCIKICAgIH0KCiAgICB2aWV3cyB7CiAgICAgICAgc3lzdGVtQ29udGV4dCBjZHAgIkNEUC0xLVN5c3RlbUNvbnRleHQiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgc3lzdGVtIGNvbnRleHQgZGlhZ3JhbSBmb3IgdGhlIENlbnRyYWwgRGlnaXRhbCBQbGF0Zm9ybS4iCiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBjZHAgIkNEUC0yLUNvbnRhaW5lclZpZXciIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29udGFpbmVyIGRpYWdyYW0gZm9yIHRoZSBDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0uIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgYXV0aG9yaXR5ICJDRFAtMy1BdXRob3JpdHktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIEF1dGhvcml0eSBzZXJ2aWNlLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IHdlYkFwcCAiQ0RQLTMtV2ViQXBwLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBXZWIgQXBwbGljYXRpb24uIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgdGVuYW50QXBpICJDRFAtNC1UZW5hbnRBcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFRlbmFudCBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgcGVyc29uQXBpICJDRFAtNS1QZXJzb25BcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFBlcnNvbiBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgb3JnYW5pc2F0aW9uQXBpICJDRFAtNi1PcmdhbmlzYXRpb25BcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIE9yZ2FuaXNhdGlvbiBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgZm9ybXNBcGkgIkNEUC03LUZvcm1zQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBGb3JtcyBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgZGF0YVNoYXJpbmdBcGkgIkNEUC04LURhdGFTaGFyaW5nQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBEYXRhIFNoYXJpbmcgQVBJLiIKICAgICAgICB9CiAgICAgICAgdGhlbWUgZGVmYXVsdAogICAgICAgIHN0eWxlcyB7CiAgICAgICAgICAgIGVsZW1lbnQgRGF0YWJhc2UgewogICAgICAgICAgICAgICAgc2hhcGUgQ3lsaW5kZXIKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50IFdlYkFwcCB7CiAgICAgICAgICAgICAgICBzaGFwZSBXZWJCcm93c2VyCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY29uZmlndXJhdGlvbiB7CiAgICAgICAgc2NvcGUgc29mdHdhcmVzeXN0ZW0KICAgIH0KCn0K"
+ "structurizr.dsl" : "d29ya3NwYWNlICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iIHsKCiAgICAhaWRlbnRpZmllcnMgaGllcmFyY2hpY2FsCgogICAgbW9kZWwgewogICAgICAgIHN1cHBsaWVyID0gcGVyc29uICJTdXBwbGllciIKICAgICAgICBidXllciA9IHBlcnNvbiAiQnV5ZXIiCiAgICAgICAgZVNlbmRlciA9IHNvZnR3YXJlU3lzdGVtICJlU2VuZGVyIiAiQ29tbWVyY2lhbCBTb2Z0d2FyZSB0aGF0IEJ1eWVycyB1c2UgdG8gbWFuYWdlIHRlbmRlciBwcm9jZXNzZXMiCiAgICAgICAgb25lTG9naW4gPSBzb2Z0d2FyZVN5c3RlbSAiR292LnVrIE9uZSBMb2dpbiIgIkxldCB1c2VycyBzaWduIGluIGFuZCBwcm92ZSB0aGVpciBpZGVudGl0aWVzIHRvIHVzZSB5b3VyIHNlcnZpY2UiCiAgICAgICAgZ292Tm90aWZ5ID0gc29mdHdhcmVTeXN0ZW0gIkdvdi51ayBOb3RpZnkiICJTZW5kcyBlbWFpbHMsIHRleHQgbWVzc2FnZXMgYW5kIGxldHRlcnMiCiAgICAgICAgY29tcGFuaWVzSG91c2UgPSBzb2Z0d2FyZVN5c3RlbSAiQ29tcGFuaWVzIEhvdXNlIiAiUHJvdmlkZXMgcmVnaXN0ZXJlZCBjb21wYW55IGRldGFpbHMiCiAgICAgICAgZnRzID0gc29mdHdhcmVTeXN0ZW0gIkZpbmQgYSBUZW5kZXIiCiAgICAgICAgY2ZzID0gc29mdHdhcmVTeXN0ZW0gIlN1cHBsaWVyIEluZm9ybWF0aW9uIGFuZCBDb250cmFjdHMgRmluZGVyIgogICAgICAgIHBwZyA9IHNvZnR3YXJlU3lzdGVtICJQdWJsaWMgUHJvY3VyZW1lbnQgR2F0ZXdheSIKICAgICAgICBjZHAgPSBzb2Z0d2FyZVN5c3RlbSAiQ2VudHJhbCBEaWdpdGFsIFBsYXRmb3JtIiAiU3VwcG9ydHMgcHJvY3VyZW1lbnQiIHsKCiAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZSA9IGNvbnRhaW5lciAiTWVzc2FnZSBRdWV1ZSIgIiIgU1FTICJNZXNzYWdlIFF1ZXVlIiB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGdyb3VwICJFbnRpdHkgVmVyaWZpY2F0aW9uIiB7CiAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25EYXRhYmFzZSA9IGNvbnRhaW5lciAiRW50aXR5IFZlcmlmaWNhdGlvbiBEYXRhYmFzZSIgIiIgUG9zdGdyZVNRTCBEYXRhYmFzZSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb24gPSBjb250YWluZXIgIkVudGl0eSBWZXJpZmljYXRpb24iICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uRW5kcG9pbnQgPSBjb21wb25lbnQgIkVudGl0eSBWZXJpZmljYXRpb24gRW5kcG9pbnQiICJRdWVyaWVzIGtub3duIGlkZW50aWZlcnMuIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uVXNlQ2FzZSA9IGNvbXBvbmVudCAiVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uVXNlQ2FzZSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICAtPiBlbnRpdHlWZXJpZmljYXRpb25EYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBncm91cCAiT3JnYW5pc2F0aW9uIEluZm9ybWF0aW9uIiB7CiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlID0gY29udGFpbmVyICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24gRGF0YWJhc2UiICIiIFBvc3RncmVTUUwgRGF0YWJhc2UgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmlsZVN0b3JhZ2UgPSBjb250YWluZXIgIkZpbGUgU3RvcmFnZSIgIiIgUzMgIkZpbGUgU3RvcmFnZSIgewogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IGNvbnRhaW5lciAiQXV0aG9yaXR5IiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3BlbklEIFdlbGwtS25vd24gQ29uZmlndXJhdGlvbiBFbmRwb2ludCIgIkV4cG9zZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24iICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICBvcGVuSWRKd2tzQ29uZmlndXJhdGlvbkVuZHBvaW50ID0gY29tcG9uZW50ICJPcGVuSUQgV2VsbC1Lbm93biBKV0tTIENvbmZpZ3VyYXRpb24gRW5kcG9pbnQiICJFeHBvc2VzIEpzb24gV2ViIEtleSBTZXQiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB0b2tlbkVuZHBvaW50ID0gY29tcG9uZW50ICJUb2tlbiBlbmRwb2ludCIgIkV4Y2hhbmdlcyBhIHZhbGlkIE9uZSBMb2dpbiB0b2tlbiB0byBhIGxvbmdlci1saXZlZCB0b2tlbiB3aXRoIGFkZGl0aW9uYWwgY2xhaW1zLiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRlbmFudEFwaSA9IGNvbnRhaW5lciAiVGVuYW50IEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRFbmRwb2ludCA9IGNvbXBvbmVudCAiVGVuYW50IEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJUZW5hbnRVc2VDYXNlID0gY29tcG9uZW50ICJSZWdpc3RlciBUZW5hbnQgVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgZ2V0VGVuYW50VXNlQ2FzZSA9IGNvbXBvbmVudCAiR2V0IFRlbmFudCBVc2UgQ2FzZSIKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRQZXJzaXN0ZW5jZSA9IGNvbXBvbmVudCAiUGVyc2lzdGVuY2UiICIiICJQcm9qZWN0IgogICAgICAgICAgICAgICAgICAgIHRlbmFudEVuZHBvaW50IC0+IHJlZ2lzdGVyVGVuYW50VXNlQ2FzZSAiRXhlY3V0ZXMiCiAgICAgICAgICAgICAgICAgICAgdGVuYW50RW5kcG9pbnQgLT4gZ2V0VGVuYW50VXNlQ2FzZSAiRXhlY3V0ZXMiCiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJUZW5hbnRVc2VDYXNlIC0+IHRlbmFudFBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICBnZXRUZW5hbnRVc2VDYXNlIC0+IHRlbmFudFBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRQZXJzaXN0ZW5jZSAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwZXJzb25BcGkgPSBjb250YWluZXIgIlBlcnNvbiBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgcGVyc29uRW5kcG9pbnQgPSBjb21wb25lbnQgIlBlcnNvbiBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkFwaSA9IGNvbnRhaW5lciAiT3JnYW5pc2F0aW9uIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSA9IGNvbXBvbmVudCAiVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IGdvdk5vdGlmeSAic2VuZHMgbm90aWZpY2F0aW9ucyB3aXRoIiAiSFRUUFMiCiAgICAgICAgICAgICAgICAgICAgLT4gb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25EYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9ybXNBcGkgPSBjb250YWluZXIgIkZvcm1zIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBmb3Jtc0VuZHBvaW50ID0gY29tcG9uZW50ICJGb3JtcyBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gZmlsZVN0b3JhZ2UgIndyaXRlcyB0byIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQXBpID0gY29udGFpbmVyICJEYXRhIFNoYXJpbmcgQVBJIiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nRW5kcG9pbnQgPSBjb21wb25lbnQgIkRhdGEgU2hhcmluZyBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gZmlsZVN0b3JhZ2UgIndyaXRlcyB0byAvIHJlYWRzIGZyb20iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3ZWJBcHAgPSBjb250YWluZXIgIldlYiBBcHBsaWNhdGlvbiIgIkFjY291bnQgJiBkYXRhIGNhcHR1cmUgZnJvbnRlbmQiICJBc3AuTmV0IENvcmUgTVZDIiBXZWJBcHAgewogICAgICAgICAgICAgICAgICAgIGdyb3VwICJMaWJyYXJpZXMiIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVuYW50Q2xpZW50ID0gY29tcG9uZW50ICJUZW5hbnQgQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgVGVuYW50IEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uQ2xpZW50ID0gY29tcG9uZW50ICJQZXJzb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgUGVyc29uIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uQ2xpZW50ID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgT3JnYW5pc2F0aW9uIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybXNDbGllbnQgPSBjb21wb25lbnQgIkZvcm1zIENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIEZvcm1zIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNoYXJpbmdDbGllbnQgPSBjb21wb25lbnQgIkRhdGEgU2hhcmluZyBDbGllbnQiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFrZXMgQVBJIGNhbGxzIHRvIHRoZSBEYXRhIFNoYXJpbmcgQVBJIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25DbGllbnQgPSBjb21wb25lbnQgIkVudGl0eSBWZXJpZmljYXRpb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgRW50aXR5IFZlcmlmaWNhdGlvbiBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyID0gY29tcG9uZW50ICJNVkMgQ29udHJvbGxlciIgIkVuYWJsZXMgd2ViIHVzZXJzIHRvIHBlcmZvcm0gdGFza3MuIiAiQXNwLk5ldCBDb3JlIE1WQyBDb250cm9sbGVyIgoKICAgICAgICAgICAgICAgICAgICBzdXBwbGllciAtPiBtdmNDb250cm9sbGVyICJVc2VzIiAiSFRUUFMiCiAgICAgICAgICAgICAgICAgICAgYnV5ZXIgLT4gbXZjQ29udHJvbGxlciAiVXNlcyIgIkhUVFBTIgoKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IG9uZUxvZ2luICJBdXRoZW50aWNhdGVzIHdpdGgiICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGNvbXBhbmllc0hvdXNlICJQdWxscyBjb21wYW55IGRldGFpbHMgZnJvbSIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gYXV0aG9yaXR5LnRva2VuRW5kcG9pbnQgIkF1dGhlbnRpY2F0ZXMgYW5kIGF1dGhvcmlzZXMgd2l0aCIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gdGVuYW50Q2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gcGVyc29uQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gb3JnYW5pc2F0aW9uQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gZm9ybXNDbGllbnQgIlVzZXMiCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBkYXRhU2hhcmluZ0NsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGVudGl0eVZlcmlmaWNhdGlvbkNsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGZpbGVTdG9yYWdlICJ3cml0ZXMgdG8iICJIVFRQUyIKCiAgICAgICAgICAgICAgICAgICAgdGVuYW50Q2xpZW50IC0+IHRlbmFudEFwaS50ZW5hbnRFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICAgICAgICAgIHBlcnNvbkNsaWVudCAtPiBwZXJzb25BcGkucGVyc29uRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25DbGllbnQgLT4gb3JnYW5pc2F0aW9uQXBpLm9yZ2FuaXNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgICAgICAgICAgICAgZm9ybXNDbGllbnQgLT4gZm9ybXNBcGkuZm9ybXNFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQ2xpZW50IC0+IGRhdGFTaGFyaW5nQXBpLmRhdGFTaGFyaW5nRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25DbGllbnQgLT4gZW50aXR5VmVyaWZpY2F0aW9uLmVudGl0eVZlcmlmaWNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCgogICAgICAgICAgICAgICAgICAgIC0+IGNkcC5hdXRob3JpdHkub3BlbklkQ29uZmlndXJhdGlvbkVuZHBvaW50ICJSZXRyaWV2ZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24gZnJvbSIKICAgICAgICAgICAgICAgICAgICAtPiBjZHAuYXV0aG9yaXR5Lm9wZW5JZEp3a3NDb25maWd1cmF0aW9uRW5kcG9pbnQgIlJldHJpZXZlcyBKc29uIFdlYiBLZXkgU2V0IGZyb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVTZW5kZXIgLT4gZGF0YVNoYXJpbmdBcGkuZGF0YVNoYXJpbmdFbmRwb2ludCAiTG9va3MgdXAgc3VwcGxpZXIgaW5mb3JtYXRpb24iICJIVFRQUy9qc29uIgogICAgICAgIH0KCiAgICAgICAgYnV5ZXIgLT4gZVNlbmRlciAiVXNlcyIKCiAgICAgICAgZnRzIC0+IG9uZUxvZ2luICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICAgICAgZnRzIC0+IGNkcC5hdXRob3JpdHkudG9rZW5FbmRwb2ludCAiQXV0aGVudGljYXRlcyB3aXRoIgogICAgICAgIGZ0cyAtPiBjZHAuYXV0aG9yaXR5Lm9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIE9wZW5JRCBjb25maWd1cmF0aW9uIGZyb20iCiAgICAgICAgZnRzIC0+IGNkcC5hdXRob3JpdHkub3BlbklkSndrc0NvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIEpzb24gV2ViIEtleSBTZXQgZnJvbSIKICAgICAgICBmdHMgLT4gY2RwLm9yZ2FuaXNhdGlvbkFwaS5vcmdhbmlzYXRpb25FbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgIGNmcyAtPiBjZHAuYXV0aG9yaXR5ICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICAgICAgcHBnIC0+IGNkcC5hdXRob3JpdHkgIkF1dGhlbnRpY2F0ZXMgd2l0aCIKICAgIH0KCiAgICB2aWV3cyB7CiAgICAgICAgc3lzdGVtQ29udGV4dCBjZHAgIkNEUC0xLVN5c3RlbUNvbnRleHQiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgc3lzdGVtIGNvbnRleHQgZGlhZ3JhbSBmb3IgdGhlIENlbnRyYWwgRGlnaXRhbCBQbGF0Zm9ybS4iCiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBjZHAgIkNEUC0yLUNvbnRhaW5lclZpZXciIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29udGFpbmVyIGRpYWdyYW0gZm9yIHRoZSBDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0uIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLmF1dGhvcml0eSAiQ0RQLTMtQXV0aG9yaXR5LUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBBdXRob3JpdHkgc2VydmljZS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAud2ViQXBwICJDRFAtMy1XZWJBcHAtQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFdlYiBBcHBsaWNhdGlvbi4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAudGVuYW50QXBpICJDRFAtNC1UZW5hbnRBcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFRlbmFudCBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLnBlcnNvbkFwaSAiQ0RQLTUtUGVyc29uQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBQZXJzb24gQVBJLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC5vcmdhbmlzYXRpb25BcGkgIkNEUC02LU9yZ2FuaXNhdGlvbkFwaS1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgT3JnYW5pc2F0aW9uIEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuZm9ybXNBcGkgIkNEUC03LUZvcm1zQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBGb3JtcyBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLmRhdGFTaGFyaW5nQXBpICJDRFAtOC1EYXRhU2hhcmluZ0FwaS1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgRGF0YSBTaGFyaW5nIEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuZW50aXR5VmVyaWZpY2F0aW9uICJDRFAtOS1FbnRpdHlWZXJpZmljYXRpb24tQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIEVudGl0eSBWZXJpZmljYXRpb24uIgogICAgICAgIH0KICAgICAgICB0aGVtZSBkZWZhdWx0CiAgICAgICAgc3R5bGVzIHsKICAgICAgICAgICAgZWxlbWVudCBEYXRhYmFzZSB7CiAgICAgICAgICAgICAgICBzaGFwZSBDeWxpbmRlcgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIk1lc3NhZ2UgUXVldWUiIHsKICAgICAgICAgICAgICAgIHNoYXBlIFBpcGUKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50ICJGaWxlIFN0b3JhZ2UiIHsKICAgICAgICAgICAgICAgIHNoYXBlIEZvbGRlcgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgV2ViQXBwIHsKICAgICAgICAgICAgICAgIHNoYXBlIFdlYkJyb3dzZXIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb25maWd1cmF0aW9uIHsKICAgICAgICBzY29wZSBzb2Z0d2FyZXN5c3RlbQogICAgfQoKfQ=="
},
"views" : {
"componentViews" : [ {
- "containerId" : "9",
+ "containerId" : "21",
"description" : "The component diagram for the Authority service.",
"dimensions" : {
"height" : 1748,
"width" : 2480
},
"elements" : [ {
- "id" : "5",
+ "id" : "7",
"x" : 1145,
"y" : 1285
}, {
- "id" : "10",
+ "id" : "22",
"x" : 1145,
"y" : 655
}, {
- "id" : "11",
+ "id" : "23",
"x" : 1770,
"y" : 655
}, {
- "id" : "12",
+ "id" : "24",
"x" : 500,
"y" : 655
}, {
- "id" : "33",
+ "id" : "61",
"x" : 1145,
"y" : 50
} ],
@@ -886,146 +1254,182 @@
"order" : 3,
"paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "48"
+ "id" : "117"
}, {
- "id" : "84"
+ "id" : "118"
}, {
- "id" : "87"
+ "id" : "124"
}, {
- "id" : "88"
+ "id" : "127"
}, {
- "id" : "89"
+ "id" : "128"
}, {
- "id" : "90"
+ "id" : "83"
} ]
}, {
- "containerId" : "33",
+ "containerId" : "61",
"description" : "The component diagram for the Web Application.",
"dimensions" : {
- "height" : 3508,
- "width" : 4961
+ "height" : 3121,
+ "width" : 5805
},
"elements" : [ {
"id" : "1",
- "x" : 2420,
- "y" : 45
+ "x" : 2264,
+ "y" : 200
+ }, {
+ "id" : "2",
+ "x" : 2774,
+ "y" : 200
}, {
"id" : "4",
- "x" : 120,
- "y" : 705
+ "x" : 199,
+ "y" : 875
}, {
- "id" : "9",
- "x" : 4390,
- "y" : 670
+ "id" : "6",
+ "x" : 200,
+ "y" : 1196
}, {
"id" : "13",
- "x" : 960,
- "y" : 1900
+ "x" : 4493,
+ "y" : 2085
}, {
- "id" : "22",
- "x" : 1670,
- "y" : 1900
+ "id" : "20",
+ "x" : 3125,
+ "y" : 2621
}, {
- "id" : "24",
- "x" : 2395,
- "y" : 1900
+ "id" : "21",
+ "x" : 5154,
+ "y" : 865
}, {
"id" : "26",
- "x" : 3100,
- "y" : 1900
+ "x" : 1038,
+ "y" : 2086
}, {
- "id" : "28",
- "x" : 3795,
- "y" : 1900
+ "id" : "37",
+ "x" : 1729,
+ "y" : 2087
}, {
- "id" : "34",
- "x" : 2395,
- "y" : 680
+ "id" : "40",
+ "x" : 2420,
+ "y" : 2088
}, {
- "id" : "35",
- "x" : 960,
- "y" : 1305
+ "id" : "49",
+ "x" : 3111,
+ "y" : 2089
}, {
- "id" : "36",
- "x" : 1670,
- "y" : 1305
+ "id" : "55",
+ "x" : 3802,
+ "y" : 2094
}, {
- "id" : "37",
- "x" : 2395,
- "y" : 1305
+ "id" : "62",
+ "x" : 1038,
+ "y" : 1495
}, {
- "id" : "38",
- "x" : 3100,
- "y" : 1305
+ "id" : "63",
+ "x" : 1726,
+ "y" : 1495
}, {
- "id" : "39",
- "x" : 3795,
- "y" : 1305
+ "id" : "64",
+ "x" : 2414,
+ "y" : 1495
+ }, {
+ "id" : "65",
+ "x" : 3102,
+ "y" : 1495
+ }, {
+ "id" : "66",
+ "x" : 3790,
+ "y" : 1499
+ }, {
+ "id" : "67",
+ "x" : 4478,
+ "y" : 1495
+ }, {
+ "id" : "68",
+ "x" : 2473,
+ "y" : 874
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-3-WebApp-Components",
"order" : 4,
- "paperSize" : "A3_Landscape",
"relationships" : [ {
- "id" : "40",
- "vertices" : [ {
- "x" : 2610,
- "y" : 550
- } ]
+ "id" : "102"
}, {
- "id" : "43"
+ "id" : "106"
}, {
- "id" : "47"
+ "id" : "110"
}, {
- "id" : "50"
+ "id" : "114"
}, {
- "id" : "51"
+ "id" : "53"
}, {
- "id" : "52"
+ "id" : "59"
}, {
- "id" : "53"
+ "id" : "69"
}, {
- "id" : "54"
+ "id" : "72"
}, {
- "id" : "60"
+ "id" : "75"
}, {
- "id" : "64"
+ "id" : "78"
}, {
- "id" : "68"
+ "id" : "82"
}, {
- "id" : "72"
+ "id" : "85"
}, {
- "id" : "76"
+ "id" : "86"
+ }, {
+ "id" : "87"
+ }, {
+ "id" : "88"
+ }, {
+ "id" : "89"
+ }, {
+ "id" : "90"
+ }, {
+ "id" : "91",
+ "vertices" : [ {
+ "x" : 2985,
+ "y" : 1426
+ }, {
+ "x" : 3010,
+ "y" : 2481
+ } ]
+ }, {
+ "id" : "94"
+ }, {
+ "id" : "98"
} ]
}, {
- "containerId" : "13",
+ "containerId" : "26",
"description" : "The component diagram for the Tenant API.",
"dimensions" : {
"height" : 1748,
"width" : 2480
},
"elements" : [ {
- "id" : "14",
+ "id" : "19",
+ "x" : 1365,
+ "y" : 1180
+ }, {
+ "id" : "27",
"x" : 735,
"y" : 90
}, {
- "id" : "15",
+ "id" : "28",
"x" : 745,
"y" : 635
}, {
- "id" : "16",
+ "id" : "29",
"x" : 1355,
"y" : 85
}, {
- "id" : "17",
+ "id" : "30",
"x" : 1355,
"y" : 635
}, {
- "id" : "30",
- "x" : 1365,
- "y" : 1180
- }, {
- "id" : "33",
+ "id" : "61",
"x" : 50,
"y" : 90
} ],
@@ -1034,31 +1438,31 @@
"order" : 5,
"paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "18"
+ "id" : "31"
}, {
- "id" : "19"
+ "id" : "32"
}, {
- "id" : "20"
+ "id" : "33"
}, {
- "id" : "21"
+ "id" : "34"
}, {
- "id" : "31"
+ "id" : "35"
}, {
- "id" : "61"
+ "id" : "95"
} ]
}, {
- "containerId" : "22",
+ "containerId" : "37",
"description" : "The component diagram for the Person API.",
"dimensions" : {
"height" : 1748,
"width" : 2480
},
"elements" : [ {
- "id" : "23",
+ "id" : "38",
"x" : 750,
"y" : 35
}, {
- "id" : "33",
+ "id" : "61",
"x" : 55,
"y" : 35
} ],
@@ -1067,44 +1471,73 @@
"order" : 6,
"paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "65"
+ "id" : "99"
} ]
}, {
- "containerId" : "24",
+ "containerId" : "40",
"description" : "The component diagram for the Organisation API.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 1900,
+ "width" : 2870
},
"elements" : [ {
- "id" : "25",
- "x" : 720,
- "y" : 55
+ "id" : "5",
+ "x" : 2220,
+ "y" : 219
}, {
- "id" : "33",
- "x" : 55,
- "y" : 55
+ "id" : "7",
+ "x" : 200,
+ "y" : 645
+ }, {
+ "id" : "11",
+ "x" : 1490,
+ "y" : 920
+ }, {
+ "id" : "41",
+ "x" : 865,
+ "y" : 224
+ }, {
+ "id" : "42",
+ "x" : 1480,
+ "y" : 219
+ }, {
+ "id" : "61",
+ "x" : 200,
+ "y" : 230
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-6-OrganisationApi-Components",
"order" : 7,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "69"
+ "id" : "103"
+ }, {
+ "id" : "129"
+ }, {
+ "id" : "43"
+ }, {
+ "id" : "45"
} ]
}, {
- "containerId" : "26",
+ "containerId" : "49",
"description" : "The component diagram for the Forms API.",
"dimensions" : {
"height" : 1748,
"width" : 2480
},
"elements" : [ {
- "id" : "27",
+ "id" : "20",
+ "x" : 0,
+ "y" : 0
+ }, {
+ "id" : "50",
"x" : 690,
"y" : 45
}, {
- "id" : "33",
+ "id" : "51",
+ "x" : 0,
+ "y" : 0
+ }, {
+ "id" : "61",
"x" : 40,
"y" : 45
} ],
@@ -1113,10 +1546,14 @@
"order" : 8,
"paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "73"
+ "id" : "107"
+ }, {
+ "id" : "52"
+ }, {
+ "id" : "92"
} ]
}, {
- "containerId" : "28",
+ "containerId" : "55",
"description" : "The component diagram for the Data Sharing API.",
"dimensions" : {
"height" : 1748,
@@ -1127,11 +1564,19 @@
"x" : 685,
"y" : 30
}, {
- "id" : "29",
+ "id" : "20",
+ "x" : 0,
+ "y" : 0
+ }, {
+ "id" : "56",
"x" : 685,
"y" : 530
}, {
- "id" : "33",
+ "id" : "57",
+ "x" : 0,
+ "y" : 0
+ }, {
+ "id" : "61",
"x" : 40,
"y" : 530
} ],
@@ -1140,18 +1585,62 @@
"order" : 9,
"paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "77"
+ "id" : "111"
}, {
- "id" : "79"
+ "id" : "119"
+ }, {
+ "id" : "58"
+ }, {
+ "id" : "92"
+ } ]
+ }, {
+ "containerId" : "13",
+ "description" : "The component diagram for the Entity Verification.",
+ "dimensions" : {
+ "height" : 1748,
+ "width" : 2480
+ },
+ "elements" : [ {
+ "id" : "11",
+ "x" : 1620,
+ "y" : 910
+ }, {
+ "id" : "14",
+ "x" : 875,
+ "y" : 200
+ }, {
+ "id" : "15",
+ "x" : 1585,
+ "y" : 205
+ }, {
+ "id" : "61",
+ "x" : 55,
+ "y" : 200
+ } ],
+ "externalContainerBoundariesVisible" : false,
+ "key" : "CDP-9-EntityVerification-Components",
+ "order" : 10,
+ "paperSize" : "A5_Landscape",
+ "relationships" : [ {
+ "id" : "115"
+ }, {
+ "id" : "16"
} ]
} ],
"configuration" : {
"branding" : { },
- "lastSavedView" : "CDP-1-SystemContext",
+ "lastSavedView" : "CDP-3-WebApp-Components",
+ "metadataSymbols" : "SquareBrackets",
"styles" : {
"elements" : [ {
"shape" : "Cylinder",
"tag" : "Database"
+ }, {
+ "shape" : "Pipe",
+ "tag" : "Message Queue"
+ }, {
+ "shape" : "Folder",
+ "tag" : "File Storage"
}, {
"shape" : "WebBrowser",
"tag" : "WebApp"
@@ -1163,166 +1652,240 @@
"containerViews" : [ {
"description" : "The container diagram for the Central Digital Platform.",
"dimensions" : {
- "height" : 2176,
- "width" : 4330
+ "height" : 4033,
+ "width" : 5026
},
"elements" : [ {
"id" : "1",
- "x" : 224,
+ "x" : 228,
"y" : 199
+ }, {
+ "id" : "2",
+ "x" : 228,
+ "y" : 774
}, {
"id" : "3",
- "x" : 190,
- "y" : 995
+ "x" : 199,
+ "y" : 1785
}, {
"id" : "4",
- "x" : 3845,
- "y" : 240
+ "x" : 2038,
+ "y" : 110
}, {
"id" : "5",
- "x" : 3845,
- "y" : 580
+ "x" : 3135,
+ "y" : 3532
}, {
"id" : "6",
- "x" : 3845,
- "y" : 1217
+ "x" : 1515,
+ "y" : 110
}, {
"id" : "7",
- "x" : 3845,
- "y" : 898
+ "x" : 3105,
+ "y" : 110
+ }, {
+ "id" : "8",
+ "x" : 4118,
+ "y" : 110
}, {
"id" : "9",
- "x" : 3075,
- "y" : 590
+ "x" : 3615,
+ "y" : 110
+ }, {
+ "id" : "11",
+ "x" : 3720,
+ "y" : 3055
+ }, {
+ "id" : "12",
+ "x" : 4325,
+ "y" : 2590
}, {
"id" : "13",
- "x" : 1530,
- "y" : 1015
+ "x" : 4335,
+ "y" : 1797
}, {
- "id" : "22",
- "x" : 2555,
- "y" : 1015
+ "id" : "19",
+ "x" : 2072,
+ "y" : 2590
}, {
- "id" : "24",
- "x" : 3085,
- "y" : 1015
+ "id" : "20",
+ "x" : 1020,
+ "y" : 1135
+ }, {
+ "id" : "21",
+ "x" : 3645,
+ "y" : 1797
}, {
"id" : "26",
- "x" : 2055,
- "y" : 1015
+ "x" : 2069,
+ "y" : 1787
}, {
- "id" : "28",
- "x" : 1009,
- "y" : 1015
+ "id" : "37",
+ "x" : 2593,
+ "y" : 1797
}, {
- "id" : "30",
- "x" : 2049,
- "y" : 1584
+ "id" : "40",
+ "x" : 3117,
+ "y" : 1797
}, {
- "id" : "33",
- "x" : 2039,
- "y" : 249
+ "id" : "49",
+ "x" : 1545,
+ "y" : 1782
+ }, {
+ "id" : "55",
+ "x" : 1021,
+ "y" : 1797
+ }, {
+ "id" : "61",
+ "x" : 2055,
+ "y" : 832
} ],
"externalSoftwareSystemBoundariesVisible" : false,
"key" : "CDP-2-ContainerView",
"order" : 2,
"relationships" : [ {
- "id" : "32"
+ "id" : "100"
}, {
- "id" : "41"
+ "id" : "104"
}, {
- "id" : "44"
+ "id" : "108"
}, {
- "id" : "49"
+ "id" : "112"
}, {
- "id" : "55"
+ "id" : "116",
+ "vertices" : [ {
+ "x" : 4348,
+ "y" : 1490
+ } ]
}, {
- "id" : "56"
+ "id" : "120"
}, {
- "id" : "57"
+ "id" : "122"
}, {
- "id" : "58"
+ "id" : "123"
}, {
- "id" : "62",
- "vertices" : [ {
- "x" : 2030,
- "y" : 689
- } ]
+ "id" : "125"
}, {
- "id" : "66"
+ "id" : "130"
}, {
- "id" : "70"
+ "id" : "131"
}, {
- "id" : "74"
+ "id" : "133"
}, {
- "id" : "78"
+ "id" : "17"
}, {
- "id" : "80"
+ "id" : "18"
}, {
- "id" : "83"
+ "id" : "25"
}, {
- "id" : "85"
+ "id" : "36"
+ }, {
+ "id" : "39"
+ }, {
+ "id" : "44"
+ }, {
+ "id" : "46"
+ }, {
+ "id" : "48"
+ }, {
+ "id" : "53"
+ }, {
+ "id" : "54"
}, {
- "id" : "91"
+ "id" : "59"
}, {
- "id" : "93"
+ "id" : "60"
+ }, {
+ "id" : "70"
+ }, {
+ "id" : "73"
+ }, {
+ "id" : "76"
+ }, {
+ "id" : "79"
+ }, {
+ "id" : "84"
+ }, {
+ "id" : "92"
+ }, {
+ "id" : "96"
} ],
- "softwareSystemId" : "8"
+ "softwareSystemId" : "10"
} ],
"systemContextViews" : [ {
"description" : "The system context diagram for the Central Digital Platform.",
"dimensions" : {
- "height" : 2320,
- "width" : 2365
+ "height" : 2120,
+ "width" : 3336
},
"elements" : [ {
"id" : "1",
- "x" : 1630,
- "y" : 305
+ "x" : 1535,
+ "y" : 140
+ }, {
+ "id" : "2",
+ "x" : 2705,
+ "y" : 1575
}, {
"id" : "3",
- "x" : 1605,
- "y" : 1725
+ "x" : 1520,
+ "y" : 1620
}, {
"id" : "4",
- "x" : 285,
- "y" : 355
+ "x" : 200,
+ "y" : 250
}, {
"id" : "5",
- "x" : 285,
- "y" : 1055
+ "x" : 2686,
+ "y" : 950
}, {
"id" : "6",
- "x" : 285,
- "y" : 1385
+ "x" : 2685,
+ "y" : 625
}, {
"id" : "7",
- "x" : 285,
- "y" : 1720
+ "x" : 200,
+ "y" : 950
}, {
"id" : "8",
- "x" : 1605,
- "y" : 1078
+ "x" : 200,
+ "y" : 1282
+ }, {
+ "id" : "9",
+ "x" : 200,
+ "y" : 1615
+ }, {
+ "id" : "10",
+ "x" : 1520,
+ "y" : 950
} ],
"enterpriseBoundaryVisible" : true,
"key" : "CDP-1-SystemContext",
"order" : 1,
"relationships" : [ {
- "id" : "42"
+ "id" : "121"
}, {
- "id" : "45"
+ "id" : "122"
}, {
- "id" : "81"
+ "id" : "123"
}, {
- "id" : "83"
+ "id" : "126"
}, {
- "id" : "86"
+ "id" : "132"
}, {
- "id" : "92"
+ "id" : "134"
}, {
- "id" : "94"
+ "id" : "47"
+ }, {
+ "id" : "71"
+ }, {
+ "id" : "74"
+ }, {
+ "id" : "77"
+ }, {
+ "id" : "80"
} ],
- "softwareSystemId" : "8"
+ "softwareSystemId" : "10"
} ]
}
}
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-1-SystemContext-key.svg b/docs/images/diagrams/structurizr-1-CDP-1-SystemContext-key.svg
index 8cea5b693..b3741ab2f 100644
--- a/docs/images/diagrams/structurizr-1-CDP-1-SystemContext-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-1-SystemContext-key.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg b/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg
index d6311f231..ea4a56302 100644
--- a/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg
@@ -1 +1 @@
-
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe system context diagram for the Central Digital Platform.[System Context] Central Digital PlatformSupplier[Person]-Buyer[Person]-eSender[Software System]Commercial Software that Buyersuse to manage tender processesGov.uk One Login[Software System]Let users sign in and prove theiridentities to use your serviceGov.uk Notify[Software System]Sends emails, text messages andlettersCompanies House[Software System]Provides registered companydetailsFind a Tender[Software System]-Supplier Information andContracts Finder[Software System]-Public ProcurementGateway[Software System]-Central Digital Platform[Software System]Supports procurementLooks up supplierinformation[HTTPS/json]Remove link.Link options.UsesRemove link.Link options.AuthenticateswithRemove link.Link options.AuthenticateswithRemove link.Link options.AuthenticateswithRemove link.Link options.AuthenticateswithRemove link.Link options.sendsnotifications with[HTTPS]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Authenticateswith[HTTPS]Remove link.Link options.Pulls companydetails from[HTTPS]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-2-ContainerView-key.svg b/docs/images/diagrams/structurizr-1-CDP-2-ContainerView-key.svg
index b23afdcd4..b07531a44 100644
--- a/docs/images/diagrams/structurizr-1-CDP-2-ContainerView-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-2-ContainerView-key.svg
@@ -1 +1 @@
-ContainerContainer, DatabaseContainer, WebAppPersonSoftware SystemRelationship
\ No newline at end of file
+ContainerContainer, DatabaseContainer, File StorageContainer, MessageQueueContainer, WebAppPersonSoftware SystemRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg b/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg
index a8a1f8c17..3a236cdb1 100644
--- a/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe container diagram for the Central Digital Platform.[Container] Central Digital PlatformSupplier[Person]-eSender[Software System]Commercial Software that Buyersuse to manage tender processesGov.uk One Login[Software System]Let users sign in and prove theiridentities to use your serviceFind a Tender[Software System]-Supplier Information andContracts Finder[Software System]-Public ProcurementGateway[Software System]-Central Digital Platform[Software System]Authority[Container: Asp.Net Core]-Tenant API[Container: Asp.Net Core]-Person API[Container: Asp.Net Core]-Organisation API[Container: Asp.Net Core]-Forms API[Container: Asp.Net Core]-Data Sharing API[Container: Asp.Net Core]-Organisation InformationDatabase[Container: PostgreSQL]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendreads/writes[SQL]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Authenticateswith[HTTPS]Remove link.Link options.Authenticatesand authoriseswith[HTTPS]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.Calls[HTTPS/json]Remove vertex.Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Looks up supplierinformation[HTTPS/json]Remove link.Link options.AuthenticateswithRemove link.Link options.Authorizes withRemove link.Link options.Authorizes withRemove link.Link options.Authorizes withRemove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe container diagram for the Central Digital Platform.[Container] Central Digital PlatformSupplier[Person]-Buyer[Person]-eSender[Software System]Commercial Software that Buyersuse to manage tender processesGov.uk One Login[Software System]Let users sign in and prove theiridentities to use your serviceGov.uk Notify[Software System]Sends emails, text messages andlettersCompanies House[Software System]Provides registered companydetailsFind a Tender[Software System]-Supplier Information andContracts Finder[Software System]-Public ProcurementGateway[Software System]-Central Digital Platform[Software System]Message Queue[Container: SQS]-Entity Verification-Organisation Information-Entity VerificationDatabase[Container: PostgreSQL]-Entity Verification[Container: Asp.Net Core]-Organisation InformationDatabase[Container: PostgreSQL]-File Storage[Container: S3]-Authority[Container: Asp.Net Core]-Tenant API[Container: Asp.Net Core]-Person API[Container: Asp.Net Core]-Organisation API[Container: Asp.Net Core]-Forms API[Container: Asp.Net Core]-Data Sharing API[Container: Asp.Net Core]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove vertex.Remove link.Link options.Looks up supplierinformation[HTTPS/json]Remove link.Link options.UsesRemove link.Link options.AuthenticateswithRemove link.Link options.AuthenticateswithRemove link.Link options.Calls[HTTPS/json]Remove link.Link options.AuthenticateswithRemove link.Link options.AuthenticateswithRemove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.reads/writes[SQL]Remove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.sendsnotifications with[HTTPS]Remove link.Link options.reads/writes[SQL]Remove link.Link options.writes to[HTTPS]Remove link.Link options.reads/writes[SQL]Remove link.Link options.writes to / readsfrom[HTTPS]Remove link.Link options.reads/writes[SQL]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Authenticateswith[HTTPS]Remove link.Link options.Pulls companydetails from[HTTPS]Remove link.Link options.Authenticatesand authoriseswith[HTTPS]Remove link.Link options.writes to[HTTPS]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components-key.svg
index ace8d6ea0..b33fda0ca 100644
--- a/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
+ComponentContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components.svg b/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components.svg
index 731250072..3c10f5bbb 100644
--- a/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-3-Authority-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Authority service.[Component] Central Digital Platform - AuthorityFind a Tender[Software System]-Authority[Container]OpenID Well-KnownConfiguration Endpoint[Component: Asp.Net Core Web API]Exposes OpenID configurationOpenID Well-KnownJWKS ConfigurationEndpoint[Component: Asp.Net Core Web API]Exposes Json Web Key SetToken endpoint[Component: Asp.Net Core Web API]Exchanges a valid One Login tokento a longer-lived token withadditional claims.Web Application[Container: Asp.Net Core MVC]Account & data capture frontendAuthenticatesand authoriseswith[HTTPS]Remove link.Link options.Authorizes withRemove link.Link options.Retrieves OpenIDconfigurationfromRemove link.Link options.Retrieves JsonWeb Key Set fromRemove link.Link options.Retrieves OpenIDconfigurationfromRemove link.Link options.Retrieves JsonWeb Key Set fromRemove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Authority service.[Component] Central Digital Platform - AuthorityFind a Tender[Software System]-Authority[Container]OpenID Well-KnownConfiguration Endpoint[Component: Asp.Net Core Web API]Exposes OpenID configurationOpenID Well-KnownJWKS ConfigurationEndpoint[Component: Asp.Net Core Web API]Exposes Json Web Key SetToken endpoint[Component: Asp.Net Core Web API]Exchanges a valid One Login tokento a longer-lived token withadditional claims.Web Application[Container: Asp.Net Core MVC]Account & data capture frontendRetrieves OpenIDconfigurationfromRemove link.Link options.Retrieves JsonWeb Key Set fromRemove link.Link options.AuthenticateswithRemove link.Link options.Retrieves OpenIDconfigurationfromRemove link.Link options.Retrieves JsonWeb Key Set fromRemove link.Link options.Authenticatesand authoriseswith[HTTPS]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components-key.svg
index 718d85f17..b6dba61df 100644
--- a/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components-key.svg
@@ -1 +1 @@
-ComponentContainerPersonSoftware SystemRelationship
\ No newline at end of file
+ComponentContainerContainer, File StoragePersonSoftware SystemRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components.svg b/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components.svg
index 2de9106e8..5823723ec 100644
--- a/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Web Application.[Component] Central Digital Platform - Web ApplicationSupplier[Person]-Gov.uk One Login[Software System]Let users sign in and prove theiridentities to use your serviceAuthority[Container: Asp.Net Core]-Tenant API[Container: Asp.Net Core]-Person API[Container: Asp.Net Core]-Organisation API[Container: Asp.Net Core]-Forms API[Container: Asp.Net Core]-Data Sharing API[Container: Asp.Net Core]-Web Application[Container]MVC Controller[Component: Asp.Net Core MVC Controller]Enables web users to performtasks.Tenant Client[Component: library]Makes API calls to the Tenant APIPerson Client[Component: library]Makes API calls to the Person APIOrganisation Client[Component: library]Makes API calls to the OrganisationAPIForms Client[Component: library]Makes API calls to the Forms APIData Sharing Client[Component: library]Makes API calls to the Data SharingAPIUses[HTTPS]Remove vertex.Remove link.Link options.Authenticateswith[HTTPS]Remove link.Link options.Authenticatesand authoriseswith[HTTPS]Remove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Web Application.[Component] Central Digital Platform - Web ApplicationSupplier[Person]-Buyer[Person]-Gov.uk One Login[Software System]Let users sign in and prove theiridentities to use your serviceCompanies House[Software System]Provides registered companydetailsEntity Verification[Container: Asp.Net Core]-File Storage[Container: S3]-Authority[Container: Asp.Net Core]-Tenant API[Container: Asp.Net Core]-Person API[Container: Asp.Net Core]-Organisation API[Container: Asp.Net Core]-Forms API[Container: Asp.Net Core]-Data Sharing API[Container: Asp.Net Core]-Web Application[Container]Libraries-MVC Controller[Component: Asp.Net Core MVC Controller]Enables web users to performtasks.Tenant Client[Component: C# project]Makes API calls to the Tenant APIPerson Client[Component: C# project]Makes API calls to the Person APIOrganisation Client[Component: C# project]Makes API calls to the OrganisationAPIForms Client[Component: C# project]Makes API calls to the Forms APIData Sharing Client[Component: C# project]Makes API calls to the Data SharingAPIEntity Verification Client[Component: C# project]Makes API calls to the EntityVerification APICalls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.writes to[HTTPS]Remove link.Link options.writes to / readsfrom[HTTPS]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Uses[HTTPS]Remove link.Link options.Authenticateswith[HTTPS]Remove link.Link options.Pulls companydetails from[HTTPS]Remove link.Link options.Authenticatesand authoriseswith[HTTPS]Remove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.UsesRemove link.Link options.writes to[HTTPS]Remove vertex.Remove vertex.Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components-key.svg
index 73a9f2bf8..e12f4053f 100644
--- a/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, DatabaseContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, DatabaseContainer, WebAppRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components.svg b/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components.svg
index e8b5bafbc..38009e976 100644
--- a/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Tenant API.[Component] Central Digital Platform - Tenant APITenant API[Container]Tenant Endpoint[Component: Asp.Net Core Web API]-Register Tenant Use Case[Component]-Get Tenant Use Case[Component]-Persistence[Component: Project]-Organisation InformationDatabase[Container: PostgreSQL]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendExecutesRemove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Tenant API.[Component] Central Digital Platform - Tenant APIOrganisation InformationDatabase[Container: PostgreSQL]-Tenant API[Container]Tenant Endpoint[Component: Asp.Net Core Web API]-Register Tenant Use Case[Component]-Get Tenant Use Case[Component]-Persistence[Component: Project]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendExecutesRemove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components-key.svg
index 2c66331a7..bb0314579 100644
--- a/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, WebAppRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components.svg b/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components.svg
index 95ddf66a0..e53ffe5c0 100644
--- a/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-5-PersonApi-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Person API.[Component] Central Digital Platform - Person APIPerson API[Container]Person Endpoint[Component: Asp.Net Core Web API]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Person API.[Component] Central Digital Platform - Person APIPerson API[Container]Person Endpoint[Component: Asp.Net Core Web API]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components-key.svg
index 2c66331a7..76169202a 100644
--- a/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, MessageQueueContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components.svg b/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components.svg
index 213331f3e..d0088bbe4 100644
--- a/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-6-OrganisationApi-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Organisation API.[Component] Central Digital Platform - Organisation APIOrganisation API[Container]Organisation Endpoint[Component: Asp.Net Core Web API]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Organisation API.[Component] Central Digital Platform - Organisation APIGov.uk Notify[Software System]Sends emails, text messages andlettersFind a Tender[Software System]-Message Queue[Container: SQS]-Organisation API[Container]Organisation Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.sendsnotifications with[HTTPS]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components-key.svg
index 2c66331a7..bc9fcb7e8 100644
--- a/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, File StorageContainer, WebAppRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components.svg b/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components.svg
index 4810cad56..1426dea59 100644
--- a/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-7-FormsApi-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Forms API.[Component] Central Digital Platform - Forms APIForms API[Container]Forms Endpoint[Component: Asp.Net Core Web API]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Forms API.[Component] Central Digital Platform - Forms APIFile Storage[Container: S3]-Forms API[Container]Forms Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.writes to[HTTPS]Remove link.Link options.writes to[HTTPS]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components-key.svg
index ace8d6ea0..0b69634bb 100644
--- a/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
+ComponentContainer, File StorageContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components.svg b/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components.svg
index 38643ffb1..d03724df6 100644
--- a/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-8-DataSharingApi-Components.svg
@@ -1 +1 @@
-Thursday, 6 June 2024 at 12:24 British Summer TimeThe component diagram for the Data Sharing API.[Component] Central Digital Platform - Data Sharing APIeSender[Software System]Commercial Software that Buyersuse to manage tender processesData Sharing API[Container]Data Sharing Endpoint[Component: Asp.Net Core Web API]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.Looks up supplierinformation[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Data Sharing API.[Component] Central Digital Platform - Data Sharing APIeSender[Software System]Commercial Software that Buyersuse to manage tender processesFile Storage[Container: S3]-Data Sharing API[Container]Data Sharing Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.Looks up supplierinformation[HTTPS/json]Remove link.Link options.writes to / readsfrom[HTTPS]Remove link.Link options.writes to[HTTPS]Remove link.Link options.
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components-key.svg b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components-key.svg
new file mode 100644
index 000000000..3aa8b9fb7
--- /dev/null
+++ b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components-key.svg
@@ -0,0 +1 @@
+ComponentContainer, MessageQueueContainer, WebAppRelationship
\ No newline at end of file
diff --git a/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components.svg b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components.svg
new file mode 100644
index 000000000..c337e2169
--- /dev/null
+++ b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components.svg
@@ -0,0 +1 @@
+Wednesday, 2 October 2024 at 14:29 British Summer TimeThe component diagram for the Entity Verification.[Component] Central Digital Platform - Entity VerificationMessage Queue[Container: SQS]-Entity Verification[Container]Entity VerificationEndpoint[Component: Asp.Net Core Web API]Queries known identifers.Use Case[Component]-Web Application[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.
\ No newline at end of file