Skip to main content

Technical documentation for the Get Information about Schools service.

C4 Container Diagram

Major components forming GIAS service, and how they interact with each other and external actors.

This is the container-level view of the system. It shows the major deployable/application building blocks and the main relationships between them, but it does not break the Java back end down into its internal Spring, persistence, extract, and integration components.

C4Container UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1") System_Ext(dsi, "DfE Sign-in (DSI", "Authentication and identity service") Person(user, "GIAS User", "Accesses GIAS through the web interface") System_Ext(externalSystems, "External Consumer", "Systems that download<br>GIAS datasets") System_Boundary(gias, "Get Information about Schools (GIAS)") { Container(profileAPI, "Profile API", "C# API", "Supplies list of education providers") Container(web, "GIAS Web Front End", "C# ASP.NET Web Application", "Provides the user interface for <br>searching, viewing and managing GIAS data") Container(fileAPI, "File API", "Azure App Service", "Serves ZIP files from the extract file storage") ContainerDb(db, "GIAS Database", "MS SQL Server", "Stores establishment, governance,<br>user and reference data") Container(backend, "GIAS Backend", "Java Rest API Application + SOAP", "Executes business rules, validation and<br>data access logic") ContainerDb(fileStorage, "File Storage", "Azure File Storage", "Stores generated ZIP<br>extracts available for download") } Rel(user,web, "Browse GIAS data", "HTTPS/HTML") Rel(user, fileAPI, "Downloads files using", "HTTPS/CSV/ZIP") Rel(dsi,profileAPI , "Retrieves provider<br>information", "HTTPS") Rel(user, dsi, "Authenticates via", "OIDC / OAuth2") Rel(dsi, web, "Authenticates via", "OIDC / OAuth2") Rel(web, backend, "Calls", "HTTPS") Rel(profileAPI,db, "Reads from", "SQL") Rel(backend, db, "Reads from and writes to", "TCP/SQL") Rel(backend, fileStorage, "Writes ZIP files to", "HTTPS/CSV/ZIP") Rel(fileAPI,fileStorage, "Reads ZIP files from", "HTTPS/CSV/ZIP") Rel(externalSystems, fileAPI,"Downloads GIAS data","HTTPS/CSV/ZIP") Rel(externalSystems, backend,"Retrieves GIAS data","HTTPS/SOAP") UpdateRelStyle(user, dsi, $offsetX="-48", $offsetY="-60") UpdateRelStyle(dsi,profileAPI, $offsetX="-120", $offsetY="-100") UpdateRelStyle(user,web, $offsetX="-90", $offsetY="-70") UpdateRelStyle(user, fileAPI, $offsetX="-160", $offsetY="-60") UpdateRelStyle(dsi, web, $offsetX="-140", $offsetY="-80") UpdateRelStyle(api, db, $offsetX="-50", $offsetY="50") UpdateRelStyle(externalSystems, fileAPI, $offsetX="-20", $offsetY="-60") UpdateRelStyle(externalSystems, backend, $offsetX="-5", $offsetY="-200") UpdateRelStyle(backend, db, $offsetX="-50", $offsetY="50") UpdateRelStyle(backend, fileStorage, $offsetX="-50", $offsetY="50") UpdateRelStyle(web, backend, $offsetX="-50", $offsetY="-20")

For that lower-level view, see the back-end component diagrams. This document explains how the GIAS Backend container is structured internally, including client-facing entry points, scheduled and batch processing, reference-data provider integrations, and the authentication flow used by the front end when it calls the back-end APIs.