@@ -29,23 +29,34 @@ import za.co.absa.statusboard.model.{ErrorResponse, RawStatus, RefinedStatus, Se
2929import za .co .absa .statusboard .model .ApiResponse .{MultiApiResponse , SingleApiResponse }
3030
3131object Endpoints {
32+ implicit class NoCachePublicEndpoint [I , E , O , R ](endpoint : PublicEndpoint [I , E , O , R ]) {
33+ def noCache : PublicEndpoint [I , E , O , R ] =
34+ endpoint
35+ .out(header(" Cache-Control" , " no-cache, no-store, must-revalidate" ))
36+ .out(header(" Pragma" , " no-cache" ))
37+ .out(header(" Expires" , " 0" ))
38+ }
39+
3240 val zioMetrics : PublicEndpoint [Unit , Unit , String , Any ] = endpoint
3341 .get
3442 .in(ZioMetrics )
3543 .out(stringBody)
3644 .out(statusCode(StatusCode .Ok ))
45+ .noCache
3746
3847 val health : PublicEndpoint [Unit , Unit , String , Any ] = endpoint
3948 .get
4049 .in(Health )
4150 .out(stringBody)
4251 .out(statusCode(StatusCode .Ok ))
52+ .noCache
4353
4454 val getServiceConfigurations : PublicEndpoint [Option [Boolean ], ErrorResponse , MultiApiResponse [ServiceConfiguration ], Any ] = endpoint
4555 .get
4656 .in(Api / V1 / Configurations ).in(query[Option [Boolean ]](IncludeHidden ))
4757 .out(jsonBody[MultiApiResponse [ServiceConfiguration ]])
4858 .out(statusCode(StatusCode .Ok ))
59+ .noCache
4960 .errorOut(
5061 oneOf[ErrorResponse ](
5162 badRequest,
@@ -58,6 +69,7 @@ object Endpoints {
5869 .in(Api / V1 / Configurations / path[String ](Environment ) / path[String ](ServiceName ))
5970 .out(jsonBody[SingleApiResponse [ServiceConfiguration ]])
6071 .out(statusCode(StatusCode .Ok ))
72+ .noCache
6173 .errorOut(
6274 oneOf[ErrorResponse ](
6375 badRequest,
@@ -71,6 +83,7 @@ object Endpoints {
7183 .in(Api / V1 / Configurations / path[String ](Environment ) / path[String ](ServiceName ) / Dependencies )
7284 .out(jsonBody[MultiApiResponse [ServiceConfigurationReference ]])
7385 .out(statusCode(StatusCode .Ok ))
86+ .noCache
7487 .errorOut(
7588 oneOf[ErrorResponse ](
7689 badRequest,
@@ -84,6 +97,7 @@ object Endpoints {
8497 .in(Api / V1 / Configurations / path[String ](Environment ) / path[String ](ServiceName ) / Dependents )
8598 .out(jsonBody[MultiApiResponse [ServiceConfigurationReference ]])
8699 .out(statusCode(StatusCode .Ok ))
100+ .noCache
87101 .errorOut(
88102 oneOf[ErrorResponse ](
89103 badRequest,
@@ -200,6 +214,7 @@ object Endpoints {
200214 .in(Api / V1 / Statuses / path[String ](Environment ) / path[String ](ServiceName ) / Latest )
201215 .out(jsonBody[SingleApiResponse [RefinedStatus ]])
202216 .out(statusCode(StatusCode .Ok ))
217+ .noCache
203218 .errorOut(
204219 oneOf[ErrorResponse ](
205220 badRequest,
@@ -213,6 +228,7 @@ object Endpoints {
213228 .in(Api / V1 / Statuses / path[String ](Environment ) / path[String ](ServiceName ))
214229 .out(jsonBody[MultiApiResponse [RefinedStatus ]])
215230 .out(statusCode(StatusCode .Ok ))
231+ .noCache
216232 .errorOut(
217233 oneOf[ErrorResponse ](
218234 badRequest,
@@ -225,6 +241,7 @@ object Endpoints {
225241 .in(Api / V1 / Statuses )
226242 .out(jsonBody[MultiApiResponse [RefinedStatus ]])
227243 .out(statusCode(StatusCode .Ok ))
244+ .noCache
228245 .errorOut(
229246 oneOf[ErrorResponse ](
230247 badRequest,
0 commit comments