diff --git a/docs/diagrams/libraries/govUkNotify.dsl b/docs/diagrams/libraries/govUkNotify.dsl
new file mode 100644
index 000000000..d7a50067a
--- /dev/null
+++ b/docs/diagrams/libraries/govUkNotify.dsl
@@ -0,0 +1,6 @@
+
+govUkNotifyClient = component "Gov.uk Notify" {
+ technology "C# project"
+ description "Gov.uk Notify client"
+ tags "Shared Component"
+}
diff --git a/docs/diagrams/libraries/mq.dsl b/docs/diagrams/libraries/mq.dsl
new file mode 100644
index 000000000..0d8746ce0
--- /dev/null
+++ b/docs/diagrams/libraries/mq.dsl
@@ -0,0 +1,6 @@
+
+mq = component "MQ" {
+ technology "C# project"
+ description "Message Queue client"
+ tags "Shared Component"
+}
diff --git a/docs/diagrams/libraries/organisationInformationPersistence.dsl b/docs/diagrams/libraries/organisationInformationPersistence.dsl
new file mode 100644
index 000000000..4df2d428f
--- /dev/null
+++ b/docs/diagrams/libraries/organisationInformationPersistence.dsl
@@ -0,0 +1,6 @@
+
+organisationInformationPersisence = component "Organisation Information Persistence" {
+ technology "C# project"
+ description "Exposes the database model, queries, and persistence operations with EntityFramework Core"
+ tags "Shared Component"
+}
diff --git a/docs/diagrams/libraries.dsl b/docs/diagrams/libraries/webApiClients.dsl
similarity index 100%
rename from docs/diagrams/libraries.dsl
rename to docs/diagrams/libraries/webApiClients.dsl
diff --git a/docs/diagrams/workspace.dsl b/docs/diagrams/workspace.dsl
index b483c735f..5f974575f 100644
--- a/docs/diagrams/workspace.dsl
+++ b/docs/diagrams/workspace.dsl
@@ -7,7 +7,7 @@ workspace "Central Digital Platform" {
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"
+ govUkNotify = 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"
@@ -21,10 +21,20 @@ workspace "Central Digital Platform" {
entityVerificationDatabase = container "Entity Verification Database" "" PostgreSQL Database {
}
entityVerification = container "Entity Verification" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/mq.dsl"
+ }
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"
+ useCase = component "Use Case"
+ mqSubscriber = component "Message Subscriber"
+ persistence = component "Persistence" "EntityFramework Core model and repositories" "C# Namespace"
+ entityVerificationEndpoint -> useCase "Executes"
+ useCase -> persistence "Calls"
+ mqSubscriber -> persistence "Calls"
+ useCase -> mq "Calls"
+ mq -> messageQueue "publishes to / listens to" "HTTPS"
+ mq -> mqSubscriber "Calls"
+ persistence -> entityVerificationDatabase "reads/writes" "SQL"
}
}
@@ -35,48 +45,81 @@ workspace "Central Digital Platform" {
}
authority = container "Authority" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ }
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"
+ tokenService = component "Token Service" "Creates and validates authentication tokens"
+ tokenEndpoint -> tokenService "Calls"
+ tokenService -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
}
tenantApi = container "Tenant API" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ }
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"
+ useCase = component "Use Case"
+ tenantEndpoint -> useCase "Executes"
+ useCase -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
}
personApi = container "Person API" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ }
personEndpoint = component "Person Endpoint" "" "Asp.Net Core Web API"
- -> organisationInformationDatabase "reads/writes" "SQL"
+ useCase = component "Use Case"
+ personEndpoint -> useCase "Executes"
+ useCase -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
}
organisationApi = container "Organisation API" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ !include "libraries/mq.dsl"
+ !include "libraries/govUkNotify.dsl"
+ }
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"
+ mqSubscriber = component "Message Subscriber"
+ organisationEndpoint -> useCase "Executes"
+ useCase -> organisationInformationPersisence "Calls"
+ useCase -> mq "Calls"
+ useCase -> govUkNotifyClient "Calls"
+ mqSubscriber -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
+ mq -> messageQueue "publishes to / listens to" "HTTPS"
+ mq -> mqSubscriber "Calls"
+ govUkNotifyClient -> govUkNotify "sends notifications with" "HTTPS"
}
formsApi = container "Forms API" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ }
formsEndpoint = component "Forms Endpoint" "" "Asp.Net Core Web API"
useCase = component "Use Case"
+ formsEndpoint -> useCase "Executes"
useCase -> fileStorage "writes to" "HTTPS"
- -> organisationInformationDatabase "reads/writes" "SQL"
+ useCase -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
}
dataSharingApi = container "Data Sharing API" "" "Asp.Net Core" WebApi {
+ group "Libraries" {
+ !include "libraries/organisationInformationPersistence.dsl"
+ }
dataSharingEndpoint = component "Data Sharing Endpoint" "" "Asp.Net Core Web API"
useCase = component "Use Case"
+ dataSharingEndpoint -> useCase "Executes"
useCase -> fileStorage "writes to / reads from" "HTTPS"
- -> organisationInformationDatabase "reads/writes" "SQL"
+ useCase -> organisationInformationPersisence "Calls"
+ organisationInformationPersisence -> organisationInformationDatabase "reads/writes" "SQL"
}
organisationApp = container "Organisation App" "Account & data capture frontend" "Asp.Net Core MVC" WebApp {
group "Libraries" {
- !include "libraries.dsl"
+ !include "libraries/webApiClients.dsl"
}
mvcController = component "MVC Controller" "Enables web users to perform tasks." "Asp.Net Core MVC Controller"
diff --git a/docs/diagrams/workspace.json b/docs/diagrams/workspace.json
index 00255a557..80c222526 100644
--- a/docs/diagrams/workspace.json
+++ b/docs/diagrams/workspace.json
@@ -5,7 +5,7 @@
"description" : "Description",
"documentation" : { },
"id" : 1,
- "lastModifiedDate" : "2024-10-02T13:59:28Z",
+ "lastModifiedDate" : "2024-10-03T15:37:07Z",
"model" : {
"people" : [ {
"id" : "1",
@@ -16,26 +16,26 @@
},
"relationships" : [ {
"description" : "Uses",
- "destinationId" : "68",
- "id" : "69",
+ "destinationId" : "103",
+ "id" : "104",
"properties" : {
- "structurizr.dsl.identifier" : "38338d26-4d50-495d-9f75-80a6baf14c07"
+ "structurizr.dsl.identifier" : "c4ecbbf3-7f6e-4e2a-8776-9b7f9c1aa1da"
},
"sourceId" : "1",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Uses",
- "destinationId" : "61",
- "id" : "70",
- "linkedRelationshipId" : "69",
+ "destinationId" : "96",
+ "id" : "105",
+ "linkedRelationshipId" : "104",
"sourceId" : "1",
"technology" : "HTTPS"
}, {
"description" : "Uses",
"destinationId" : "10",
- "id" : "71",
- "linkedRelationshipId" : "69",
+ "id" : "106",
+ "linkedRelationshipId" : "104",
"sourceId" : "1",
"technology" : "HTTPS"
} ],
@@ -49,34 +49,34 @@
},
"relationships" : [ {
"description" : "Uses",
- "destinationId" : "68",
- "id" : "72",
+ "destinationId" : "103",
+ "id" : "107",
"properties" : {
- "structurizr.dsl.identifier" : "b0c42cab-d79f-43d7-923b-47d98bf1e88b"
+ "structurizr.dsl.identifier" : "ea09b758-5ff7-4da8-95ce-270ec42d825d"
},
"sourceId" : "2",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Uses",
- "destinationId" : "61",
- "id" : "73",
- "linkedRelationshipId" : "72",
+ "destinationId" : "96",
+ "id" : "108",
+ "linkedRelationshipId" : "107",
"sourceId" : "2",
"technology" : "HTTPS"
}, {
"description" : "Uses",
"destinationId" : "10",
- "id" : "74",
- "linkedRelationshipId" : "72",
+ "id" : "109",
+ "linkedRelationshipId" : "107",
"sourceId" : "2",
"technology" : "HTTPS"
}, {
"description" : "Uses",
"destinationId" : "3",
- "id" : "122",
+ "id" : "157",
"properties" : {
- "structurizr.dsl.identifier" : "d1c2c6a1-d2a5-4122-afb7-72b641f85189"
+ "structurizr.dsl.identifier" : "fe4cd8ce-c857-49c8-bcd0-3e9f6947c666"
},
"sourceId" : "2",
"tags" : "Relationship"
@@ -94,26 +94,26 @@
},
"relationships" : [ {
"description" : "Looks up supplier information",
- "destinationId" : "56",
- "id" : "119",
+ "destinationId" : "88",
+ "id" : "154",
"properties" : {
- "structurizr.dsl.identifier" : "ccf143c9-256a-4e0d-9d5d-e6c451a5a608"
+ "structurizr.dsl.identifier" : "d406ad2e-ac2f-4f97-a938-f0fc4d21f3c3"
},
"sourceId" : "3",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Looks up supplier information",
- "destinationId" : "55",
- "id" : "120",
- "linkedRelationshipId" : "119",
+ "destinationId" : "86",
+ "id" : "155",
+ "linkedRelationshipId" : "154",
"sourceId" : "3",
"technology" : "HTTPS/json"
}, {
"description" : "Looks up supplier information",
"destinationId" : "10",
- "id" : "121",
- "linkedRelationshipId" : "119",
+ "id" : "156",
+ "linkedRelationshipId" : "154",
"sourceId" : "3",
"technology" : "HTTPS/json"
} ],
@@ -135,7 +135,7 @@
"location" : "Unspecified",
"name" : "Gov.uk Notify",
"properties" : {
- "structurizr.dsl.identifier" : "govnotify"
+ "structurizr.dsl.identifier" : "govuknotify"
},
"tags" : "Element,Software System"
}, {
@@ -159,66 +159,66 @@
"relationships" : [ {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "123",
+ "id" : "158",
"properties" : {
- "structurizr.dsl.identifier" : "35b30ffd-36fa-46ac-8333-a5618f63e28f"
+ "structurizr.dsl.identifier" : "8cd5f5c5-4ce1-44a4-a5c9-28ba2fa0cd76"
},
"sourceId" : "7",
"tags" : "Relationship"
}, {
"description" : "Authenticates with",
- "destinationId" : "24",
- "id" : "124",
+ "destinationId" : "34",
+ "id" : "159",
"properties" : {
- "structurizr.dsl.identifier" : "3024ee3c-5eb8-4319-bce0-29e7454112c7"
+ "structurizr.dsl.identifier" : "d88b242c-b918-45df-9b2f-122e659e8dcc"
},
"sourceId" : "7",
"tags" : "Relationship"
}, {
"description" : "Authenticates with",
- "destinationId" : "21",
- "id" : "125",
- "linkedRelationshipId" : "124",
+ "destinationId" : "30",
+ "id" : "160",
+ "linkedRelationshipId" : "159",
"sourceId" : "7"
}, {
"description" : "Authenticates with",
"destinationId" : "10",
- "id" : "126",
- "linkedRelationshipId" : "124",
+ "id" : "161",
+ "linkedRelationshipId" : "159",
"sourceId" : "7"
}, {
"description" : "Retrieves OpenID configuration from",
- "destinationId" : "22",
- "id" : "127",
+ "destinationId" : "32",
+ "id" : "162",
"properties" : {
- "structurizr.dsl.identifier" : "33b739ee-30ed-455f-a26e-afe585fc8978"
+ "structurizr.dsl.identifier" : "97557f1b-a54d-4ec3-8589-d179ec4faf3f"
},
"sourceId" : "7",
"tags" : "Relationship"
}, {
"description" : "Retrieves Json Web Key Set from",
- "destinationId" : "23",
- "id" : "128",
+ "destinationId" : "33",
+ "id" : "163",
"properties" : {
- "structurizr.dsl.identifier" : "c3d2baf2-9071-4093-86e6-f7cf7f2c7e07"
+ "structurizr.dsl.identifier" : "e17a1acb-6547-4b83-8d8d-85fe2b0606cc"
},
"sourceId" : "7",
"tags" : "Relationship"
}, {
"description" : "Calls",
- "destinationId" : "41",
- "id" : "129",
+ "destinationId" : "60",
+ "id" : "164",
"properties" : {
- "structurizr.dsl.identifier" : "58af157f-13f8-46a0-87ac-ec3dea877662"
+ "structurizr.dsl.identifier" : "a30bcfa8-8853-4621-85d4-676749c937f9"
},
"sourceId" : "7",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "40",
- "id" : "130",
- "linkedRelationshipId" : "129",
+ "destinationId" : "56",
+ "id" : "165",
+ "linkedRelationshipId" : "164",
"sourceId" : "7",
"technology" : "HTTPS/json"
} ],
@@ -233,18 +233,18 @@
},
"relationships" : [ {
"description" : "Authenticates with",
- "destinationId" : "21",
- "id" : "131",
+ "destinationId" : "30",
+ "id" : "166",
"properties" : {
- "structurizr.dsl.identifier" : "555dbcfc-130f-42db-b402-b67a4d3db09f"
+ "structurizr.dsl.identifier" : "21d6178a-24d5-4db5-b03b-39d84065a878"
},
"sourceId" : "8",
"tags" : "Relationship"
}, {
"description" : "Authenticates with",
"destinationId" : "10",
- "id" : "132",
- "linkedRelationshipId" : "131",
+ "id" : "167",
+ "linkedRelationshipId" : "166",
"sourceId" : "8"
} ],
"tags" : "Element,Software System"
@@ -258,18 +258,18 @@
},
"relationships" : [ {
"description" : "Authenticates with",
- "destinationId" : "21",
- "id" : "133",
+ "destinationId" : "30",
+ "id" : "168",
"properties" : {
- "structurizr.dsl.identifier" : "98eda424-8455-4d6d-ad00-b180625c640e"
+ "structurizr.dsl.identifier" : "2414017a-eb31-4726-86e9-70116cc08b9a"
},
"sourceId" : "9",
"tags" : "Relationship"
}, {
"description" : "Authenticates with",
"destinationId" : "10",
- "id" : "134",
- "linkedRelationshipId" : "133",
+ "id" : "169",
+ "linkedRelationshipId" : "168",
"sourceId" : "9"
} ],
"tags" : "Element,Software System"
@@ -295,34 +295,122 @@
"technology" : "PostgreSQL"
}, {
"components" : [ {
- "description" : "Queries known identifers.",
+ "description" : "Message Queue client",
"documentation" : { },
+ "group" : "Libraries",
"id" : "14",
+ "name" : "MQ",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification.mq"
+ },
+ "relationships" : [ {
+ "description" : "publishes to / listens to",
+ "destinationId" : "11",
+ "id" : "23",
+ "properties" : {
+ "structurizr.dsl.identifier" : "78e98285-5119-4094-b169-a5712b7e0d0f"
+ },
+ "sourceId" : "14",
+ "tags" : "Relationship",
+ "technology" : "HTTPS"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "17",
+ "id" : "25",
+ "properties" : {
+ "structurizr.dsl.identifier" : "c468e1e2-78fa-4f51-bf31-8c9d7c11835c"
+ },
+ "sourceId" : "14",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "description" : "Queries known identifers.",
+ "documentation" : { },
+ "id" : "15",
"name" : "Entity Verification Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.entityverification.entityverificationendpoint"
},
+ "relationships" : [ {
+ "description" : "Executes",
+ "destinationId" : "16",
+ "id" : "19",
+ "properties" : {
+ "structurizr.dsl.identifier" : "dc17813f-23e0-4e9c-a45d-754b3be45197"
+ },
+ "sourceId" : "15",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"documentation" : { },
- "id" : "15",
+ "id" : "16",
"name" : "Use Case",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.entityverification.entityverificationusecase"
+ "structurizr.dsl.identifier" : "cdp.entityverification.usecase"
},
"relationships" : [ {
- "description" : "publishes to / listens to",
- "destinationId" : "11",
- "id" : "16",
+ "description" : "Calls",
+ "destinationId" : "18",
+ "id" : "20",
"properties" : {
- "structurizr.dsl.identifier" : "9cc77e07-73b1-46ce-b6b3-42c18c2239fa"
+ "structurizr.dsl.identifier" : "a35d0254-1aaa-438b-9e79-eb74355cdaa3"
},
- "sourceId" : "15",
- "tags" : "Relationship",
- "technology" : "HTTPS"
+ "sourceId" : "16",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "14",
+ "id" : "22",
+ "properties" : {
+ "structurizr.dsl.identifier" : "2ac17e00-c8ba-4695-a441-e43301591c0c"
+ },
+ "sourceId" : "16",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component"
+ }, {
+ "documentation" : { },
+ "id" : "17",
+ "name" : "Message Subscriber",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification.mqsubscriber"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "18",
+ "id" : "21",
+ "properties" : {
+ "structurizr.dsl.identifier" : "3dde2c3d-1c99-416f-8412-0964c461e73b"
+ },
+ "sourceId" : "17",
+ "tags" : "Relationship"
} ],
"tags" : "Element,Component"
+ }, {
+ "description" : "EntityFramework Core model and repositories",
+ "documentation" : { },
+ "id" : "18",
+ "name" : "Persistence",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.entityverification.persistence"
+ },
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "12",
+ "id" : "26",
+ "properties" : {
+ "structurizr.dsl.identifier" : "c7e76a6d-4b7a-43fd-a760-e738b7cbf116"
+ },
+ "sourceId" : "18",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component",
+ "technology" : "C# Namespace"
} ],
"documentation" : { },
"group" : "Entity Verification",
@@ -334,19 +422,16 @@
"relationships" : [ {
"description" : "publishes to / listens to",
"destinationId" : "11",
- "id" : "17",
- "linkedRelationshipId" : "16",
+ "id" : "24",
+ "linkedRelationshipId" : "23",
"sourceId" : "13",
"technology" : "HTTPS"
}, {
"description" : "reads/writes",
"destinationId" : "12",
- "id" : "18",
- "properties" : {
- "structurizr.dsl.identifier" : "ac33a5a9-9186-42b2-8e95-f6a8b4758df9"
- },
+ "id" : "27",
+ "linkedRelationshipId" : "26",
"sourceId" : "13",
- "tags" : "Relationship",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
@@ -354,7 +439,7 @@
}, {
"documentation" : { },
"group" : "Organisation Information",
- "id" : "19",
+ "id" : "28",
"name" : "Organisation Information Database",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationinformationdatabase"
@@ -364,7 +449,7 @@
}, {
"documentation" : { },
"group" : "Organisation Information",
- "id" : "20",
+ "id" : "29",
"name" : "File Storage",
"properties" : {
"structurizr.dsl.identifier" : "cdp.filestorage"
@@ -373,9 +458,31 @@
"technology" : "S3"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
+ "documentation" : { },
+ "group" : "Libraries",
+ "id" : "31",
+ "name" : "Organisation Information Persistence",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.authority.organisationinformationpersisence"
+ },
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "38",
+ "properties" : {
+ "structurizr.dsl.identifier" : "2eb1bb39-7167-4002-805e-34ff30622ea7"
+ },
+ "sourceId" : "31",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
"description" : "Exposes OpenID configuration",
"documentation" : { },
- "id" : "22",
+ "id" : "32",
"name" : "OpenID Well-Known Configuration Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.authority.openidconfigurationendpoint"
@@ -385,7 +492,7 @@
}, {
"description" : "Exposes Json Web Key Set",
"documentation" : { },
- "id" : "23",
+ "id" : "33",
"name" : "OpenID Well-Known JWKS Configuration Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.authority.openidjwksconfigurationendpoint"
@@ -395,352 +502,583 @@
}, {
"description" : "Exchanges a valid One Login token to a longer-lived token with additional claims.",
"documentation" : { },
- "id" : "24",
+ "id" : "34",
"name" : "Token endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.authority.tokenendpoint"
},
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "35",
+ "id" : "36",
+ "properties" : {
+ "structurizr.dsl.identifier" : "85b0367f-237f-44bf-bb21-391c5df09531"
+ },
+ "sourceId" : "34",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
+ }, {
+ "description" : "Creates and validates authentication tokens",
+ "documentation" : { },
+ "id" : "35",
+ "name" : "Token Service",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.authority.tokenservice"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "31",
+ "id" : "37",
+ "properties" : {
+ "structurizr.dsl.identifier" : "75353b92-91f6-42d5-9158-e9fd365a5688"
+ },
+ "sourceId" : "35",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "21",
+ "id" : "30",
"name" : "Authority",
"properties" : {
"structurizr.dsl.identifier" : "cdp.authority"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "19",
- "id" : "25",
- "properties" : {
- "structurizr.dsl.identifier" : "cb85b617-6f2a-46c0-8d91-315a1bc662c2"
- },
- "sourceId" : "21",
- "tags" : "Relationship",
+ "destinationId" : "28",
+ "id" : "39",
+ "linkedRelationshipId" : "38",
+ "sourceId" : "30",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
"documentation" : { },
- "id" : "27",
- "name" : "Tenant Endpoint",
+ "group" : "Libraries",
+ "id" : "41",
+ "name" : "Organisation Information Persistence",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.tenantapi.tenantendpoint"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.organisationinformationpersisence"
},
"relationships" : [ {
- "description" : "Executes",
+ "description" : "reads/writes",
"destinationId" : "28",
- "id" : "31",
- "properties" : {
- "structurizr.dsl.identifier" : "042a877d-6e58-4d6d-b2c5-68d8a18f78c9"
- },
- "sourceId" : "27",
- "tags" : "Relationship"
- }, {
- "description" : "Executes",
- "destinationId" : "29",
- "id" : "32",
+ "id" : "46",
"properties" : {
- "structurizr.dsl.identifier" : "d634d9e3-e61f-4ac8-b3df-a96ad27cb2b1"
+ "structurizr.dsl.identifier" : "36e9209b-f5e8-4d89-86ec-48b62314aa9a"
},
- "sourceId" : "27",
- "tags" : "Relationship"
+ "sourceId" : "41",
+ "tags" : "Relationship",
+ "technology" : "SQL"
} ],
- "tags" : "Element,Component",
- "technology" : "Asp.Net Core Web API"
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
"documentation" : { },
- "id" : "28",
- "name" : "Register Tenant Use Case",
+ "id" : "42",
+ "name" : "Tenant Endpoint",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.tenantapi.registertenantusecase"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.tenantendpoint"
},
"relationships" : [ {
- "description" : "Calls",
- "destinationId" : "30",
- "id" : "33",
+ "description" : "Executes",
+ "destinationId" : "43",
+ "id" : "44",
"properties" : {
- "structurizr.dsl.identifier" : "b5384fac-05d6-4c3a-be68-4e09afebabc6"
+ "structurizr.dsl.identifier" : "29c9cbb6-3dd7-4030-81db-4d9a2678f39f"
},
- "sourceId" : "28",
+ "sourceId" : "42",
"tags" : "Relationship"
} ],
- "tags" : "Element,Component"
+ "tags" : "Element,Component",
+ "technology" : "Asp.Net Core Web API"
}, {
"documentation" : { },
- "id" : "29",
- "name" : "Get Tenant Use Case",
+ "id" : "43",
+ "name" : "Use Case",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.tenantapi.gettenantusecase"
+ "structurizr.dsl.identifier" : "cdp.tenantapi.usecase"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "30",
- "id" : "34",
+ "destinationId" : "41",
+ "id" : "45",
"properties" : {
- "structurizr.dsl.identifier" : "fda4a9e3-b2a4-416e-b30b-4732ef728a12"
+ "structurizr.dsl.identifier" : "1d26b5cd-2ca3-43de-b9b5-418405fce1ff"
},
- "sourceId" : "29",
+ "sourceId" : "43",
"tags" : "Relationship"
} ],
"tags" : "Element,Component"
- }, {
- "documentation" : { },
- "id" : "30",
- "name" : "Persistence",
- "properties" : {
- "structurizr.dsl.identifier" : "cdp.tenantapi.tenantpersistence"
- },
- "relationships" : [ {
- "description" : "reads/writes",
- "destinationId" : "19",
- "id" : "35",
- "properties" : {
- "structurizr.dsl.identifier" : "1d8e990e-61b0-4383-94a3-9cc10bcc4ee6"
- },
- "sourceId" : "30",
- "tags" : "Relationship",
- "technology" : "SQL"
- } ],
- "tags" : "Element,Component",
- "technology" : "Project"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "26",
+ "id" : "40",
"name" : "Tenant API",
"properties" : {
"structurizr.dsl.identifier" : "cdp.tenantapi"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "19",
- "id" : "36",
- "linkedRelationshipId" : "35",
- "sourceId" : "26",
+ "destinationId" : "28",
+ "id" : "47",
+ "linkedRelationshipId" : "46",
+ "sourceId" : "40",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
"documentation" : { },
- "id" : "38",
+ "group" : "Libraries",
+ "id" : "49",
+ "name" : "Organisation Information Persistence",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.personapi.organisationinformationpersisence"
+ },
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "54",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cb2a1993-823d-450b-9efc-4bc778e7e292"
+ },
+ "sourceId" : "49",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "documentation" : { },
+ "id" : "50",
"name" : "Person Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.personapi.personendpoint"
},
+ "relationships" : [ {
+ "description" : "Executes",
+ "destinationId" : "51",
+ "id" : "52",
+ "properties" : {
+ "structurizr.dsl.identifier" : "70ca01ad-0c07-4a79-8638-ce2114c3b935"
+ },
+ "sourceId" : "50",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "51",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.personapi.usecase"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "49",
+ "id" : "53",
+ "properties" : {
+ "structurizr.dsl.identifier" : "aa2b5854-dc21-4faa-8828-0eca69ad75c1"
+ },
+ "sourceId" : "51",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "37",
+ "id" : "48",
"name" : "Person API",
"properties" : {
"structurizr.dsl.identifier" : "cdp.personapi"
},
"relationships" : [ {
"description" : "reads/writes",
- "destinationId" : "19",
- "id" : "39",
- "properties" : {
- "structurizr.dsl.identifier" : "06e442c6-4145-483b-9ca1-9003b1f77303"
- },
- "sourceId" : "37",
- "tags" : "Relationship",
+ "destinationId" : "28",
+ "id" : "55",
+ "linkedRelationshipId" : "54",
+ "sourceId" : "48",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
"documentation" : { },
- "id" : "41",
- "name" : "Organisation Endpoint",
+ "group" : "Libraries",
+ "id" : "57",
+ "name" : "Organisation Information Persistence",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.organisationapi.organisationendpoint"
+ "structurizr.dsl.identifier" : "cdp.organisationapi.organisationinformationpersisence"
},
- "tags" : "Element,Component",
- "technology" : "Asp.Net Core Web API"
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "68",
+ "properties" : {
+ "structurizr.dsl.identifier" : "501d29a5-6d5a-4fa1-aa3b-98587e7659cf"
+ },
+ "sourceId" : "57",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
}, {
+ "description" : "Message Queue client",
"documentation" : { },
- "id" : "42",
- "name" : "Use Case",
+ "group" : "Libraries",
+ "id" : "58",
+ "name" : "MQ",
"properties" : {
- "structurizr.dsl.identifier" : "cdp.organisationapi.usecase"
+ "structurizr.dsl.identifier" : "cdp.organisationapi.mq"
},
"relationships" : [ {
"description" : "publishes to / listens to",
"destinationId" : "11",
- "id" : "43",
+ "id" : "70",
"properties" : {
- "structurizr.dsl.identifier" : "902c8914-a81c-41e6-8624-d5def07cd111"
+ "structurizr.dsl.identifier" : "efc5d958-f3c1-441e-b5a3-5e04902be2a0"
},
- "sourceId" : "42",
+ "sourceId" : "58",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
+ "description" : "Calls",
+ "destinationId" : "62",
+ "id" : "72",
+ "properties" : {
+ "structurizr.dsl.identifier" : "3264ba9c-6ccb-430d-b561-dba185c871f8"
+ },
+ "sourceId" : "58",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "description" : "Gov.uk Notify client",
+ "documentation" : { },
+ "group" : "Libraries",
+ "id" : "59",
+ "name" : "Gov.uk Notify",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationapi.govuknotifyclient"
+ },
+ "relationships" : [ {
"description" : "sends notifications with",
"destinationId" : "5",
- "id" : "45",
+ "id" : "73",
"properties" : {
- "structurizr.dsl.identifier" : "fb5d3733-c508-4939-b1b5-8eee9e941aa1"
+ "structurizr.dsl.identifier" : "76da6df8-59e4-4708-bdd3-301f87e310fa"
},
- "sourceId" : "42",
+ "sourceId" : "59",
"tags" : "Relationship",
"technology" : "HTTPS"
} ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "documentation" : { },
+ "id" : "60",
+ "name" : "Organisation Endpoint",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationapi.organisationendpoint"
+ },
+ "relationships" : [ {
+ "description" : "Executes",
+ "destinationId" : "61",
+ "id" : "63",
+ "properties" : {
+ "structurizr.dsl.identifier" : "378aef01-e616-4b2d-a53f-ed4f53f89f6d"
+ },
+ "sourceId" : "60",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component",
+ "technology" : "Asp.Net Core Web API"
+ }, {
+ "documentation" : { },
+ "id" : "61",
+ "name" : "Use Case",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationapi.usecase"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "57",
+ "id" : "64",
+ "properties" : {
+ "structurizr.dsl.identifier" : "0a32c3cb-ecdc-4528-b168-97d4184cf9ba"
+ },
+ "sourceId" : "61",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "58",
+ "id" : "65",
+ "properties" : {
+ "structurizr.dsl.identifier" : "2199a1f1-d68a-4b3d-b0a5-e8a938faae30"
+ },
+ "sourceId" : "61",
+ "tags" : "Relationship"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "59",
+ "id" : "66",
+ "properties" : {
+ "structurizr.dsl.identifier" : "d31222b2-b470-45c9-a42d-9fd19f23ea78"
+ },
+ "sourceId" : "61",
+ "tags" : "Relationship"
+ } ],
+ "tags" : "Element,Component"
+ }, {
+ "documentation" : { },
+ "id" : "62",
+ "name" : "Message Subscriber",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.organisationapi.mqsubscriber"
+ },
+ "relationships" : [ {
+ "description" : "Calls",
+ "destinationId" : "57",
+ "id" : "67",
+ "properties" : {
+ "structurizr.dsl.identifier" : "928a45c6-1cf5-4a7e-a24e-05576a914a5f"
+ },
+ "sourceId" : "62",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "40",
+ "id" : "56",
"name" : "Organisation API",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapi"
},
"relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "69",
+ "linkedRelationshipId" : "68",
+ "sourceId" : "56",
+ "technology" : "SQL"
+ }, {
"description" : "publishes to / listens to",
"destinationId" : "11",
- "id" : "44",
- "linkedRelationshipId" : "43",
- "sourceId" : "40",
+ "id" : "71",
+ "linkedRelationshipId" : "70",
+ "sourceId" : "56",
"technology" : "HTTPS"
}, {
"description" : "sends notifications with",
"destinationId" : "5",
- "id" : "46",
- "linkedRelationshipId" : "45",
- "sourceId" : "40",
+ "id" : "74",
+ "linkedRelationshipId" : "73",
+ "sourceId" : "56",
"technology" : "HTTPS"
- }, {
- "description" : "reads/writes",
- "destinationId" : "19",
- "id" : "48",
- "properties" : {
- "structurizr.dsl.identifier" : "ef52aa65-0d65-4b82-aa5a-94a9a06bff2c"
- },
- "sourceId" : "40",
- "tags" : "Relationship",
- "technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
"documentation" : { },
- "id" : "50",
+ "group" : "Libraries",
+ "id" : "77",
+ "name" : "Organisation Information Persistence",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.formsapi.organisationinformationpersisence"
+ },
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "84",
+ "properties" : {
+ "structurizr.dsl.identifier" : "e2e2ffff-156a-4f95-bf48-d1001fa71268"
+ },
+ "sourceId" : "77",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "documentation" : { },
+ "id" : "78",
"name" : "Forms Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.formsapi.formsendpoint"
},
+ "relationships" : [ {
+ "description" : "Executes",
+ "destinationId" : "79",
+ "id" : "80",
+ "properties" : {
+ "structurizr.dsl.identifier" : "42bbbf16-60b4-4f4d-ab6a-1e36d315fa3b"
+ },
+ "sourceId" : "78",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"documentation" : { },
- "id" : "51",
+ "id" : "79",
"name" : "Use Case",
"properties" : {
"structurizr.dsl.identifier" : "cdp.formsapi.usecase"
},
"relationships" : [ {
"description" : "writes to",
- "destinationId" : "20",
- "id" : "52",
+ "destinationId" : "29",
+ "id" : "81",
"properties" : {
- "structurizr.dsl.identifier" : "52467854-2dc2-4a06-96d3-067dbc138942"
+ "structurizr.dsl.identifier" : "26f059f8-12dc-442f-9b30-f877e627dd5e"
},
- "sourceId" : "51",
+ "sourceId" : "79",
"tags" : "Relationship",
"technology" : "HTTPS"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "77",
+ "id" : "83",
+ "properties" : {
+ "structurizr.dsl.identifier" : "f5b11871-4fd3-4167-99d2-2ac80a12ed61"
+ },
+ "sourceId" : "79",
+ "tags" : "Relationship"
} ],
"tags" : "Element,Component"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "49",
+ "id" : "76",
"name" : "Forms API",
"properties" : {
"structurizr.dsl.identifier" : "cdp.formsapi"
},
"relationships" : [ {
"description" : "writes to",
- "destinationId" : "20",
- "id" : "53",
- "linkedRelationshipId" : "52",
- "sourceId" : "49",
+ "destinationId" : "29",
+ "id" : "82",
+ "linkedRelationshipId" : "81",
+ "sourceId" : "76",
"technology" : "HTTPS"
}, {
"description" : "reads/writes",
- "destinationId" : "19",
- "id" : "54",
- "properties" : {
- "structurizr.dsl.identifier" : "7e171142-bd0f-4b30-a3dd-433899a154d7"
- },
- "sourceId" : "49",
- "tags" : "Relationship",
+ "destinationId" : "28",
+ "id" : "85",
+ "linkedRelationshipId" : "84",
+ "sourceId" : "76",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
"technology" : "Asp.Net Core"
}, {
"components" : [ {
+ "description" : "Exposes the database model, queries, and persistence operations with EntityFramework Core",
"documentation" : { },
- "id" : "56",
+ "group" : "Libraries",
+ "id" : "87",
+ "name" : "Organisation Information Persistence",
+ "properties" : {
+ "structurizr.dsl.identifier" : "cdp.datasharingapi.organisationinformationpersisence"
+ },
+ "relationships" : [ {
+ "description" : "reads/writes",
+ "destinationId" : "28",
+ "id" : "94",
+ "properties" : {
+ "structurizr.dsl.identifier" : "e150cb3d-c29f-4102-8a2f-0baef2fb6f88"
+ },
+ "sourceId" : "87",
+ "tags" : "Relationship",
+ "technology" : "SQL"
+ } ],
+ "tags" : "Element,Component,Shared Component",
+ "technology" : "C# project"
+ }, {
+ "documentation" : { },
+ "id" : "88",
"name" : "Data Sharing Endpoint",
"properties" : {
"structurizr.dsl.identifier" : "cdp.datasharingapi.datasharingendpoint"
},
+ "relationships" : [ {
+ "description" : "Executes",
+ "destinationId" : "89",
+ "id" : "90",
+ "properties" : {
+ "structurizr.dsl.identifier" : "83ee26c6-8d54-469d-bc9e-5194700aa1cc"
+ },
+ "sourceId" : "88",
+ "tags" : "Relationship"
+ } ],
"tags" : "Element,Component",
"technology" : "Asp.Net Core Web API"
}, {
"documentation" : { },
- "id" : "57",
+ "id" : "89",
"name" : "Use Case",
"properties" : {
"structurizr.dsl.identifier" : "cdp.datasharingapi.usecase"
},
"relationships" : [ {
"description" : "writes to / reads from",
- "destinationId" : "20",
- "id" : "58",
+ "destinationId" : "29",
+ "id" : "91",
"properties" : {
- "structurizr.dsl.identifier" : "2b44dcc7-2db0-4e59-a974-c7bea155341a"
+ "structurizr.dsl.identifier" : "b63a7d89-5cdb-468a-b147-0d419a20b574"
},
- "sourceId" : "57",
+ "sourceId" : "89",
"tags" : "Relationship",
"technology" : "HTTPS"
+ }, {
+ "description" : "Calls",
+ "destinationId" : "87",
+ "id" : "93",
+ "properties" : {
+ "structurizr.dsl.identifier" : "aa276de4-001a-4bcd-82a8-586831182960"
+ },
+ "sourceId" : "89",
+ "tags" : "Relationship"
} ],
"tags" : "Element,Component"
} ],
"documentation" : { },
"group" : "Organisation Information",
- "id" : "55",
+ "id" : "86",
"name" : "Data Sharing API",
"properties" : {
"structurizr.dsl.identifier" : "cdp.datasharingapi"
},
"relationships" : [ {
"description" : "writes to / reads from",
- "destinationId" : "20",
- "id" : "59",
- "linkedRelationshipId" : "58",
- "sourceId" : "55",
+ "destinationId" : "29",
+ "id" : "92",
+ "linkedRelationshipId" : "91",
+ "sourceId" : "86",
"technology" : "HTTPS"
}, {
"description" : "reads/writes",
- "destinationId" : "19",
- "id" : "60",
- "properties" : {
- "structurizr.dsl.identifier" : "ea8121ae-5811-403a-9c21-0ba0b160ea29"
- },
- "sourceId" : "55",
- "tags" : "Relationship",
+ "destinationId" : "28",
+ "id" : "95",
+ "linkedRelationshipId" : "94",
+ "sourceId" : "86",
"technology" : "SQL"
} ],
"tags" : "Element,Container,WebApi",
@@ -750,27 +1088,27 @@
"description" : "Makes API calls to the Tenant API",
"documentation" : { },
"group" : "Libraries",
- "id" : "62",
+ "id" : "97",
"name" : "Tenant Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.tenantclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "27",
- "id" : "93",
+ "destinationId" : "42",
+ "id" : "128",
"properties" : {
- "structurizr.dsl.identifier" : "ff2b13c7-252b-4a3d-8f1d-ad9e5448e4cd"
+ "structurizr.dsl.identifier" : "9c1421b8-7d0e-446e-bd88-da72662a3fd8"
},
- "sourceId" : "62",
+ "sourceId" : "97",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "26",
- "id" : "94",
- "linkedRelationshipId" : "93",
- "sourceId" : "62",
+ "destinationId" : "40",
+ "id" : "129",
+ "linkedRelationshipId" : "128",
+ "sourceId" : "97",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -779,27 +1117,27 @@
"description" : "Makes API calls to the Person API",
"documentation" : { },
"group" : "Libraries",
- "id" : "63",
+ "id" : "98",
"name" : "Person Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.personclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "38",
- "id" : "97",
+ "destinationId" : "50",
+ "id" : "132",
"properties" : {
- "structurizr.dsl.identifier" : "25062392-8b85-444c-9eb6-a96881d54efd"
+ "structurizr.dsl.identifier" : "924f0ef3-5533-4e44-b668-057db71f9126"
},
- "sourceId" : "63",
+ "sourceId" : "98",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "37",
- "id" : "98",
- "linkedRelationshipId" : "97",
- "sourceId" : "63",
+ "destinationId" : "48",
+ "id" : "133",
+ "linkedRelationshipId" : "132",
+ "sourceId" : "98",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -808,27 +1146,27 @@
"description" : "Makes API calls to the Organisation API",
"documentation" : { },
"group" : "Libraries",
- "id" : "64",
+ "id" : "99",
"name" : "Organisation Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.organisationclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "41",
- "id" : "101",
+ "destinationId" : "60",
+ "id" : "136",
"properties" : {
- "structurizr.dsl.identifier" : "b17de38c-bcd9-460c-b055-f27b7d53cc24"
+ "structurizr.dsl.identifier" : "d960b26c-8cff-4e7a-9f00-b033888d3f88"
},
- "sourceId" : "64",
+ "sourceId" : "99",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "40",
- "id" : "102",
- "linkedRelationshipId" : "101",
- "sourceId" : "64",
+ "destinationId" : "56",
+ "id" : "137",
+ "linkedRelationshipId" : "136",
+ "sourceId" : "99",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -837,27 +1175,27 @@
"description" : "Makes API calls to the Forms API",
"documentation" : { },
"group" : "Libraries",
- "id" : "65",
+ "id" : "100",
"name" : "Forms Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.formsclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "50",
- "id" : "105",
+ "destinationId" : "78",
+ "id" : "140",
"properties" : {
- "structurizr.dsl.identifier" : "edc09444-3d4a-4575-9025-0e49adb080ab"
+ "structurizr.dsl.identifier" : "7a844e55-912a-4588-8698-7deb50229e8b"
},
- "sourceId" : "65",
+ "sourceId" : "100",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "49",
- "id" : "106",
- "linkedRelationshipId" : "105",
- "sourceId" : "65",
+ "destinationId" : "76",
+ "id" : "141",
+ "linkedRelationshipId" : "140",
+ "sourceId" : "100",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -866,27 +1204,27 @@
"description" : "Makes API calls to the Data Sharing API",
"documentation" : { },
"group" : "Libraries",
- "id" : "66",
+ "id" : "101",
"name" : "Data Sharing Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.datasharingclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "56",
- "id" : "109",
+ "destinationId" : "88",
+ "id" : "144",
"properties" : {
- "structurizr.dsl.identifier" : "2b94dbcc-3682-4590-9e5b-ac285ad7d3c2"
+ "structurizr.dsl.identifier" : "f72734e2-d463-4bb9-91b5-eb657aa77944"
},
- "sourceId" : "66",
+ "sourceId" : "101",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "55",
- "id" : "110",
- "linkedRelationshipId" : "109",
- "sourceId" : "66",
+ "destinationId" : "86",
+ "id" : "145",
+ "linkedRelationshipId" : "144",
+ "sourceId" : "101",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -895,27 +1233,27 @@
"description" : "Makes API calls to the Entity Verification API",
"documentation" : { },
"group" : "Libraries",
- "id" : "67",
+ "id" : "102",
"name" : "Entity Verification Client",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.entityverificationclient"
},
"relationships" : [ {
"description" : "Calls",
- "destinationId" : "14",
- "id" : "113",
+ "destinationId" : "15",
+ "id" : "148",
"properties" : {
- "structurizr.dsl.identifier" : "13bdda15-0d57-4a43-9b3e-2d8c7177377d"
+ "structurizr.dsl.identifier" : "dab44bef-01d7-4a73-af18-4444a6cf7ae1"
},
- "sourceId" : "67",
+ "sourceId" : "102",
"tags" : "Relationship",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
"destinationId" : "13",
- "id" : "114",
- "linkedRelationshipId" : "113",
- "sourceId" : "67",
+ "id" : "149",
+ "linkedRelationshipId" : "148",
+ "sourceId" : "102",
"technology" : "HTTPS/json"
} ],
"tags" : "Element,Component,Shared Component",
@@ -923,7 +1261,7 @@
}, {
"description" : "Enables web users to perform tasks.",
"documentation" : { },
- "id" : "68",
+ "id" : "103",
"name" : "MVC Controller",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp.mvccontroller"
@@ -931,102 +1269,102 @@
"relationships" : [ {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "75",
+ "id" : "110",
"properties" : {
- "structurizr.dsl.identifier" : "7f88555c-e4cf-4749-8e26-81165e4af7f0"
+ "structurizr.dsl.identifier" : "e4a7109b-f660-4e85-8294-40bd0c30a277"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Pulls company details from",
"destinationId" : "6",
- "id" : "78",
+ "id" : "113",
"properties" : {
- "structurizr.dsl.identifier" : "14f49d0a-f8a0-4460-b10e-2f5363741db1"
+ "structurizr.dsl.identifier" : "948617eb-f526-4da6-8274-f6104bb164a0"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Authenticates and authorises with",
- "destinationId" : "24",
- "id" : "81",
+ "destinationId" : "34",
+ "id" : "116",
"properties" : {
- "structurizr.dsl.identifier" : "cf45dc80-3fe6-4af6-a0f0-fe2101bb0e0d"
+ "structurizr.dsl.identifier" : "39f027ac-07b2-4843-93e0-cf92faa60244"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship",
"technology" : "HTTPS"
}, {
"description" : "Authenticates and authorises with",
- "destinationId" : "21",
- "id" : "82",
- "linkedRelationshipId" : "81",
- "sourceId" : "68",
+ "destinationId" : "30",
+ "id" : "117",
+ "linkedRelationshipId" : "116",
+ "sourceId" : "103",
"technology" : "HTTPS"
}, {
"description" : "Uses",
- "destinationId" : "62",
- "id" : "85",
+ "destinationId" : "97",
+ "id" : "120",
"properties" : {
- "structurizr.dsl.identifier" : "168f992d-f349-4899-9632-d3f03966c243"
+ "structurizr.dsl.identifier" : "55f70219-3d5e-438f-a62d-e5546c42c13a"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "Uses",
- "destinationId" : "63",
- "id" : "86",
+ "destinationId" : "98",
+ "id" : "121",
"properties" : {
- "structurizr.dsl.identifier" : "40510af9-dbfc-4ffc-b2ae-3e9fd64ad18a"
+ "structurizr.dsl.identifier" : "78aa8454-d0e3-4864-bbec-3d1efbfc09a4"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "Uses",
- "destinationId" : "64",
- "id" : "87",
+ "destinationId" : "99",
+ "id" : "122",
"properties" : {
- "structurizr.dsl.identifier" : "402ce90f-a2e1-40fb-a8a0-17e1b6635948"
+ "structurizr.dsl.identifier" : "6b6a21be-1c83-4ce2-a0f9-bdc6c6509a56"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "Uses",
- "destinationId" : "65",
- "id" : "88",
+ "destinationId" : "100",
+ "id" : "123",
"properties" : {
- "structurizr.dsl.identifier" : "ead2b4d6-5495-45d4-ba7b-89cd04b80403"
+ "structurizr.dsl.identifier" : "e2510b33-bef1-4693-9bdb-cdbb3ad565eb"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "Uses",
- "destinationId" : "66",
- "id" : "89",
+ "destinationId" : "101",
+ "id" : "124",
"properties" : {
- "structurizr.dsl.identifier" : "94c32cb0-ab68-44ae-849f-d9a0b135c085"
+ "structurizr.dsl.identifier" : "0907768c-fb2f-4ea3-b145-dea02f9706bf"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "Uses",
- "destinationId" : "67",
- "id" : "90",
+ "destinationId" : "102",
+ "id" : "125",
"properties" : {
- "structurizr.dsl.identifier" : "cc8beb0b-08da-4637-877e-9c29cf00c173"
+ "structurizr.dsl.identifier" : "c96d0e02-5703-45a9-b4ff-ce8243b43a51"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship"
}, {
"description" : "writes to",
- "destinationId" : "20",
- "id" : "91",
+ "destinationId" : "29",
+ "id" : "126",
"properties" : {
- "structurizr.dsl.identifier" : "dce9e8f5-487e-4030-879e-f3073973e575"
+ "structurizr.dsl.identifier" : "64e582d5-aa55-4146-b081-7e4fdd5da171"
},
- "sourceId" : "68",
+ "sourceId" : "103",
"tags" : "Relationship",
"technology" : "HTTPS"
} ],
@@ -1036,7 +1374,7 @@
"description" : "Account & data capture frontend",
"documentation" : { },
"group" : "Organisation Information",
- "id" : "61",
+ "id" : "96",
"name" : "Organisation App",
"properties" : {
"structurizr.dsl.identifier" : "cdp.organisationapp"
@@ -1044,139 +1382,139 @@
"relationships" : [ {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "76",
- "linkedRelationshipId" : "75",
- "sourceId" : "61",
+ "id" : "111",
+ "linkedRelationshipId" : "110",
+ "sourceId" : "96",
"technology" : "HTTPS"
}, {
"description" : "Pulls company details from",
"destinationId" : "6",
- "id" : "79",
- "linkedRelationshipId" : "78",
- "sourceId" : "61",
+ "id" : "114",
+ "linkedRelationshipId" : "113",
+ "sourceId" : "96",
"technology" : "HTTPS"
}, {
"description" : "Authenticates and authorises with",
- "destinationId" : "24",
- "id" : "83",
- "linkedRelationshipId" : "81",
- "sourceId" : "61",
+ "destinationId" : "34",
+ "id" : "118",
+ "linkedRelationshipId" : "116",
+ "sourceId" : "96",
"technology" : "HTTPS"
}, {
"description" : "Authenticates and authorises with",
- "destinationId" : "21",
- "id" : "84",
- "linkedRelationshipId" : "81",
- "sourceId" : "61",
+ "destinationId" : "30",
+ "id" : "119",
+ "linkedRelationshipId" : "116",
+ "sourceId" : "96",
"technology" : "HTTPS"
}, {
"description" : "writes to",
- "destinationId" : "20",
- "id" : "92",
- "linkedRelationshipId" : "91",
- "sourceId" : "61",
+ "destinationId" : "29",
+ "id" : "127",
+ "linkedRelationshipId" : "126",
+ "sourceId" : "96",
"technology" : "HTTPS"
}, {
"description" : "Calls",
- "destinationId" : "27",
- "id" : "95",
- "linkedRelationshipId" : "93",
- "sourceId" : "61",
+ "destinationId" : "42",
+ "id" : "130",
+ "linkedRelationshipId" : "128",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "26",
- "id" : "96",
- "linkedRelationshipId" : "93",
- "sourceId" : "61",
+ "destinationId" : "40",
+ "id" : "131",
+ "linkedRelationshipId" : "128",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "38",
- "id" : "99",
- "linkedRelationshipId" : "97",
- "sourceId" : "61",
+ "destinationId" : "50",
+ "id" : "134",
+ "linkedRelationshipId" : "132",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "37",
- "id" : "100",
- "linkedRelationshipId" : "97",
- "sourceId" : "61",
+ "destinationId" : "48",
+ "id" : "135",
+ "linkedRelationshipId" : "132",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "41",
- "id" : "103",
- "linkedRelationshipId" : "101",
- "sourceId" : "61",
+ "destinationId" : "60",
+ "id" : "138",
+ "linkedRelationshipId" : "136",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "40",
- "id" : "104",
- "linkedRelationshipId" : "101",
- "sourceId" : "61",
+ "destinationId" : "56",
+ "id" : "139",
+ "linkedRelationshipId" : "136",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "50",
- "id" : "107",
- "linkedRelationshipId" : "105",
- "sourceId" : "61",
+ "destinationId" : "78",
+ "id" : "142",
+ "linkedRelationshipId" : "140",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "49",
- "id" : "108",
- "linkedRelationshipId" : "105",
- "sourceId" : "61",
+ "destinationId" : "76",
+ "id" : "143",
+ "linkedRelationshipId" : "140",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "56",
- "id" : "111",
- "linkedRelationshipId" : "109",
- "sourceId" : "61",
+ "destinationId" : "88",
+ "id" : "146",
+ "linkedRelationshipId" : "144",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "55",
- "id" : "112",
- "linkedRelationshipId" : "109",
- "sourceId" : "61",
+ "destinationId" : "86",
+ "id" : "147",
+ "linkedRelationshipId" : "144",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
- "destinationId" : "14",
- "id" : "115",
- "linkedRelationshipId" : "113",
- "sourceId" : "61",
+ "destinationId" : "15",
+ "id" : "150",
+ "linkedRelationshipId" : "148",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Calls",
"destinationId" : "13",
- "id" : "116",
- "linkedRelationshipId" : "113",
- "sourceId" : "61",
+ "id" : "151",
+ "linkedRelationshipId" : "148",
+ "sourceId" : "96",
"technology" : "HTTPS/json"
}, {
"description" : "Retrieves OpenID configuration from",
- "destinationId" : "22",
- "id" : "117",
+ "destinationId" : "32",
+ "id" : "152",
"properties" : {
- "structurizr.dsl.identifier" : "3359077e-3841-46fe-b2cf-98f5de3d57c4"
+ "structurizr.dsl.identifier" : "8a683f3f-9606-48dd-8198-a9e069e016e5"
},
- "sourceId" : "61",
+ "sourceId" : "96",
"tags" : "Relationship"
}, {
"description" : "Retrieves Json Web Key Set from",
- "destinationId" : "23",
- "id" : "118",
+ "destinationId" : "33",
+ "id" : "153",
"properties" : {
- "structurizr.dsl.identifier" : "83d7700b-8fdb-4564-8b7d-a8be91b7a3a9"
+ "structurizr.dsl.identifier" : "39559002-db20-4a3b-812a-db7ef35585de"
},
- "sourceId" : "61",
+ "sourceId" : "96",
"tags" : "Relationship"
} ],
"tags" : "Element,Container,WebApp",
@@ -1193,22 +1531,22 @@
"relationships" : [ {
"description" : "sends notifications with",
"destinationId" : "5",
- "id" : "47",
- "linkedRelationshipId" : "45",
+ "id" : "75",
+ "linkedRelationshipId" : "73",
"sourceId" : "10",
"technology" : "HTTPS"
}, {
"description" : "Authenticates with",
"destinationId" : "4",
- "id" : "77",
- "linkedRelationshipId" : "75",
+ "id" : "112",
+ "linkedRelationshipId" : "110",
"sourceId" : "10",
"technology" : "HTTPS"
}, {
"description" : "Pulls company details from",
"destinationId" : "6",
- "id" : "80",
- "linkedRelationshipId" : "78",
+ "id" : "115",
+ "linkedRelationshipId" : "113",
"sourceId" : "10",
"technology" : "HTTPS"
} ],
@@ -1217,56 +1555,73 @@
},
"name" : "Central Digital Platform",
"properties" : {
- "structurizr.dsl" : "d29ya3NwYWNlICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iIHsKCiAgICAhaWRlbnRpZmllcnMgaGllcmFyY2hpY2FsCgogICAgbW9kZWwgewogICAgICAgIHN1cHBsaWVyID0gcGVyc29uICJTdXBwbGllciIKICAgICAgICBidXllciA9IHBlcnNvbiAiQnV5ZXIiCiAgICAgICAgZVNlbmRlciA9IHNvZnR3YXJlU3lzdGVtICJlU2VuZGVyIiAiQ29tbWVyY2lhbCBTb2Z0d2FyZSB0aGF0IEJ1eWVycyB1c2UgdG8gbWFuYWdlIHRlbmRlciBwcm9jZXNzZXMiCiAgICAgICAgb25lTG9naW4gPSBzb2Z0d2FyZVN5c3RlbSAiR292LnVrIE9uZSBMb2dpbiIgIkxldCB1c2VycyBzaWduIGluIGFuZCBwcm92ZSB0aGVpciBpZGVudGl0aWVzIHRvIHVzZSB5b3VyIHNlcnZpY2UiCiAgICAgICAgZ292Tm90aWZ5ID0gc29mdHdhcmVTeXN0ZW0gIkdvdi51ayBOb3RpZnkiICJTZW5kcyBlbWFpbHMsIHRleHQgbWVzc2FnZXMgYW5kIGxldHRlcnMiCiAgICAgICAgY29tcGFuaWVzSG91c2UgPSBzb2Z0d2FyZVN5c3RlbSAiQ29tcGFuaWVzIEhvdXNlIiAiUHJvdmlkZXMgcmVnaXN0ZXJlZCBjb21wYW55IGRldGFpbHMiCiAgICAgICAgZnRzID0gc29mdHdhcmVTeXN0ZW0gIkZpbmQgYSBUZW5kZXIiCiAgICAgICAgY2ZzID0gc29mdHdhcmVTeXN0ZW0gIlN1cHBsaWVyIEluZm9ybWF0aW9uIGFuZCBDb250cmFjdHMgRmluZGVyIgogICAgICAgIHBwZyA9IHNvZnR3YXJlU3lzdGVtICJQdWJsaWMgUHJvY3VyZW1lbnQgR2F0ZXdheSIKICAgICAgICBjZHAgPSBzb2Z0d2FyZVN5c3RlbSAiQ2VudHJhbCBEaWdpdGFsIFBsYXRmb3JtIiAiU3VwcG9ydHMgcHJvY3VyZW1lbnQiIHsKCiAgICAgICAgICAgIG1lc3NhZ2VRdWV1ZSA9IGNvbnRhaW5lciAiTWVzc2FnZSBRdWV1ZSIgIiIgU1FTICJNZXNzYWdlIFF1ZXVlIiB7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGdyb3VwICJFbnRpdHkgVmVyaWZpY2F0aW9uIiB7CiAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25EYXRhYmFzZSA9IGNvbnRhaW5lciAiRW50aXR5IFZlcmlmaWNhdGlvbiBEYXRhYmFzZSIgIiIgUG9zdGdyZVNRTCBEYXRhYmFzZSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb24gPSBjb250YWluZXIgIkVudGl0eSBWZXJpZmljYXRpb24iICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uRW5kcG9pbnQgPSBjb21wb25lbnQgIkVudGl0eSBWZXJpZmljYXRpb24gRW5kcG9pbnQiICJRdWVyaWVzIGtub3duIGlkZW50aWZlcnMuIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uVXNlQ2FzZSA9IGNvbXBvbmVudCAiVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uVXNlQ2FzZSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICAtPiBlbnRpdHlWZXJpZmljYXRpb25EYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBncm91cCAiT3JnYW5pc2F0aW9uIEluZm9ybWF0aW9uIiB7CiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlID0gY29udGFpbmVyICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24gRGF0YWJhc2UiICIiIFBvc3RncmVTUUwgRGF0YWJhc2UgewogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmlsZVN0b3JhZ2UgPSBjb250YWluZXIgIkZpbGUgU3RvcmFnZSIgIiIgUzMgIkZpbGUgU3RvcmFnZSIgewogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGF1dGhvcml0eSA9IGNvbnRhaW5lciAiQXV0aG9yaXR5IiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3BlbklEIFdlbGwtS25vd24gQ29uZmlndXJhdGlvbiBFbmRwb2ludCIgIkV4cG9zZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24iICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICBvcGVuSWRKd2tzQ29uZmlndXJhdGlvbkVuZHBvaW50ID0gY29tcG9uZW50ICJPcGVuSUQgV2VsbC1Lbm93biBKV0tTIENvbmZpZ3VyYXRpb24gRW5kcG9pbnQiICJFeHBvc2VzIEpzb24gV2ViIEtleSBTZXQiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB0b2tlbkVuZHBvaW50ID0gY29tcG9uZW50ICJUb2tlbiBlbmRwb2ludCIgIkV4Y2hhbmdlcyBhIHZhbGlkIE9uZSBMb2dpbiB0b2tlbiB0byBhIGxvbmdlci1saXZlZCB0b2tlbiB3aXRoIGFkZGl0aW9uYWwgY2xhaW1zLiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRlbmFudEFwaSA9IGNvbnRhaW5lciAiVGVuYW50IEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRFbmRwb2ludCA9IGNvbXBvbmVudCAiVGVuYW50IEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJUZW5hbnRVc2VDYXNlID0gY29tcG9uZW50ICJSZWdpc3RlciBUZW5hbnQgVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgZ2V0VGVuYW50VXNlQ2FzZSA9IGNvbXBvbmVudCAiR2V0IFRlbmFudCBVc2UgQ2FzZSIKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRQZXJzaXN0ZW5jZSA9IGNvbXBvbmVudCAiUGVyc2lzdGVuY2UiICIiICJQcm9qZWN0IgogICAgICAgICAgICAgICAgICAgIHRlbmFudEVuZHBvaW50IC0+IHJlZ2lzdGVyVGVuYW50VXNlQ2FzZSAiRXhlY3V0ZXMiCiAgICAgICAgICAgICAgICAgICAgdGVuYW50RW5kcG9pbnQgLT4gZ2V0VGVuYW50VXNlQ2FzZSAiRXhlY3V0ZXMiCiAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJUZW5hbnRVc2VDYXNlIC0+IHRlbmFudFBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICBnZXRUZW5hbnRVc2VDYXNlIC0+IHRlbmFudFBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRQZXJzaXN0ZW5jZSAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwZXJzb25BcGkgPSBjb250YWluZXIgIlBlcnNvbiBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgcGVyc29uRW5kcG9pbnQgPSBjb21wb25lbnQgIlBlcnNvbiBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkFwaSA9IGNvbnRhaW5lciAiT3JnYW5pc2F0aW9uIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSA9IGNvbXBvbmVudCAiVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IGdvdk5vdGlmeSAic2VuZHMgbm90aWZpY2F0aW9ucyB3aXRoIiAiSFRUUFMiCiAgICAgICAgICAgICAgICAgICAgLT4gb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25EYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9ybXNBcGkgPSBjb250YWluZXIgIkZvcm1zIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBmb3Jtc0VuZHBvaW50ID0gY29tcG9uZW50ICJGb3JtcyBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gZmlsZVN0b3JhZ2UgIndyaXRlcyB0byIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQXBpID0gY29udGFpbmVyICJEYXRhIFNoYXJpbmcgQVBJIiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nRW5kcG9pbnQgPSBjb21wb25lbnQgIkRhdGEgU2hhcmluZyBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gZmlsZVN0b3JhZ2UgIndyaXRlcyB0byAvIHJlYWRzIGZyb20iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25BcHAgPSBjb250YWluZXIgIk9yZ2FuaXNhdGlvbiBBcHAiICJBY2NvdW50ICYgZGF0YSBjYXB0dXJlIGZyb250ZW5kIiAiQXNwLk5ldCBDb3JlIE1WQyIgV2ViQXBwIHsKICAgICAgICAgICAgICAgICAgICBncm91cCAiTGlicmFyaWVzIiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbmFudENsaWVudCA9IGNvbXBvbmVudCAiVGVuYW50IENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIFRlbmFudCBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbkNsaWVudCA9IGNvbXBvbmVudCAiUGVyc29uIENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIFBlcnNvbiBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkNsaWVudCA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIE9yZ2FuaXNhdGlvbiBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1zQ2xpZW50ID0gY29tcG9uZW50ICJGb3JtcyBDbGllbnQiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFrZXMgQVBJIGNhbGxzIHRvIHRoZSBGb3JtcyBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQ2xpZW50ID0gY29tcG9uZW50ICJEYXRhIFNoYXJpbmcgQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgRGF0YSBTaGFyaW5nIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uQ2xpZW50ID0gY29tcG9uZW50ICJFbnRpdHkgVmVyaWZpY2F0aW9uIENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIEVudGl0eSBWZXJpZmljYXRpb24gQVBJIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciA9IGNvbXBvbmVudCAiTVZDIENvbnRyb2xsZXIiICJFbmFibGVzIHdlYiB1c2VycyB0byBwZXJmb3JtIHRhc2tzLiIgIkFzcC5OZXQgQ29yZSBNVkMgQ29udHJvbGxlciIKCiAgICAgICAgICAgICAgICAgICAgc3VwcGxpZXIgLT4gbXZjQ29udHJvbGxlciAiVXNlcyIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIGJ1eWVyIC0+IG12Y0NvbnRyb2xsZXIgIlVzZXMiICJIVFRQUyIKCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBvbmVMb2dpbiAiQXV0aGVudGljYXRlcyB3aXRoIiAiSFRUUFMiCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBjb21wYW5pZXNIb3VzZSAiUHVsbHMgY29tcGFueSBkZXRhaWxzIGZyb20iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGF1dGhvcml0eS50b2tlbkVuZHBvaW50ICJBdXRoZW50aWNhdGVzIGFuZCBhdXRob3Jpc2VzIHdpdGgiICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IHRlbmFudENsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IHBlcnNvbkNsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IG9yZ2FuaXNhdGlvbkNsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGZvcm1zQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gZGF0YVNoYXJpbmdDbGllbnQgIlVzZXMiCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBlbnRpdHlWZXJpZmljYXRpb25DbGllbnQgIlVzZXMiCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBmaWxlU3RvcmFnZSAid3JpdGVzIHRvIiAiSFRUUFMiCgogICAgICAgICAgICAgICAgICAgIHRlbmFudENsaWVudCAtPiB0ZW5hbnRBcGkudGVuYW50RW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBwZXJzb25DbGllbnQgLT4gcGVyc29uQXBpLnBlcnNvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uQ2xpZW50IC0+IG9yZ2FuaXNhdGlvbkFwaS5vcmdhbmlzYXRpb25FbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICAgICAgICAgIGZvcm1zQ2xpZW50IC0+IGZvcm1zQXBpLmZvcm1zRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBkYXRhU2hhcmluZ0NsaWVudCAtPiBkYXRhU2hhcmluZ0FwaS5kYXRhU2hhcmluZ0VuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uQ2xpZW50IC0+IGVudGl0eVZlcmlmaWNhdGlvbi5lbnRpdHlWZXJpZmljYXRpb25FbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgoKICAgICAgICAgICAgICAgICAgICAtPiBjZHAuYXV0aG9yaXR5Lm9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIE9wZW5JRCBjb25maWd1cmF0aW9uIGZyb20iCiAgICAgICAgICAgICAgICAgICAgLT4gY2RwLmF1dGhvcml0eS5vcGVuSWRKd2tzQ29uZmlndXJhdGlvbkVuZHBvaW50ICJSZXRyaWV2ZXMgSnNvbiBXZWIgS2V5IFNldCBmcm9tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlU2VuZGVyIC0+IGNkcC5kYXRhU2hhcmluZ0FwaS5kYXRhU2hhcmluZ0VuZHBvaW50ICJMb29rcyB1cCBzdXBwbGllciBpbmZvcm1hdGlvbiIgIkhUVFBTL2pzb24iCiAgICAgICAgYnV5ZXIgLT4gZVNlbmRlciAiVXNlcyIKCiAgICAgICAgZnRzIC0+IG9uZUxvZ2luICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICAgICAgZnRzIC0+IGNkcC5hdXRob3JpdHkudG9rZW5FbmRwb2ludCAiQXV0aGVudGljYXRlcyB3aXRoIgogICAgICAgIGZ0cyAtPiBjZHAuYXV0aG9yaXR5Lm9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIE9wZW5JRCBjb25maWd1cmF0aW9uIGZyb20iCiAgICAgICAgZnRzIC0+IGNkcC5hdXRob3JpdHkub3BlbklkSndrc0NvbmZpZ3VyYXRpb25FbmRwb2ludCAiUmV0cmlldmVzIEpzb24gV2ViIEtleSBTZXQgZnJvbSIKICAgICAgICBmdHMgLT4gY2RwLm9yZ2FuaXNhdGlvbkFwaS5vcmdhbmlzYXRpb25FbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgIGNmcyAtPiBjZHAuYXV0aG9yaXR5ICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICAgICAgcHBnIC0+IGNkcC5hdXRob3JpdHkgIkF1dGhlbnRpY2F0ZXMgd2l0aCIKICAgIH0KCiAgICB2aWV3cyB7CiAgICAgICAgc3lzdGVtQ29udGV4dCBjZHAgIkNEUC0xLVN5c3RlbUNvbnRleHQiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgc3lzdGVtIGNvbnRleHQgZGlhZ3JhbSBmb3IgdGhlIENlbnRyYWwgRGlnaXRhbCBQbGF0Zm9ybS4iCiAgICAgICAgfQogICAgICAgIGNvbnRhaW5lciBjZHAgIkNEUC0yLUNvbnRhaW5lclZpZXciIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29udGFpbmVyIGRpYWdyYW0gZm9yIHRoZSBDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0uIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLmF1dGhvcml0eSAiQ0RQLTMtQXV0aG9yaXR5LUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBBdXRob3JpdHkgc2VydmljZS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAub3JnYW5pc2F0aW9uQXBwICJDRFAtMy1PcmdhbmlzYXRpb25BcHAtQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFdlYiBBcHBsaWNhdGlvbi4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAudGVuYW50QXBpICJDRFAtNC1UZW5hbnRBcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFRlbmFudCBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLnBlcnNvbkFwaSAiQ0RQLTUtUGVyc29uQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBQZXJzb24gQVBJLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC5vcmdhbmlzYXRpb25BcGkgIkNEUC02LU9yZ2FuaXNhdGlvbkFwaS1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgT3JnYW5pc2F0aW9uIEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuZm9ybXNBcGkgIkNEUC03LUZvcm1zQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBGb3JtcyBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLmRhdGFTaGFyaW5nQXBpICJDRFAtOC1EYXRhU2hhcmluZ0FwaS1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgRGF0YSBTaGFyaW5nIEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuZW50aXR5VmVyaWZpY2F0aW9uICJDRFAtOS1FbnRpdHlWZXJpZmljYXRpb24tQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIEVudGl0eSBWZXJpZmljYXRpb24uIgogICAgICAgIH0KICAgICAgICB0aGVtZSBkZWZhdWx0CiAgICAgICAgc3R5bGVzIHsKICAgICAgICAgICAgZWxlbWVudCBEYXRhYmFzZSB7CiAgICAgICAgICAgICAgICBzaGFwZSBDeWxpbmRlcgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIk1lc3NhZ2UgUXVldWUiIHsKICAgICAgICAgICAgICAgIHNoYXBlIFBpcGUKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50ICJGaWxlIFN0b3JhZ2UiIHsKICAgICAgICAgICAgICAgIHNoYXBlIEZvbGRlcgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgV2ViQXBwIHsKICAgICAgICAgICAgICAgIHNoYXBlIFdlYkJyb3dzZXIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb25maWd1cmF0aW9uIHsKICAgICAgICBzY29wZSBzb2Z0d2FyZXN5c3RlbQogICAgfQoKfQ=="
+ "structurizr.dsl" : "d29ya3NwYWNlICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iIHsKCiAgICAhaWRlbnRpZmllcnMgaGllcmFyY2hpY2FsCgogICAgbW9kZWwgewogICAgICAgIHN1cHBsaWVyID0gcGVyc29uICJTdXBwbGllciIKICAgICAgICBidXllciA9IHBlcnNvbiAiQnV5ZXIiCiAgICAgICAgZVNlbmRlciA9IHNvZnR3YXJlU3lzdGVtICJlU2VuZGVyIiAiQ29tbWVyY2lhbCBTb2Z0d2FyZSB0aGF0IEJ1eWVycyB1c2UgdG8gbWFuYWdlIHRlbmRlciBwcm9jZXNzZXMiCiAgICAgICAgb25lTG9naW4gPSBzb2Z0d2FyZVN5c3RlbSAiR292LnVrIE9uZSBMb2dpbiIgIkxldCB1c2VycyBzaWduIGluIGFuZCBwcm92ZSB0aGVpciBpZGVudGl0aWVzIHRvIHVzZSB5b3VyIHNlcnZpY2UiCiAgICAgICAgZ292VWtOb3RpZnkgPSBzb2Z0d2FyZVN5c3RlbSAiR292LnVrIE5vdGlmeSIgIlNlbmRzIGVtYWlscywgdGV4dCBtZXNzYWdlcyBhbmQgbGV0dGVycyIKICAgICAgICBjb21wYW5pZXNIb3VzZSA9IHNvZnR3YXJlU3lzdGVtICJDb21wYW5pZXMgSG91c2UiICJQcm92aWRlcyByZWdpc3RlcmVkIGNvbXBhbnkgZGV0YWlscyIKICAgICAgICBmdHMgPSBzb2Z0d2FyZVN5c3RlbSAiRmluZCBhIFRlbmRlciIKICAgICAgICBjZnMgPSBzb2Z0d2FyZVN5c3RlbSAiU3VwcGxpZXIgSW5mb3JtYXRpb24gYW5kIENvbnRyYWN0cyBGaW5kZXIiCiAgICAgICAgcHBnID0gc29mdHdhcmVTeXN0ZW0gIlB1YmxpYyBQcm9jdXJlbWVudCBHYXRld2F5IgogICAgICAgIGNkcCA9IHNvZnR3YXJlU3lzdGVtICJDZW50cmFsIERpZ2l0YWwgUGxhdGZvcm0iICJTdXBwb3J0cyBwcm9jdXJlbWVudCIgewoKICAgICAgICAgICAgbWVzc2FnZVF1ZXVlID0gY29udGFpbmVyICJNZXNzYWdlIFF1ZXVlIiAiIiBTUVMgIk1lc3NhZ2UgUXVldWUiIHsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZ3JvdXAgIkVudGl0eSBWZXJpZmljYXRpb24iIHsKICAgICAgICAgICAgICAgIGVudGl0eVZlcmlmaWNhdGlvbkRhdGFiYXNlID0gY29udGFpbmVyICJFbnRpdHkgVmVyaWZpY2F0aW9uIERhdGFiYXNlIiAiIiBQb3N0Z3JlU1FMIERhdGFiYXNlIHsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVudGl0eVZlcmlmaWNhdGlvbiA9IGNvbnRhaW5lciAiRW50aXR5IFZlcmlmaWNhdGlvbiIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBncm91cCAiTGlicmFyaWVzIiB7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBtcSA9IGNvbXBvbmVudCAiTVEiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWVzc2FnZSBRdWV1ZSBjbGllbnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVudGl0eVZlcmlmaWNhdGlvbkVuZHBvaW50ID0gY29tcG9uZW50ICJFbnRpdHkgVmVyaWZpY2F0aW9uIEVuZHBvaW50IiAiUXVlcmllcyBrbm93biBpZGVudGlmZXJzLiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIG1xU3Vic2NyaWJlciA9IGNvbXBvbmVudCAiTWVzc2FnZSBTdWJzY3JpYmVyIgogICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlID0gY29tcG9uZW50ICJQZXJzaXN0ZW5jZSIgIkVudGl0eUZyYW1ld29yayBDb3JlIG1vZGVsIGFuZCByZXBvc2l0b3JpZXMiICJDIyBOYW1lc3BhY2UiCiAgICAgICAgICAgICAgICAgICAgZW50aXR5VmVyaWZpY2F0aW9uRW5kcG9pbnQgLT4gdXNlQ2FzZSAiRXhlY3V0ZXMiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSAtPiBwZXJzaXN0ZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgbXFTdWJzY3JpYmVyIC0+IHBlcnNpc3RlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IG1xICJDYWxscyIKICAgICAgICAgICAgICAgICAgICBtcSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtcSAtPiBtcVN1YnNjcmliZXIgIkNhbGxzIgogICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbmNlIC0+IGVudGl0eVZlcmlmaWNhdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGdyb3VwICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24iIHsKICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgPSBjb250YWluZXIgIk9yZ2FuaXNhdGlvbiBJbmZvcm1hdGlvbiBEYXRhYmFzZSIgIiIgUG9zdGdyZVNRTCBEYXRhYmFzZSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmaWxlU3RvcmFnZSA9IGNvbnRhaW5lciAiRmlsZSBTdG9yYWdlIiAiIiBTMyAiRmlsZSBTdG9yYWdlIiB7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYXV0aG9yaXR5ID0gY29udGFpbmVyICJBdXRob3JpdHkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgIkxpYnJhcmllcyIgewogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24gUGVyc2lzdGVuY2UiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiRXhwb3NlcyB0aGUgZGF0YWJhc2UgbW9kZWwsIHF1ZXJpZXMsIGFuZCBwZXJzaXN0ZW5jZSBvcGVyYXRpb25zIHdpdGggRW50aXR5RnJhbWV3b3JrIENvcmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9wZW5JZENvbmZpZ3VyYXRpb25FbmRwb2ludCA9IGNvbXBvbmVudCAiT3BlbklEIFdlbGwtS25vd24gQ29uZmlndXJhdGlvbiBFbmRwb2ludCIgIkV4cG9zZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24iICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICBvcGVuSWRKd2tzQ29uZmlndXJhdGlvbkVuZHBvaW50ID0gY29tcG9uZW50ICJPcGVuSUQgV2VsbC1Lbm93biBKV0tTIENvbmZpZ3VyYXRpb24gRW5kcG9pbnQiICJFeHBvc2VzIEpzb24gV2ViIEtleSBTZXQiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB0b2tlbkVuZHBvaW50ID0gY29tcG9uZW50ICJUb2tlbiBlbmRwb2ludCIgIkV4Y2hhbmdlcyBhIHZhbGlkIE9uZSBMb2dpbiB0b2tlbiB0byBhIGxvbmdlci1saXZlZCB0b2tlbiB3aXRoIGFkZGl0aW9uYWwgY2xhaW1zLiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHRva2VuU2VydmljZSA9IGNvbXBvbmVudCAiVG9rZW4gU2VydmljZSIgIkNyZWF0ZXMgYW5kIHZhbGlkYXRlcyBhdXRoZW50aWNhdGlvbiB0b2tlbnMiCiAgICAgICAgICAgICAgICAgICAgdG9rZW5FbmRwb2ludCAtPiB0b2tlblNlcnZpY2UgIkNhbGxzIgogICAgICAgICAgICAgICAgICAgIHRva2VuU2VydmljZSAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvblBlcnNpc2VuY2UgIkNhbGxzIgogICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAtPiBvcmdhbmlzYXRpb25JbmZvcm1hdGlvbkRhdGFiYXNlICJyZWFkcy93cml0ZXMiICJTUUwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ZW5hbnRBcGkgPSBjb250YWluZXIgIlRlbmFudCBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgIkxpYnJhcmllcyIgewogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24gUGVyc2lzdGVuY2UiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiRXhwb3NlcyB0aGUgZGF0YWJhc2UgbW9kZWwsIHF1ZXJpZXMsIGFuZCBwZXJzaXN0ZW5jZSBvcGVyYXRpb25zIHdpdGggRW50aXR5RnJhbWV3b3JrIENvcmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRlbmFudEVuZHBvaW50ID0gY29tcG9uZW50ICJUZW5hbnQgRW5kcG9pbnQiICIiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlID0gY29tcG9uZW50ICJVc2UgQ2FzZSIKICAgICAgICAgICAgICAgICAgICB0ZW5hbnRFbmRwb2ludCAtPiB1c2VDYXNlICJFeGVjdXRlcyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBlcnNvbkFwaSA9IGNvbnRhaW5lciAiUGVyc29uIEFQSSIgIiIgIkFzcC5OZXQgQ29yZSIgV2ViQXBpIHsKICAgICAgICAgICAgICAgICAgICBncm91cCAiTGlicmFyaWVzIiB7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JbmZvcm1hdGlvblBlcnNpc2VuY2UgPSBjb21wb25lbnQgIk9yZ2FuaXNhdGlvbiBJbmZvcm1hdGlvbiBQZXJzaXN0ZW5jZSIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJFeHBvc2VzIHRoZSBkYXRhYmFzZSBtb2RlbCwgcXVlcmllcywgYW5kIHBlcnNpc3RlbmNlIG9wZXJhdGlvbnMgd2l0aCBFbnRpdHlGcmFtZXdvcmsgQ29yZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcGVyc29uRW5kcG9pbnQgPSBjb21wb25lbnQgIlBlcnNvbiBFbmRwb2ludCIgIiIgIkFzcC5OZXQgQ29yZSBXZWIgQVBJIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgPSBjb21wb25lbnQgIlVzZSBDYXNlIgogICAgICAgICAgICAgICAgICAgIHBlcnNvbkVuZHBvaW50IC0+IHVzZUNhc2UgIkV4ZWN1dGVzIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlICJDYWxscyIKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25JbmZvcm1hdGlvblBlcnNpc2VuY2UgLT4gb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25EYXRhYmFzZSAicmVhZHMvd3JpdGVzIiAiU1FMIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uQXBpID0gY29udGFpbmVyICJPcmdhbmlzYXRpb24gQVBJIiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIGdyb3VwICJMaWJyYXJpZXMiIHsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIEluZm9ybWF0aW9uIFBlcnNpc3RlbmNlIiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkV4cG9zZXMgdGhlIGRhdGFiYXNlIG1vZGVsLCBxdWVyaWVzLCBhbmQgcGVyc2lzdGVuY2Ugb3BlcmF0aW9ucyB3aXRoIEVudGl0eUZyYW1ld29yayBDb3JlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbXEgPSBjb21wb25lbnQgIk1RIiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1lc3NhZ2UgUXVldWUgY2xpZW50IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZ292VWtOb3RpZnlDbGllbnQgPSBjb21wb25lbnQgIkdvdi51ayBOb3RpZnkiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiR292LnVrIE5vdGlmeSBjbGllbnQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkVuZHBvaW50ID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gRW5kcG9pbnQiICIiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlID0gY29tcG9uZW50ICJVc2UgQ2FzZSIKICAgICAgICAgICAgICAgICAgICBtcVN1YnNjcmliZXIgPSBjb21wb25lbnQgIk1lc3NhZ2UgU3Vic2NyaWJlciIKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25FbmRwb2ludCAtPiB1c2VDYXNlICJFeGVjdXRlcyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSAtPiBtcSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSAtPiBnb3ZVa05vdGlmeUNsaWVudCAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgbXFTdWJzY3JpYmVyIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgICAgICBtcSAtPiBtZXNzYWdlUXVldWUgInB1Ymxpc2hlcyB0byAvIGxpc3RlbnMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtcSAtPiBtcVN1YnNjcmliZXIgIkNhbGxzIgogICAgICAgICAgICAgICAgICAgIGdvdlVrTm90aWZ5Q2xpZW50IC0+IGdvdlVrTm90aWZ5ICJzZW5kcyBub3RpZmljYXRpb25zIHdpdGgiICJIVFRQUyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcm1zQXBpID0gY29udGFpbmVyICJGb3JtcyBBUEkiICIiICJBc3AuTmV0IENvcmUiIFdlYkFwaSB7CiAgICAgICAgICAgICAgICAgICAgZ3JvdXAgIkxpYnJhcmllcyIgewogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gSW5mb3JtYXRpb24gUGVyc2lzdGVuY2UiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiRXhwb3NlcyB0aGUgZGF0YWJhc2UgbW9kZWwsIHF1ZXJpZXMsIGFuZCBwZXJzaXN0ZW5jZSBvcGVyYXRpb25zIHdpdGggRW50aXR5RnJhbWV3b3JrIENvcmUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvcm1zRW5kcG9pbnQgPSBjb21wb25lbnQgIkZvcm1zIEVuZHBvaW50IiAiIiAiQXNwLk5ldCBDb3JlIFdlYiBBUEkiCiAgICAgICAgICAgICAgICAgICAgdXNlQ2FzZSA9IGNvbXBvbmVudCAiVXNlIENhc2UiCiAgICAgICAgICAgICAgICAgICAgZm9ybXNFbmRwb2ludCAtPiB1c2VDYXNlICJFeGVjdXRlcyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IGZpbGVTdG9yYWdlICJ3cml0ZXMgdG8iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQXBpID0gY29udGFpbmVyICJEYXRhIFNoYXJpbmcgQVBJIiAiIiAiQXNwLk5ldCBDb3JlIiBXZWJBcGkgewogICAgICAgICAgICAgICAgICAgIGdyb3VwICJMaWJyYXJpZXMiIHsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSA9IGNvbXBvbmVudCAiT3JnYW5pc2F0aW9uIEluZm9ybWF0aW9uIFBlcnNpc3RlbmNlIiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIkV4cG9zZXMgdGhlIGRhdGFiYXNlIG1vZGVsLCBxdWVyaWVzLCBhbmQgcGVyc2lzdGVuY2Ugb3BlcmF0aW9ucyB3aXRoIEVudGl0eUZyYW1ld29yayBDb3JlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkYXRhU2hhcmluZ0VuZHBvaW50ID0gY29tcG9uZW50ICJEYXRhIFNoYXJpbmcgRW5kcG9pbnQiICIiICJBc3AuTmV0IENvcmUgV2ViIEFQSSIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlID0gY29tcG9uZW50ICJVc2UgQ2FzZSIKICAgICAgICAgICAgICAgICAgICBkYXRhU2hhcmluZ0VuZHBvaW50IC0+IHVzZUNhc2UgIkV4ZWN1dGVzIgogICAgICAgICAgICAgICAgICAgIHVzZUNhc2UgLT4gZmlsZVN0b3JhZ2UgIndyaXRlcyB0byAvIHJlYWRzIGZyb20iICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICB1c2VDYXNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uUGVyc2lzZW5jZSAiQ2FsbHMiCiAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSW5mb3JtYXRpb25QZXJzaXNlbmNlIC0+IG9yZ2FuaXNhdGlvbkluZm9ybWF0aW9uRGF0YWJhc2UgInJlYWRzL3dyaXRlcyIgIlNRTCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbkFwcCA9IGNvbnRhaW5lciAiT3JnYW5pc2F0aW9uIEFwcCIgIkFjY291bnQgJiBkYXRhIGNhcHR1cmUgZnJvbnRlbmQiICJBc3AuTmV0IENvcmUgTVZDIiBXZWJBcHAgewogICAgICAgICAgICAgICAgICAgIGdyb3VwICJMaWJyYXJpZXMiIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVuYW50Q2xpZW50ID0gY29tcG9uZW50ICJUZW5hbnQgQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgVGVuYW50IEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uQ2xpZW50ID0gY29tcG9uZW50ICJQZXJzb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgUGVyc29uIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uQ2xpZW50ID0gY29tcG9uZW50ICJPcmdhbmlzYXRpb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgT3JnYW5pc2F0aW9uIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9ybXNDbGllbnQgPSBjb21wb25lbnQgIkZvcm1zIENsaWVudCIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVjaG5vbG9neSAiQyMgcHJvamVjdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uICJNYWtlcyBBUEkgY2FsbHMgdG8gdGhlIEZvcm1zIEFQSSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3MgIlNoYXJlZCBDb21wb25lbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNoYXJpbmdDbGllbnQgPSBjb21wb25lbnQgIkRhdGEgU2hhcmluZyBDbGllbnQiIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ3kgIkMjIHByb2plY3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiAiTWFrZXMgQVBJIGNhbGxzIHRvIHRoZSBEYXRhIFNoYXJpbmcgQVBJIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncyAiU2hhcmVkIENvbXBvbmVudCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25DbGllbnQgPSBjb21wb25lbnQgIkVudGl0eSBWZXJpZmljYXRpb24gQ2xpZW50IiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2d5ICJDIyBwcm9qZWN0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gIk1ha2VzIEFQSSBjYWxscyB0byB0aGUgRW50aXR5IFZlcmlmaWNhdGlvbiBBUEkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzICJTaGFyZWQgQ29tcG9uZW50IgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyID0gY29tcG9uZW50ICJNVkMgQ29udHJvbGxlciIgIkVuYWJsZXMgd2ViIHVzZXJzIHRvIHBlcmZvcm0gdGFza3MuIiAiQXNwLk5ldCBDb3JlIE1WQyBDb250cm9sbGVyIgoKICAgICAgICAgICAgICAgICAgICBzdXBwbGllciAtPiBtdmNDb250cm9sbGVyICJVc2VzIiAiSFRUUFMiCiAgICAgICAgICAgICAgICAgICAgYnV5ZXIgLT4gbXZjQ29udHJvbGxlciAiVXNlcyIgIkhUVFBTIgoKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IG9uZUxvZ2luICJBdXRoZW50aWNhdGVzIHdpdGgiICJIVFRQUyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGNvbXBhbmllc0hvdXNlICJQdWxscyBjb21wYW55IGRldGFpbHMgZnJvbSIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gYXV0aG9yaXR5LnRva2VuRW5kcG9pbnQgIkF1dGhlbnRpY2F0ZXMgYW5kIGF1dGhvcmlzZXMgd2l0aCIgIkhUVFBTIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gdGVuYW50Q2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gcGVyc29uQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gb3JnYW5pc2F0aW9uQ2xpZW50ICJVc2VzIgogICAgICAgICAgICAgICAgICAgIG12Y0NvbnRyb2xsZXIgLT4gZm9ybXNDbGllbnQgIlVzZXMiCiAgICAgICAgICAgICAgICAgICAgbXZjQ29udHJvbGxlciAtPiBkYXRhU2hhcmluZ0NsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGVudGl0eVZlcmlmaWNhdGlvbkNsaWVudCAiVXNlcyIKICAgICAgICAgICAgICAgICAgICBtdmNDb250cm9sbGVyIC0+IGZpbGVTdG9yYWdlICJ3cml0ZXMgdG8iICJIVFRQUyIKCiAgICAgICAgICAgICAgICAgICAgdGVuYW50Q2xpZW50IC0+IHRlbmFudEFwaS50ZW5hbnRFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICAgICAgICAgIHBlcnNvbkNsaWVudCAtPiBwZXJzb25BcGkucGVyc29uRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBvcmdhbmlzYXRpb25DbGllbnQgLT4gb3JnYW5pc2F0aW9uQXBpLm9yZ2FuaXNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgICAgICAgICAgICAgZm9ybXNDbGllbnQgLT4gZm9ybXNBcGkuZm9ybXNFbmRwb2ludCAiQ2FsbHMiICJIVFRQUy9qc29uIgogICAgICAgICAgICAgICAgICAgIGRhdGFTaGFyaW5nQ2xpZW50IC0+IGRhdGFTaGFyaW5nQXBpLmRhdGFTaGFyaW5nRW5kcG9pbnQgIkNhbGxzIiAiSFRUUFMvanNvbiIKICAgICAgICAgICAgICAgICAgICBlbnRpdHlWZXJpZmljYXRpb25DbGllbnQgLT4gZW50aXR5VmVyaWZpY2F0aW9uLmVudGl0eVZlcmlmaWNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCgogICAgICAgICAgICAgICAgICAgIC0+IGNkcC5hdXRob3JpdHkub3BlbklkQ29uZmlndXJhdGlvbkVuZHBvaW50ICJSZXRyaWV2ZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24gZnJvbSIKICAgICAgICAgICAgICAgICAgICAtPiBjZHAuYXV0aG9yaXR5Lm9wZW5JZEp3a3NDb25maWd1cmF0aW9uRW5kcG9pbnQgIlJldHJpZXZlcyBKc29uIFdlYiBLZXkgU2V0IGZyb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVTZW5kZXIgLT4gY2RwLmRhdGFTaGFyaW5nQXBpLmRhdGFTaGFyaW5nRW5kcG9pbnQgIkxvb2tzIHVwIHN1cHBsaWVyIGluZm9ybWF0aW9uIiAiSFRUUFMvanNvbiIKICAgICAgICBidXllciAtPiBlU2VuZGVyICJVc2VzIgoKICAgICAgICBmdHMgLT4gb25lTG9naW4gIkF1dGhlbnRpY2F0ZXMgd2l0aCIKICAgICAgICBmdHMgLT4gY2RwLmF1dGhvcml0eS50b2tlbkVuZHBvaW50ICJBdXRoZW50aWNhdGVzIHdpdGgiCiAgICAgICAgZnRzIC0+IGNkcC5hdXRob3JpdHkub3BlbklkQ29uZmlndXJhdGlvbkVuZHBvaW50ICJSZXRyaWV2ZXMgT3BlbklEIGNvbmZpZ3VyYXRpb24gZnJvbSIKICAgICAgICBmdHMgLT4gY2RwLmF1dGhvcml0eS5vcGVuSWRKd2tzQ29uZmlndXJhdGlvbkVuZHBvaW50ICJSZXRyaWV2ZXMgSnNvbiBXZWIgS2V5IFNldCBmcm9tIgogICAgICAgIGZ0cyAtPiBjZHAub3JnYW5pc2F0aW9uQXBpLm9yZ2FuaXNhdGlvbkVuZHBvaW50ICJDYWxscyIgIkhUVFBTL2pzb24iCiAgICAgICAgY2ZzIC0+IGNkcC5hdXRob3JpdHkgIkF1dGhlbnRpY2F0ZXMgd2l0aCIKICAgICAgICBwcGcgLT4gY2RwLmF1dGhvcml0eSAiQXV0aGVudGljYXRlcyB3aXRoIgogICAgfQoKICAgIHZpZXdzIHsKICAgICAgICBzeXN0ZW1Db250ZXh0IGNkcCAiQ0RQLTEtU3lzdGVtQ29udGV4dCIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBzeXN0ZW0gY29udGV4dCBkaWFncmFtIGZvciB0aGUgQ2VudHJhbCBEaWdpdGFsIFBsYXRmb3JtLiIKICAgICAgICB9CiAgICAgICAgY29udGFpbmVyIGNkcCAiQ0RQLTItQ29udGFpbmVyVmlldyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb250YWluZXIgZGlhZ3JhbSBmb3IgdGhlIENlbnRyYWwgRGlnaXRhbCBQbGF0Zm9ybS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuYXV0aG9yaXR5ICJDRFAtMy1BdXRob3JpdHktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIEF1dGhvcml0eSBzZXJ2aWNlLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC5vcmdhbmlzYXRpb25BcHAgIkNEUC0zLU9yZ2FuaXNhdGlvbkFwcC1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgV2ViIEFwcGxpY2F0aW9uLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC50ZW5hbnRBcGkgIkNEUC00LVRlbmFudEFwaS1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgVGVuYW50IEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAucGVyc29uQXBpICJDRFAtNS1QZXJzb25BcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIFBlcnNvbiBBUEkuIgogICAgICAgIH0KICAgICAgICBjb21wb25lbnQgY2RwLm9yZ2FuaXNhdGlvbkFwaSAiQ0RQLTYtT3JnYW5pc2F0aW9uQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBPcmdhbmlzYXRpb24gQVBJLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC5mb3Jtc0FwaSAiQ0RQLTctRm9ybXNBcGktQ29tcG9uZW50cyIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICAgICAgZGVzY3JpcHRpb24gIlRoZSBjb21wb25lbnQgZGlhZ3JhbSBmb3IgdGhlIEZvcm1zIEFQSS4iCiAgICAgICAgfQogICAgICAgIGNvbXBvbmVudCBjZHAuZGF0YVNoYXJpbmdBcGkgIkNEUC04LURhdGFTaGFyaW5nQXBpLUNvbXBvbmVudHMiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGRlc2NyaXB0aW9uICJUaGUgY29tcG9uZW50IGRpYWdyYW0gZm9yIHRoZSBEYXRhIFNoYXJpbmcgQVBJLiIKICAgICAgICB9CiAgICAgICAgY29tcG9uZW50IGNkcC5lbnRpdHlWZXJpZmljYXRpb24gIkNEUC05LUVudGl0eVZlcmlmaWNhdGlvbi1Db21wb25lbnRzIiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBkZXNjcmlwdGlvbiAiVGhlIGNvbXBvbmVudCBkaWFncmFtIGZvciB0aGUgRW50aXR5IFZlcmlmaWNhdGlvbi4iCiAgICAgICAgfQogICAgICAgIHRoZW1lIGRlZmF1bHQKICAgICAgICBzdHlsZXMgewogICAgICAgICAgICBlbGVtZW50IERhdGFiYXNlIHsKICAgICAgICAgICAgICAgIHNoYXBlIEN5bGluZGVyCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCAiTWVzc2FnZSBRdWV1ZSIgewogICAgICAgICAgICAgICAgc2hhcGUgUGlwZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIkZpbGUgU3RvcmFnZSIgewogICAgICAgICAgICAgICAgc2hhcGUgRm9sZGVyCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCBXZWJBcHAgewogICAgICAgICAgICAgICAgc2hhcGUgV2ViQnJvd3NlcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvbmZpZ3VyYXRpb24gewogICAgICAgIHNjb3BlIHNvZnR3YXJlc3lzdGVtCiAgICB9Cgp9"
},
"views" : {
"componentViews" : [ {
- "containerId" : "21",
+ "containerId" : "30",
"description" : "The component diagram for the Authority service.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 3080,
+ "width" : 3055
},
"elements" : [ {
"id" : "7",
- "x" : 1145,
- "y" : 1285
+ "x" : 2405,
+ "y" : 635
}, {
- "id" : "22",
- "x" : 1145,
- "y" : 655
+ "id" : "28",
+ "x" : 1290,
+ "y" : 2565
}, {
- "id" : "23",
- "x" : 1770,
- "y" : 655
+ "id" : "31",
+ "x" : 1284,
+ "y" : 1834
}, {
- "id" : "24",
- "x" : 500,
- "y" : 655
+ "id" : "32",
+ "x" : 1284,
+ "y" : 220
}, {
- "id" : "61",
- "x" : 1145,
- "y" : 50
+ "id" : "33",
+ "x" : 1284,
+ "y" : 623
+ }, {
+ "id" : "34",
+ "x" : 1284,
+ "y" : 1026
+ }, {
+ "id" : "35",
+ "x" : 1284,
+ "y" : 1429
+ }, {
+ "id" : "96",
+ "x" : 200,
+ "y" : 635
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-3-Authority-Components",
"order" : 3,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "117"
- }, {
"id" : "118"
}, {
- "id" : "124"
+ "id" : "152"
}, {
- "id" : "127"
+ "id" : "153"
}, {
- "id" : "128"
+ "id" : "159"
}, {
- "id" : "83"
+ "id" : "162"
+ }, {
+ "id" : "163"
+ }, {
+ "id" : "36"
+ }, {
+ "id" : "37"
+ }, {
+ "id" : "38"
} ]
}, {
- "containerId" : "61",
+ "containerId" : "96",
"description" : "The component diagram for the Web Application.",
"dimensions" : {
"height" : 3121,
@@ -1293,59 +1648,59 @@
"x" : 4493,
"y" : 2085
}, {
- "id" : "20",
+ "id" : "29",
"x" : 3125,
"y" : 2621
}, {
- "id" : "21",
+ "id" : "30",
"x" : 5154,
"y" : 865
}, {
- "id" : "26",
+ "id" : "40",
"x" : 1038,
"y" : 2086
}, {
- "id" : "37",
+ "id" : "48",
"x" : 1729,
"y" : 2087
}, {
- "id" : "40",
+ "id" : "56",
"x" : 2420,
"y" : 2088
}, {
- "id" : "49",
+ "id" : "76",
"x" : 3111,
"y" : 2089
}, {
- "id" : "55",
+ "id" : "86",
"x" : 3802,
"y" : 2094
}, {
- "id" : "62",
+ "id" : "97",
"x" : 1038,
"y" : 1495
}, {
- "id" : "63",
+ "id" : "98",
"x" : 1726,
"y" : 1495
}, {
- "id" : "64",
+ "id" : "99",
"x" : 2414,
"y" : 1495
}, {
- "id" : "65",
+ "id" : "100",
"x" : 3102,
"y" : 1495
}, {
- "id" : "66",
+ "id" : "101",
"x" : 3790,
"y" : 1499
}, {
- "id" : "67",
+ "id" : "102",
"x" : 4478,
"y" : 1495
}, {
- "id" : "68",
+ "id" : "103",
"x" : 2473,
"y" : 874
} ],
@@ -1353,41 +1708,29 @@
"key" : "CDP-3-OrganisationApp-Components",
"order" : 4,
"relationships" : [ {
- "id" : "102"
+ "id" : "104"
}, {
- "id" : "106"
+ "id" : "107"
}, {
"id" : "110"
}, {
- "id" : "114"
- }, {
- "id" : "53"
- }, {
- "id" : "59"
- }, {
- "id" : "69"
- }, {
- "id" : "72"
- }, {
- "id" : "75"
- }, {
- "id" : "78"
+ "id" : "113"
}, {
- "id" : "82"
+ "id" : "117"
}, {
- "id" : "85"
+ "id" : "120"
}, {
- "id" : "86"
+ "id" : "121"
}, {
- "id" : "87"
+ "id" : "122"
}, {
- "id" : "88"
+ "id" : "123"
}, {
- "id" : "89"
+ "id" : "124"
}, {
- "id" : "90"
+ "id" : "125"
}, {
- "id" : "91",
+ "id" : "126",
"vertices" : [ {
"x" : 2985,
"y" : 1426
@@ -1396,239 +1739,346 @@
"y" : 2481
} ]
}, {
- "id" : "94"
+ "id" : "129"
+ }, {
+ "id" : "133"
+ }, {
+ "id" : "137"
+ }, {
+ "id" : "141"
+ }, {
+ "id" : "145"
+ }, {
+ "id" : "149"
}, {
- "id" : "98"
+ "id" : "82"
+ }, {
+ "id" : "92"
} ]
}, {
- "containerId" : "26",
+ "containerId" : "40",
"description" : "The component diagram for the Tenant API.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 2120,
+ "width" : 1585
},
"elements" : [ {
- "id" : "19",
- "x" : 1365,
- "y" : 1180
- }, {
- "id" : "27",
- "x" : 735,
- "y" : 90
- }, {
"id" : "28",
- "x" : 745,
- "y" : 635
+ "x" : 895,
+ "y" : 1620
}, {
- "id" : "29",
- "x" : 1355,
- "y" : 85
+ "id" : "41",
+ "x" : 895,
+ "y" : 1090
}, {
- "id" : "30",
- "x" : 1355,
- "y" : 635
+ "id" : "42",
+ "x" : 895,
+ "y" : 220
}, {
- "id" : "61",
- "x" : 50,
- "y" : 90
+ "id" : "43",
+ "x" : 895,
+ "y" : 655
+ }, {
+ "id" : "96",
+ "x" : 200,
+ "y" : 220
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-4-TenantApi-Components",
"order" : 5,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "31"
- }, {
- "id" : "32"
- }, {
- "id" : "33"
+ "id" : "130"
}, {
- "id" : "34"
+ "id" : "44"
}, {
- "id" : "35"
+ "id" : "45"
}, {
- "id" : "95"
+ "id" : "46"
} ]
}, {
- "containerId" : "37",
+ "containerId" : "48",
"description" : "The component diagram for the Person API.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 2135,
+ "width" : 1650
},
"elements" : [ {
- "id" : "38",
- "x" : 750,
- "y" : 35
+ "id" : "28",
+ "x" : 975,
+ "y" : 1700
}, {
- "id" : "61",
- "x" : 55,
- "y" : 35
+ "id" : "49",
+ "x" : 975,
+ "y" : 1162
+ }, {
+ "id" : "50",
+ "x" : 975,
+ "y" : 220
+ }, {
+ "id" : "51",
+ "x" : 975,
+ "y" : 691
+ }, {
+ "id" : "96",
+ "x" : 200,
+ "y" : 215
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-5-PersonApi-Components",
"order" : 6,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "99"
+ "id" : "134"
+ }, {
+ "id" : "52"
+ }, {
+ "id" : "53"
+ }, {
+ "id" : "54"
} ]
}, {
- "containerId" : "40",
+ "containerId" : "56",
"description" : "The component diagram for the Organisation API.",
"dimensions" : {
- "height" : 1900,
- "width" : 2870
+ "height" : 2311,
+ "width" : 2945
},
"elements" : [ {
"id" : "5",
- "x" : 2220,
- "y" : 219
+ "x" : 2195,
+ "y" : 2010
}, {
"id" : "7",
"x" : 200,
- "y" : 645
+ "y" : 531
}, {
"id" : "11",
- "x" : 1490,
- "y" : 920
+ "x" : 905,
+ "y" : 2010
}, {
- "id" : "41",
- "x" : 865,
- "y" : 224
+ "id" : "28",
+ "x" : 1570,
+ "y" : 2010
}, {
- "id" : "42",
- "x" : 1480,
- "y" : 219
+ "id" : "57",
+ "x" : 1560,
+ "y" : 1206
+ }, {
+ "id" : "58",
+ "x" : 915,
+ "y" : 1206
+ }, {
+ "id" : "59",
+ "x" : 2190,
+ "y" : 1206
+ }, {
+ "id" : "60",
+ "x" : 1560,
+ "y" : 231
}, {
"id" : "61",
- "x" : 200,
- "y" : 230
+ "x" : 1560,
+ "y" : 718
+ }, {
+ "id" : "62",
+ "x" : 920,
+ "y" : 720
+ }, {
+ "id" : "96",
+ "x" : 205,
+ "y" : 200
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-6-OrganisationApi-Components",
"order" : 7,
"relationships" : [ {
- "id" : "103"
+ "id" : "138"
}, {
- "id" : "129"
+ "id" : "164"
}, {
- "id" : "43"
+ "id" : "63"
}, {
- "id" : "45"
+ "id" : "64"
+ }, {
+ "id" : "65"
+ }, {
+ "id" : "66"
+ }, {
+ "id" : "67"
+ }, {
+ "id" : "68"
+ }, {
+ "id" : "70"
+ }, {
+ "id" : "72"
+ }, {
+ "id" : "73"
} ]
}, {
- "containerId" : "49",
+ "containerId" : "76",
"description" : "The component diagram for the Forms API.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 2255,
+ "width" : 2200
},
"elements" : [ {
- "id" : "20",
- "x" : 0,
- "y" : 0
+ "id" : "28",
+ "x" : 865,
+ "y" : 1754
}, {
- "id" : "50",
- "x" : 690,
- "y" : 45
+ "id" : "29",
+ "x" : 170,
+ "y" : 715
}, {
- "id" : "51",
- "x" : 0,
- "y" : 0
+ "id" : "77",
+ "x" : 865,
+ "y" : 1209
}, {
- "id" : "61",
- "x" : 40,
- "y" : 45
+ "id" : "78",
+ "x" : 865,
+ "y" : 219
+ }, {
+ "id" : "79",
+ "x" : 865,
+ "y" : 715
+ }, {
+ "id" : "96",
+ "x" : 170,
+ "y" : 219
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-7-FormsApi-Components",
"order" : 8,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "107"
+ "id" : "127"
}, {
- "id" : "52"
+ "id" : "142"
}, {
- "id" : "92"
+ "id" : "80"
+ }, {
+ "id" : "81"
+ }, {
+ "id" : "83"
+ }, {
+ "id" : "84"
} ]
}, {
- "containerId" : "55",
+ "containerId" : "86",
"description" : "The component diagram for the Data Sharing API.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 2540,
+ "width" : 2655
},
"elements" : [ {
"id" : "3",
- "x" : 685,
- "y" : 30
+ "x" : 2005,
+ "y" : 204
}, {
- "id" : "20",
- "x" : 0,
- "y" : 0
+ "id" : "28",
+ "x" : 1120,
+ "y" : 2039
}, {
- "id" : "56",
- "x" : 685,
- "y" : 530
+ "id" : "29",
+ "x" : 200,
+ "y" : 754
}, {
- "id" : "57",
- "x" : 0,
- "y" : 0
+ "id" : "87",
+ "x" : 1120,
+ "y" : 1317
}, {
- "id" : "61",
- "x" : 40,
- "y" : 530
+ "id" : "88",
+ "x" : 1120,
+ "y" : 204
+ }, {
+ "id" : "89",
+ "x" : 1120,
+ "y" : 754
+ }, {
+ "id" : "96",
+ "x" : 200,
+ "y" : 204
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-8-DataSharingApi-Components",
"order" : 9,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "111"
+ "id" : "127"
}, {
- "id" : "119"
+ "id" : "146"
}, {
- "id" : "58"
+ "id" : "154"
}, {
- "id" : "92"
+ "id" : "90"
+ }, {
+ "id" : "91"
+ }, {
+ "id" : "93"
+ }, {
+ "id" : "94"
} ]
}, {
"containerId" : "13",
"description" : "The component diagram for the Entity Verification.",
"dimensions" : {
- "height" : 1748,
- "width" : 2480
+ "height" : 2390,
+ "width" : 3051
},
"elements" : [ {
"id" : "11",
- "x" : 1620,
- "y" : 910
+ "x" : 2400,
+ "y" : 680
+ }, {
+ "id" : "12",
+ "x" : 1019,
+ "y" : 1889
}, {
"id" : "14",
- "x" : 875,
- "y" : 200
+ "x" : 1650,
+ "y" : 680
}, {
"id" : "15",
- "x" : 1585,
- "y" : 205
+ "x" : 1019,
+ "y" : 219
}, {
- "id" : "61",
- "x" : 55,
- "y" : 200
+ "id" : "16",
+ "x" : 1019,
+ "y" : 680
+ }, {
+ "id" : "17",
+ "x" : 1650,
+ "y" : 1165
+ }, {
+ "id" : "18",
+ "x" : 1019,
+ "y" : 1159
+ }, {
+ "id" : "96",
+ "x" : 199,
+ "y" : 219
} ],
"externalContainerBoundariesVisible" : false,
"key" : "CDP-9-EntityVerification-Components",
"order" : 10,
- "paperSize" : "A5_Landscape",
"relationships" : [ {
- "id" : "115"
+ "id" : "150"
+ }, {
+ "id" : "19"
+ }, {
+ "id" : "20"
+ }, {
+ "id" : "21"
+ }, {
+ "id" : "22"
+ }, {
+ "id" : "23"
}, {
- "id" : "16"
+ "id" : "25"
+ }, {
+ "id" : "26"
} ]
} ],
"configuration" : {
"branding" : { },
- "lastSavedView" : "CDP-3-WebApp-Components",
+ "lastSavedView" : "CDP-9-EntityVerification-Components",
"styles" : {
"elements" : [ {
"shape" : "Cylinder",
@@ -1702,39 +2152,39 @@
"x" : 4335,
"y" : 1797
}, {
- "id" : "19",
+ "id" : "28",
"x" : 2072,
"y" : 2590
}, {
- "id" : "20",
+ "id" : "29",
"x" : 1020,
"y" : 1135
}, {
- "id" : "21",
+ "id" : "30",
"x" : 3645,
"y" : 1797
}, {
- "id" : "26",
+ "id" : "40",
"x" : 2069,
"y" : 1787
}, {
- "id" : "37",
+ "id" : "48",
"x" : 2593,
"y" : 1797
}, {
- "id" : "40",
+ "id" : "56",
"x" : 3117,
"y" : 1797
}, {
- "id" : "49",
+ "id" : "76",
"x" : 1545,
"y" : 1782
}, {
- "id" : "55",
+ "id" : "86",
"x" : 1021,
"y" : 1797
}, {
- "id" : "61",
+ "id" : "96",
"x" : 2055,
"y" : 832
} ],
@@ -1742,71 +2192,71 @@
"key" : "CDP-2-ContainerView",
"order" : 2,
"relationships" : [ {
- "id" : "100"
- }, {
- "id" : "104"
+ "id" : "105"
}, {
"id" : "108"
}, {
- "id" : "112"
+ "id" : "111"
}, {
- "id" : "116",
- "vertices" : [ {
- "x" : 4348,
- "y" : 1490
- } ]
+ "id" : "114"
}, {
- "id" : "120"
+ "id" : "119"
}, {
- "id" : "122"
+ "id" : "127"
}, {
- "id" : "123"
+ "id" : "131"
}, {
- "id" : "125"
+ "id" : "135"
}, {
- "id" : "130"
+ "id" : "139"
}, {
- "id" : "131"
+ "id" : "143"
}, {
- "id" : "133"
+ "id" : "147"
+ }, {
+ "id" : "151",
+ "vertices" : [ {
+ "x" : 4348,
+ "y" : 1490
+ } ]
}, {
- "id" : "17"
+ "id" : "155"
}, {
- "id" : "18"
+ "id" : "157"
}, {
- "id" : "25"
+ "id" : "158"
}, {
- "id" : "36"
+ "id" : "160"
}, {
- "id" : "39"
+ "id" : "165"
}, {
- "id" : "44"
+ "id" : "166"
}, {
- "id" : "46"
+ "id" : "168"
}, {
- "id" : "48"
+ "id" : "24"
}, {
- "id" : "53"
+ "id" : "27"
}, {
- "id" : "54"
+ "id" : "39"
}, {
- "id" : "59"
+ "id" : "47"
}, {
- "id" : "60"
+ "id" : "55"
}, {
- "id" : "70"
+ "id" : "69"
}, {
- "id" : "73"
+ "id" : "71"
}, {
- "id" : "76"
+ "id" : "74"
}, {
- "id" : "79"
+ "id" : "82"
}, {
- "id" : "84"
+ "id" : "85"
}, {
"id" : "92"
}, {
- "id" : "96"
+ "id" : "95"
} ],
"softwareSystemId" : "10"
} ],
@@ -1861,27 +2311,27 @@
"key" : "CDP-1-SystemContext",
"order" : 1,
"relationships" : [ {
- "id" : "121"
+ "id" : "106"
}, {
- "id" : "122"
+ "id" : "109"
}, {
- "id" : "123"
+ "id" : "112"
}, {
- "id" : "126"
+ "id" : "115"
}, {
- "id" : "132"
+ "id" : "156"
}, {
- "id" : "134"
+ "id" : "157"
}, {
- "id" : "47"
+ "id" : "158"
}, {
- "id" : "71"
+ "id" : "161"
}, {
- "id" : "74"
+ "id" : "167"
}, {
- "id" : "77"
+ "id" : "169"
}, {
- "id" : "80"
+ "id" : "75"
} ],
"softwareSystemId" : "10"
} ]
diff --git a/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg b/docs/images/diagrams/structurizr-1-CDP-1-SystemContext.svg
index 1efb69c5f..e99222337 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
+Thursday, 3 October 2024 at 16:15 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 procurementAuthenticateswith[HTTPS]Remove link.Link options.Pulls companydetails from[HTTPS]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.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.
\ 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 3a8b4d2b1..af78aeb30 100644
--- a/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-2-ContainerView.svg
@@ -1 +1 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:15 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]-Organisation App[Container: Asp.Net Core MVC]Account & data capture frontendAuthenticateswith[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.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 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.reads/writes[SQL]Remove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.sendsnotifications with[HTTPS]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.
\ 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 b33fda0ca..26f8000e7 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, DatabaseContainer, 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 17291aaff..57797a6c0 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 @@
-Wednesday, 2 October 2024 at 14:57 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.Organisation App[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
+Thursday, 3 October 2024 at 16:22 British Summer TimeThe component diagram for the Authority service.[Component] Central Digital Platform - AuthorityFind a Tender[Software System]-Organisation InformationDatabase[Container: PostgreSQL]-Authority[Container]Libraries-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.Token Service[Component]Creates and validatesauthentication tokensOrganisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendAuthenticatesand authoriseswith[HTTPS]Remove link.Link options.Retrieves 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.CallsRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]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-OrganisationApp-Components-key.svg
similarity index 100%
rename from docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components-key.svg
rename to docs/images/diagrams/structurizr-1-CDP-3-OrganisationApp-Components-key.svg
diff --git a/docs/images/diagrams/structurizr-1-CDP-3-OrganisationApp-Components.svg b/docs/images/diagrams/structurizr-1-CDP-3-OrganisationApp-Components.svg
new file mode 100644
index 000000000..a5172fda0
--- /dev/null
+++ b/docs/images/diagrams/structurizr-1-CDP-3-OrganisationApp-Components.svg
@@ -0,0 +1 @@
+Thursday, 3 October 2024 at 16:15 British Summer TimeThe component diagram for the Web Application.[Component] Central Digital Platform - Organisation AppSupplier[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]-Organisation App[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 APIPulls 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.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.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.
\ 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
deleted file mode 100644
index f752491ad..000000000
--- a/docs/images/diagrams/structurizr-1-CDP-3-WebApp-Components.svg
+++ /dev/null
@@ -1 +0,0 @@
-Wednesday, 2 October 2024 at 14:57 British Summer TimeThe component diagram for the Web Application.[Component] Central Digital Platform - Organisation AppSupplier[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]-Organisation App[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.svg b/docs/images/diagrams/structurizr-1-CDP-4-TenantApi-Components.svg
index 9042c81f0..bb191990f 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 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:15 British Summer TimeThe component diagram for the Tenant API.[Component] Central Digital Platform - Tenant APIOrganisation InformationDatabase[Container: PostgreSQL]-Tenant API[Container]Libraries-Tenant Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Organisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]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 bb0314579..e12f4053f 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, DatabaseContainer, 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 c2a1fdcd6..60612521c 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 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.
\ No newline at end of file
+Thursday, 3 October 2024 at 16:15 British Summer TimeThe component diagram for the Person API.[Component] Central Digital Platform - Person APIOrganisation InformationDatabase[Container: PostgreSQL]-Person API[Container]Libraries-Person Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Organisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]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 76169202a..c092c2e8f 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, MessageQueueContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
+ComponentContainer, DatabaseContainer, 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 de6be3ecb..8f299f2d2 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 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:37 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 InformationDatabase[Container: PostgreSQL]-Organisation API[Container]Libraries-Organisation Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Message Subscriber[Component]-Organisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreMQ[Component: C# project]Message Queue clientGov.uk Notify[Component: C# project]Gov.uk Notify clientOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.reads/writes[SQL]Remove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.CallsRemove 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 bc9fcb7e8..7e4677b15 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, File StorageContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, DatabaseContainer, 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 8ab8891b3..edd46a9df 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 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:15 British Summer TimeThe component diagram for the Forms API.[Component] Central Digital Platform - Forms APIOrganisation InformationDatabase[Container: PostgreSQL]-File Storage[Container: S3]-Forms API[Container]Libraries-Forms Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Organisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendwrites to[HTTPS]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.writes to[HTTPS]Remove link.Link options.CallsRemove link.Link options.reads/writes[SQL]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 0b69634bb..b55ad3496 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, File StorageContainer, WebAppSoftware SystemRelationship
\ No newline at end of file
+ComponentContainer, DatabaseContainer, 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 0e1431502..544213e75 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 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:15 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 processesOrganisation InformationDatabase[Container: PostgreSQL]-File Storage[Container: S3]-Data Sharing API[Container]Libraries-Data Sharing Endpoint[Component: Asp.Net Core Web API]-Use Case[Component]-Organisation InformationPersistence[Component: C# project]Exposes the database model,queries, and persistence operationswith EntityFramework CoreOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendwrites to[HTTPS]Remove link.Link options.Calls[HTTPS/json]Remove link.Link options.Looks up supplierinformation[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.writes to / readsfrom[HTTPS]Remove link.Link options.CallsRemove link.Link options.reads/writes[SQL]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
index 3aa8b9fb7..18a62f520 100644
--- a/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components-key.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components-key.svg
@@ -1 +1 @@
-ComponentContainer, MessageQueueContainer, WebAppRelationship
\ No newline at end of file
+ComponentContainer, DatabaseContainer, 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
index 130335ca0..0e18ac612 100644
--- a/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components.svg
+++ b/docs/images/diagrams/structurizr-1-CDP-9-EntityVerification-Components.svg
@@ -1 +1 @@
-Wednesday, 2 October 2024 at 14:57 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]-Organisation App[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
+Thursday, 3 October 2024 at 16:37 British Summer TimeThe component diagram for the Entity Verification.[Component] Central Digital Platform - Entity VerificationMessage Queue[Container: SQS]-Entity VerificationDatabase[Container: PostgreSQL]-Entity Verification[Container]Libraries-Entity VerificationEndpoint[Component: Asp.Net Core Web API]Queries known identifers.Use Case[Component]-Message Subscriber[Component]-Persistence[Component: C# Namespace]EntityFramework Core model andrepositoriesMQ[Component: C# project]Message Queue clientOrganisation App[Container: Asp.Net Core MVC]Account & data capture frontendCalls[HTTPS/json]Remove link.Link options.ExecutesRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.CallsRemove link.Link options.publishes to /listens to[HTTPS]Remove link.Link options.CallsRemove link.Link options.reads/writes[SQL]Remove link.Link options.
\ No newline at end of file