%\affil{$^2$Institution Name, Institution City, State/Province, Country}
% “Alberto Russo” is not a surname; list is parsed correctly.
\author{John~D.~Swinbank$^1$, Sara~Bertocco$^2$, and Stefano~Alberto~Russo$^2$, and Susana S\'anchez-Exp\'osito$^3$}
\author{John~D.~Swinbank$^1$, Sara~Bertocco$^2$, and Stefano~A.~Russo$^2$, and Susana S\'anchez-Exp\'osito$^3$}
\affil{$^1$ASTRON, 7991 PD Dwingeloo, The Netherlands; \email{swinbank@astron.nl}}
\affil{$^2$INAF, Osservatorio Astronomico di Trieste, 34143 Trieste, Italy}
\affil{$^3$Instituto de Astrof\'isica de Andaluc\'ia (CSIC), 18008 Granada, Spain}
...
...
@@ -117,7 +117,7 @@ We envision instances of ESAP being deployed at a variety of scales, from provid
%\ssindex{computing!architecture!REST}
ESAP is a web application, implemented in Python, Django, and React.\footnote{\url{https://www.python.org}; \url{https://www.djangoproject.com}; \url{https://reactjs.org}}
It is designed around the \emph{API Gateway}, which brokers requests across a range of independent services, and a web-based \emph{user interface}.
This is shown schematically in Figure \ref{fig:esap-arch}.
This architecture is shown schematically in Figure \ref{fig:esap-arch}.
The API Gateway communicates with external services using REST APIs.
New service integrations can easily be added by writing ``plug-in'' modules which extend the Gateway's capabilities.