An error occurred while processing the template.
The following has evaluated to null or missing:
==> restClient.get("/headless-delivery/v1.0/sites/${groupId}/structured-contents/by-key/${reservedArticleId}").relatedContents  [in template "20255#20295#196081" at line 20, column 26]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign journalArticle = restClient.g...  [in template "20255#20295#196081" at line 20, column 2]
----
1<#assign title = .vars['reserved-article-title'].data> 
2 <#assign reservedArticleId = .vars['reserved-article-id'].data> 
3 <#assign introText = ""> 
4 <#assign groupId = themeDisplay.getScopeGroupId()> 
5 <#assign entryTitle =.vars["reserved-article-title"].data/> 
6 <#assign groupURL = themeDisplay.getScopeGroup().getDisplayURL(themeDisplay) /> 
7  
8 <#if IntroText?? && IntroText.getData() != ""> 
9 	<#assign introText = IntroText.getData()> 
10 </#if> 
11  
12 <#assign introTextImageUrl = ""> 
13 <#assign introTextMobileImageUrl = ""> 
14 <#assign floodsafeAudioFile = "#"> 
15 <#assign floodsafeFactSheet = "#"> 
16 <#assign stormsafeAudioFileTitle = "#">  
17 <#assign stormsafeAudioFile = "#"> 
18 <#assign stormsafeFactSheet = "#"> 
19 <#assign floodsafeAudioFileTitle="#"/> 
20 <#assign journalArticle=restClient.get("/headless-delivery/v1.0/sites/${groupId}/structured-contents/by-key/${reservedArticleId}").relatedContents/> 
21  
22 <#list journalArticle as jr> 
23   <#assign linkTitle = jr.title/> 
24   <#assign id = jr.id/> 
25	 <#assign url=restClient.get("/headless-delivery/v1.0/documents/${id}").contentUrl/> 
26     <#if linkTitle?lower_case == entryTitle?lower_case> 
27 	       <#assign introTextImageUrl = url /> 
28     <#elseif linkTitle?contains("Mobile-Blurb-png")> 
29 	       <#assign introTextMobileImageUrl = url /> 
30     <#elseif linkTitle?contains("floodsafe-audio-mp3")> 
31 	      <#assign floodsafeAudioFile = url /> 
32        <#assign floodsafeAudioFileTitle = linkTitle /> 
33     <#elseif linkTitle?contains("floodsafe-factsheet-pdf")> 
34 	      <#assign floodsafeFactSheet = url /> 
35        <#assign floodsafeFactSheetTitle = linkTitle /> 
36     <#elseif linkTitle?contains("stormsafe-audio-mp3")> 
37 	      <#assign stormsafeAudioFile = url /> 
38        <#assign stormsafeAudioFileTitle = linkTitle /> 
39     <#elseif linkTitle?contains("stormsafe-factsheet-pdf")> 
40 	      <#assign stormsafeFactSheet = url /> 
41        <#assign stormsafeFactSheetTitle = linkTitle /> 
42     </#if> 
43 </#list> 
44 
45 <style> 
46 .other-language .desktop { 
47 	display:block; 
48
49 .other-language .mobile { 
50 	display:none; 
51 	width: 100%; 
52
53 .languagelist .language-icon { 
54   width: 50%; 
55   float: left; 
56   text-align: center; 
57   margin-bottom: 20px; 
58
59  
60 @media only screen and (max-width : 520px) { 
61   .other-language .desktop { 
62 	  display:none; 
63
64   .other-language .mobile { 
65 	  display:block; 
66
67   .languagelist .language-icon { 
68       width: 100%; 
69
70  
71
72  
73 .taglib-header { 
74     display: none; 
75
76  
77 .portlet-boundary_pagelead_WAR_empointcontentviewerportlet_ { 
78     display: none; 
79
80  
81 </style> 
82 
83<div class="mb-2"> 
84		<h4 class="component-title">	 
85		<span class="header-back-to">				 
86					<a href="${groupURL}/information-in-other-languages" target="_self" class=" lfr-icon-item taglib-icon" id="_com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_JiBBTBp6rIMw_rjus____"> 
87		<span id="qfkd____"><svg aria-hidden="true" class="lexicon-icon lexicon-icon-angle-left" focusable="false" viewBox="0 0 512 512"><g data-href="https://cdn.ses.vic.gov.au/o/website-frontend-theme/images/lexicon/icons.svg#angle-left"> 
88	<path class="lexicon-icon-outline" d="M114.106 254.607c0.22 6.936 2.972 13.811 8.272 19.11l227.222 227.221c11.026 11.058 28.94 11.058 39.999 0 11.058-11.026 11.058-28.94 0-39.999l-206.333-206.333c0 0 206.333-206.333 206.333-206.333 11.058-11.059 11.058-28.973 0-39.999-11.058-11.059-28.973-11.059-39.999 0l-227.221 227.221c-5.3 5.3-8.052 12.174-8.273 19.111z"></path> 
89</g></svg></span> 
90	 
91						</a>				 
92		</span>			 
93		</h4> 
94	</div> 
95  
96 <div class="other-language" id="${reservedArticleId}"> 
97   <h2>${title}</h2> 
98   <p> 
99   	 <#if introText != "">	 
100   	 <div> 
101   	 	${introText} 
102   	 </div> 
103     <#elseif introTextImageUrl == ""> 
104 	  <div> 
105 	    <p><i>The State Emergency Service (SES) is a volunteer organisation that can help you in a flood or storm emergency. You do not have to pay for this service.</i></p> 
106         <p>If you call 132 500 from your telephone, volunteers from SES will come to your home if it has been flooded or damaged by storms. You can also request a translator. SES volunteers always wear an orange uniform. They are experienced in responding to flood and storm emergencies.</p> 
107         <p>Please see below for more information on how you can prepare your family and your home for floods and storms.</p> 
108         <p>If you do not understand this information, ask a family member, friend or neighbour for assistance.</div></p> 
109 	  </div> 
110 	<#else> 
111       <img src="${introTextImageUrl}" alt="${title}" class="image-inline noborder desktop" title="${title}"> 
112       <img src="${introTextMobileImageUrl}" alt="${title}" class="image-inline noborder mobile" title="${title}"> 
113 	</#if> 
114   </p> 
115   <div class="languagelist row-fluid"> 
116     <div class="language-icon"> 
117 	  <#if floodsafeAudioFile == "#"> 
118 	    <img src="/documents/${themeDisplay.getScopeGroupId()}/135437/0e61d413-f5ea-4ef6-9c81-36a798e36d00.png/0c7fabb1-53ab-47ff-bdb6-a045062cf5db?t=1473056747000" alt="Flood Audio" class="noborder" title="Floodsafe"> 
119 	    <div>Flood audio coming soon</div> 
120 	  <#else> 
121 	  <a title="${floodsafeAudioFileTitle}" href="${floodsafeAudioFile}" class="internal internal-link" target="_blank"> 
122 	    <img src="/documents/${themeDisplay.getScopeGroupId()}/135437/0e61d413-f5ea-4ef6-9c81-36a798e36d00.png/0c7fabb1-53ab-47ff-bdb6-a045062cf5db?t=1473056747000" alt="Flood Audio" class="noborder" title="${floodsafeAudioFileTitle}"> 
123 	    <div>Flood audio</div> 
124 	  </a>  
125 	  </#if> 
126 	</div> 
127      
128     <div class="language-icon">  
129 	  <#if stormsafeAudioFile == "#"> 
130 	    <img src="/documents/${themeDisplay.getScopeGroupId()}/135437/41edaedc-ff7d-4af8-b622-5db94cee6eda.png/c7356be9-c299-4791-9602-78c7ee774e30?t=1473056741000" alt="Storm Audio" class="noborder" title="Stormsafe"> 
131 	    <div>StormSafe audio coming soon</div> 
132 	  <#else> 
133 	  <a title="${stormsafeAudioFileTitle}" href="${stormsafeAudioFile}" class="internal internal-link" target="_blank"> 
134 	    <img src="/documents/${themeDisplay.getScopeGroupId()}/135437/41edaedc-ff7d-4af8-b622-5db94cee6eda.png/c7356be9-c299-4791-9602-78c7ee774e30?t=1473056741000" alt="Storm Audio" class="noborder" title="${stormsafeAudioFileTitle}"> 
135 	    <div>Storm audio</div> 
136 	  </a>  
137 	  </#if> 
138 	</div> 
139      
140   </div> 
141 </div>