xref: /openbmc/bmcweb/features/redfish/src/error_messages.cpp (revision a08b46ccf0fc0081cecc4843484c4f0eb13f5a9a)
1f4c4dcf4SKowalski, Kamil /*
2f4c4dcf4SKowalski, Kamil // Copyright (c) 2018 Intel Corporation
3f4c4dcf4SKowalski, Kamil //
4f4c4dcf4SKowalski, Kamil // Licensed under the Apache License, Version 2.0 (the "License");
5f4c4dcf4SKowalski, Kamil // you may not use this file except in compliance with the License.
6f4c4dcf4SKowalski, Kamil // You may obtain a copy of the License at
7f4c4dcf4SKowalski, Kamil //
8f4c4dcf4SKowalski, Kamil //      http://www.apache.org/licenses/LICENSE-2.0
9f4c4dcf4SKowalski, Kamil //
10f4c4dcf4SKowalski, Kamil // Unless required by applicable law or agreed to in writing, software
11f4c4dcf4SKowalski, Kamil // distributed under the License is distributed on an "AS IS" BASIS,
12f4c4dcf4SKowalski, Kamil // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f4c4dcf4SKowalski, Kamil // See the License for the specific language governing permissions and
14f4c4dcf4SKowalski, Kamil // limitations under the License.
15f4c4dcf4SKowalski, Kamil */
16f4c4dcf4SKowalski, Kamil #include <crow/logging.h>
17f4c4dcf4SKowalski, Kamil 
181abe55efSEd Tanous #include <error_messages.hpp>
19f4c4dcf4SKowalski, Kamil 
201abe55efSEd Tanous namespace redfish
211abe55efSEd Tanous {
221abe55efSEd Tanous 
231abe55efSEd Tanous namespace messages
241abe55efSEd Tanous {
25f4c4dcf4SKowalski, Kamil 
26f12894f8SJason M. Bills static void addMessageToErrorJson(nlohmann::json& target,
271abe55efSEd Tanous                                   const nlohmann::json& message)
281abe55efSEd Tanous {
29f4c4dcf4SKowalski, Kamil     auto& error = target["error"];
30f4c4dcf4SKowalski, Kamil 
311abe55efSEd Tanous     // If this is the first error message, fill in the information from the
321abe55efSEd Tanous     // first error message to the top level struct
331abe55efSEd Tanous     if (!error.is_object())
341abe55efSEd Tanous     {
35f4c4dcf4SKowalski, Kamil         auto message_id_iterator = message.find("MessageId");
361abe55efSEd Tanous         if (message_id_iterator == message.end())
371abe55efSEd Tanous         {
381abe55efSEd Tanous             BMCWEB_LOG_CRITICAL
391abe55efSEd Tanous                 << "Attempt to add error message without MessageId";
40f4c4dcf4SKowalski, Kamil             return;
41f4c4dcf4SKowalski, Kamil         }
42f4c4dcf4SKowalski, Kamil 
43f4c4dcf4SKowalski, Kamil         auto message_field_iterator = message.find("Message");
441abe55efSEd Tanous         if (message_field_iterator == message.end())
451abe55efSEd Tanous         {
461abe55efSEd Tanous             BMCWEB_LOG_CRITICAL
471abe55efSEd Tanous                 << "Attempt to add error message without Message";
48f4c4dcf4SKowalski, Kamil             return;
49f4c4dcf4SKowalski, Kamil         }
50f4c4dcf4SKowalski, Kamil         // clang-format off
51f4c4dcf4SKowalski, Kamil     error = {
52f4c4dcf4SKowalski, Kamil         {"code", *message_id_iterator},
53f4c4dcf4SKowalski, Kamil         {"message", *message_field_iterator}
54f4c4dcf4SKowalski, Kamil     };
55f4c4dcf4SKowalski, Kamil         // clang-format on
561abe55efSEd Tanous     }
571abe55efSEd Tanous     else
581abe55efSEd Tanous     {
59f4c4dcf4SKowalski, Kamil         // More than 1 error occurred, so the message has to be generic
6055c7b7a2SEd Tanous         error["code"] = std::string(messageVersionPrefix) + "GeneralError";
61cc9139ecSJason M. Bills         error["message"] = "A general error has occurred. See Resolution for "
62cc9139ecSJason M. Bills                            "information on how to resolve the error.";
63f4c4dcf4SKowalski, Kamil     }
64f4c4dcf4SKowalski, Kamil 
65f4c4dcf4SKowalski, Kamil     // This check could technically be done in in the default construction
66f4c4dcf4SKowalski, Kamil     // branch above, but because we need the pointer to the extended info field
67f4c4dcf4SKowalski, Kamil     // anyway, it's more efficient to do it here.
6855c7b7a2SEd Tanous     auto& extended_info = error[messages::messageAnnotation];
691abe55efSEd Tanous     if (!extended_info.is_array())
701abe55efSEd Tanous     {
71f4c4dcf4SKowalski, Kamil         extended_info = nlohmann::json::array();
72f4c4dcf4SKowalski, Kamil     }
73f4c4dcf4SKowalski, Kamil 
74f4c4dcf4SKowalski, Kamil     extended_info.push_back(message);
75f4c4dcf4SKowalski, Kamil }
76f4c4dcf4SKowalski, Kamil 
77f12894f8SJason M. Bills static void addMessageToJsonRoot(nlohmann::json& target,
78f12894f8SJason M. Bills                                  const nlohmann::json& message)
791abe55efSEd Tanous {
801abe55efSEd Tanous     if (!target[messages::messageAnnotation].is_array())
811abe55efSEd Tanous     {
82f4c4dcf4SKowalski, Kamil         // Force object to be an array
8355c7b7a2SEd Tanous         target[messages::messageAnnotation] = nlohmann::json::array();
84f4c4dcf4SKowalski, Kamil     }
85f4c4dcf4SKowalski, Kamil 
8655c7b7a2SEd Tanous     target[messages::messageAnnotation].push_back(message);
87f4c4dcf4SKowalski, Kamil }
88f4c4dcf4SKowalski, Kamil 
89f12894f8SJason M. Bills static void addMessageToJson(nlohmann::json& target,
90f12894f8SJason M. Bills                              const nlohmann::json& message,
911abe55efSEd Tanous                              const std::string& fieldPath)
921abe55efSEd Tanous {
93*a08b46ccSJason M. Bills     std::string extendedInfo(fieldPath + messages::messageAnnotation);
94f4c4dcf4SKowalski, Kamil 
951abe55efSEd Tanous     if (!target[extendedInfo].is_array())
961abe55efSEd Tanous     {
97f4c4dcf4SKowalski, Kamil         // Force object to be an array
98f4c4dcf4SKowalski, Kamil         target[extendedInfo] = nlohmann::json::array();
99f4c4dcf4SKowalski, Kamil     }
100f4c4dcf4SKowalski, Kamil 
101f4c4dcf4SKowalski, Kamil     // Object exists and it is an array so we can just push in the message
102f4c4dcf4SKowalski, Kamil     target[extendedInfo].push_back(message);
103f4c4dcf4SKowalski, Kamil }
104f4c4dcf4SKowalski, Kamil 
105f4c4dcf4SKowalski, Kamil /**
106f4c4dcf4SKowalski, Kamil  * @internal
107f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceInUse message into JSON
108f4c4dcf4SKowalski, Kamil  *
109f4c4dcf4SKowalski, Kamil  * See header file for more information
110f4c4dcf4SKowalski, Kamil  * @endinternal
111f4c4dcf4SKowalski, Kamil  */
112f12894f8SJason M. Bills void resourceInUse(crow::Response& res)
1131abe55efSEd Tanous {
114f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
115f12894f8SJason M. Bills     addMessageToErrorJson(
116f12894f8SJason M. Bills         res.jsonValue,
117f12894f8SJason M. Bills         nlohmann::json{
118f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
119cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceInUse"},
12066ac2b8cSJason M. Bills             {"Message", "The change to the requested resource failed because "
12166ac2b8cSJason M. Bills                         "the resource is in use or in transition."},
122f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
12366ac2b8cSJason M. Bills             {"Resolution", "Remove the condition and resubmit the request if "
12466ac2b8cSJason M. Bills                            "the operation failed."}});
125f4c4dcf4SKowalski, Kamil }
126f4c4dcf4SKowalski, Kamil 
127f4c4dcf4SKowalski, Kamil /**
128f4c4dcf4SKowalski, Kamil  * @internal
129f4c4dcf4SKowalski, Kamil  * @brief Formats MalformedJSON message into JSON
130f4c4dcf4SKowalski, Kamil  *
131f4c4dcf4SKowalski, Kamil  * See header file for more information
132f4c4dcf4SKowalski, Kamil  * @endinternal
133f4c4dcf4SKowalski, Kamil  */
134f12894f8SJason M. Bills void malformedJSON(crow::Response& res)
1351abe55efSEd Tanous {
136f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
137f12894f8SJason M. Bills     addMessageToErrorJson(
138f12894f8SJason M. Bills         res.jsonValue,
139f12894f8SJason M. Bills         nlohmann::json{
140f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
141cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.MalformedJSON"},
14266ac2b8cSJason M. Bills             {"Message", "The request body submitted was malformed JSON and "
14366ac2b8cSJason M. Bills                         "could not be parsed by the receiving service."},
144f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1451abe55efSEd Tanous             {"Resolution", "Ensure that the request body is valid JSON and "
146f12894f8SJason M. Bills                            "resubmit the request."}});
147f4c4dcf4SKowalski, Kamil }
148f4c4dcf4SKowalski, Kamil 
149f4c4dcf4SKowalski, Kamil /**
150f4c4dcf4SKowalski, Kamil  * @internal
151f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceMissingAtURI message into JSON
152f4c4dcf4SKowalski, Kamil  *
153f4c4dcf4SKowalski, Kamil  * See header file for more information
154f4c4dcf4SKowalski, Kamil  * @endinternal
155f4c4dcf4SKowalski, Kamil  */
156f12894f8SJason M. Bills void resourceMissingAtURI(crow::Response& res, const std::string& arg1)
1571abe55efSEd Tanous {
158f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
159f12894f8SJason M. Bills     addMessageToErrorJson(
160f12894f8SJason M. Bills         res.jsonValue,
161f12894f8SJason M. Bills         nlohmann::json{
162f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
163cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceMissingAtURI"},
164f4c4dcf4SKowalski, Kamil             {"Message", "The resource at the URI " + arg1 + " was not found."},
165f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
16666ac2b8cSJason M. Bills             {"Resolution", "Place a valid resource at the URI or correct the "
16766ac2b8cSJason M. Bills                            "URI and resubmit the request."}});
168f4c4dcf4SKowalski, Kamil }
169f4c4dcf4SKowalski, Kamil 
170f4c4dcf4SKowalski, Kamil /**
171f4c4dcf4SKowalski, Kamil  * @internal
172f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterValueFormatError message into JSON
173f4c4dcf4SKowalski, Kamil  *
174f4c4dcf4SKowalski, Kamil  * See header file for more information
175f4c4dcf4SKowalski, Kamil  * @endinternal
176f4c4dcf4SKowalski, Kamil  */
177f12894f8SJason M. Bills void actionParameterValueFormatError(crow::Response& res,
178f12894f8SJason M. Bills                                      const std::string& arg1,
179f4c4dcf4SKowalski, Kamil                                      const std::string& arg2,
1801abe55efSEd Tanous                                      const std::string& arg3)
1811abe55efSEd Tanous {
182f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
183f12894f8SJason M. Bills     addMessageToErrorJson(
184f12894f8SJason M. Bills         res.jsonValue,
185f12894f8SJason M. Bills         nlohmann::json{
186f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
187cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterValueFormatError"},
188f4c4dcf4SKowalski, Kamil             {"Message",
1891abe55efSEd Tanous              "The value " + arg1 + " for the parameter " + arg2 +
1901abe55efSEd Tanous                  " in the action " + arg3 +
1911abe55efSEd Tanous                  " is of a different format than the parameter can accept."},
192f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
19366ac2b8cSJason M. Bills             {"Resolution",
19466ac2b8cSJason M. Bills              "Correct the value for the parameter in the request body and "
19566ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}});
196f4c4dcf4SKowalski, Kamil }
197f4c4dcf4SKowalski, Kamil 
198f4c4dcf4SKowalski, Kamil /**
199f4c4dcf4SKowalski, Kamil  * @internal
200f4c4dcf4SKowalski, Kamil  * @brief Formats InternalError message into JSON
201f4c4dcf4SKowalski, Kamil  *
202f4c4dcf4SKowalski, Kamil  * See header file for more information
203f4c4dcf4SKowalski, Kamil  * @endinternal
204f4c4dcf4SKowalski, Kamil  */
205f12894f8SJason M. Bills void internalError(crow::Response& res)
2061abe55efSEd Tanous {
207f12894f8SJason M. Bills     res.result(boost::beast::http::status::internal_server_error);
208f12894f8SJason M. Bills     addMessageToErrorJson(
209f12894f8SJason M. Bills         res.jsonValue,
210f12894f8SJason M. Bills         nlohmann::json{
211f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
212cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.InternalError"},
213f12894f8SJason M. Bills             {"Message", "The request failed due to an internal service error.  "
21466ac2b8cSJason M. Bills                         "The service is still operational."},
215f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
2161abe55efSEd Tanous             {"Resolution", "Resubmit the request.  If the problem persists, "
21766ac2b8cSJason M. Bills                            "consider resetting the service."}});
218f12894f8SJason M. Bills }
219f12894f8SJason M. Bills 
220f12894f8SJason M. Bills /**
221f12894f8SJason M. Bills  * @internal
222f4c4dcf4SKowalski, Kamil  * @brief Formats UnrecognizedRequestBody message into JSON
223f4c4dcf4SKowalski, Kamil  *
224f4c4dcf4SKowalski, Kamil  * See header file for more information
225f4c4dcf4SKowalski, Kamil  * @endinternal
226f4c4dcf4SKowalski, Kamil  */
227f12894f8SJason M. Bills void unrecognizedRequestBody(crow::Response& res)
2281abe55efSEd Tanous {
229f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
230f12894f8SJason M. Bills     addMessageToErrorJson(
231f12894f8SJason M. Bills         res.jsonValue,
232f12894f8SJason M. Bills         nlohmann::json{
233f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
234cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.UnrecognizedRequestBody"},
235f12894f8SJason M. Bills             {"Message", "The service detected a malformed request body that it "
23666ac2b8cSJason M. Bills                         "was unable to interpret."},
237f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
238f12894f8SJason M. Bills             {"Resolution", "Correct the request body and resubmit the request "
239f12894f8SJason M. Bills                            "if it failed."}});
240f4c4dcf4SKowalski, Kamil }
241f4c4dcf4SKowalski, Kamil 
242f4c4dcf4SKowalski, Kamil /**
243f4c4dcf4SKowalski, Kamil  * @internal
244f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAtUriUnauthorized message into JSON
245f4c4dcf4SKowalski, Kamil  *
246f4c4dcf4SKowalski, Kamil  * See header file for more information
247f4c4dcf4SKowalski, Kamil  * @endinternal
248f4c4dcf4SKowalski, Kamil  */
249f12894f8SJason M. Bills void resourceAtUriUnauthorized(crow::Response& res, const std::string& arg1,
2501abe55efSEd Tanous                                const std::string& arg2)
2511abe55efSEd Tanous {
252f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
253f12894f8SJason M. Bills     addMessageToErrorJson(
254f12894f8SJason M. Bills         res.jsonValue,
255f12894f8SJason M. Bills         nlohmann::json{
256f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
257cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceAtUriUnauthorized"},
258f4c4dcf4SKowalski, Kamil             {"Message", "While accessing the resource at " + arg1 +
2591abe55efSEd Tanous                             ", the service received an authorization error " +
2601abe55efSEd Tanous                             arg2 + "."},
261f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
262f12894f8SJason M. Bills             {"Resolution", "Ensure that the appropriate access is provided for "
26366ac2b8cSJason M. Bills                            "the service in order for it to access the URI."}});
264f4c4dcf4SKowalski, Kamil }
265f4c4dcf4SKowalski, Kamil 
266f4c4dcf4SKowalski, Kamil /**
267f4c4dcf4SKowalski, Kamil  * @internal
268f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterUnknown message into JSON
269f4c4dcf4SKowalski, Kamil  *
270f4c4dcf4SKowalski, Kamil  * See header file for more information
271f4c4dcf4SKowalski, Kamil  * @endinternal
272f4c4dcf4SKowalski, Kamil  */
273f12894f8SJason M. Bills void actionParameterUnknown(crow::Response& res, const std::string& arg1,
2741abe55efSEd Tanous                             const std::string& arg2)
2751abe55efSEd Tanous {
276f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
277f12894f8SJason M. Bills     addMessageToErrorJson(
278f12894f8SJason M. Bills         res.jsonValue,
279f12894f8SJason M. Bills         nlohmann::json{
280f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
281cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterUnknown"},
282f4c4dcf4SKowalski, Kamil             {"Message", "The action " + arg1 +
283f12894f8SJason M. Bills                             " was submitted with the invalid parameter " +
284f12894f8SJason M. Bills                             arg2 + "."},
285f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
28666ac2b8cSJason M. Bills             {"Resolution", "Correct the invalid parameter and resubmit the "
28766ac2b8cSJason M. Bills                            "request if the operation failed."}});
288f4c4dcf4SKowalski, Kamil }
289f4c4dcf4SKowalski, Kamil 
290f4c4dcf4SKowalski, Kamil /**
291f4c4dcf4SKowalski, Kamil  * @internal
292f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceCannotBeDeleted message into JSON
293f4c4dcf4SKowalski, Kamil  *
294f4c4dcf4SKowalski, Kamil  * See header file for more information
295f4c4dcf4SKowalski, Kamil  * @endinternal
296f4c4dcf4SKowalski, Kamil  */
297f12894f8SJason M. Bills void resourceCannotBeDeleted(crow::Response& res)
2981abe55efSEd Tanous {
299f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
300f12894f8SJason M. Bills     addMessageToErrorJson(
301f12894f8SJason M. Bills         res.jsonValue,
302f12894f8SJason M. Bills         nlohmann::json{
303f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
304cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceCannotBeDeleted"},
305f12894f8SJason M. Bills             {"Message", "The delete request failed because the resource "
30666ac2b8cSJason M. Bills                         "requested cannot be deleted."},
307f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
308f12894f8SJason M. Bills             {"Resolution",
309f12894f8SJason M. Bills              "Do not attempt to delete a non-deletable resource."}});
310f4c4dcf4SKowalski, Kamil }
311f4c4dcf4SKowalski, Kamil 
312f4c4dcf4SKowalski, Kamil /**
313f4c4dcf4SKowalski, Kamil  * @internal
314f4c4dcf4SKowalski, Kamil  * @brief Formats PropertyDuplicate message into JSON
315f4c4dcf4SKowalski, Kamil  *
316f4c4dcf4SKowalski, Kamil  * See header file for more information
317f4c4dcf4SKowalski, Kamil  * @endinternal
318f4c4dcf4SKowalski, Kamil  */
319f12894f8SJason M. Bills void propertyDuplicate(crow::Response& res, const std::string& arg1)
3201abe55efSEd Tanous {
321f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
322*a08b46ccSJason M. Bills     addMessageToJson(
323f12894f8SJason M. Bills         res.jsonValue,
324f12894f8SJason M. Bills         nlohmann::json{
325f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
326cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyDuplicate"},
327f12894f8SJason M. Bills             {"Message",
328f12894f8SJason M. Bills              "The property " + arg1 + " was duplicated in the request."},
329f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
33066ac2b8cSJason M. Bills             {"Resolution",
33166ac2b8cSJason M. Bills              "Remove the duplicate property from the request body and resubmit "
332*a08b46ccSJason M. Bills              "the request if the operation failed."}},
333*a08b46ccSJason M. Bills         arg1);
334f4c4dcf4SKowalski, Kamil }
335f4c4dcf4SKowalski, Kamil 
336f4c4dcf4SKowalski, Kamil /**
337f4c4dcf4SKowalski, Kamil  * @internal
338f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceTemporarilyUnavailable message into JSON
339f4c4dcf4SKowalski, Kamil  *
340f4c4dcf4SKowalski, Kamil  * See header file for more information
341f4c4dcf4SKowalski, Kamil  * @endinternal
342f4c4dcf4SKowalski, Kamil  */
343f12894f8SJason M. Bills void serviceTemporarilyUnavailable(crow::Response& res, const std::string& arg1)
3441abe55efSEd Tanous {
345f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
346f12894f8SJason M. Bills     addMessageToErrorJson(
347f12894f8SJason M. Bills         res.jsonValue,
348f12894f8SJason M. Bills         nlohmann::json{
349f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
350cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ServiceTemporarilyUnavailable"},
3511abe55efSEd Tanous             {"Message", "The service is temporarily unavailable.  Retry in " +
3521abe55efSEd Tanous                             arg1 + " seconds."},
353f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
354f12894f8SJason M. Bills             {"Resolution", "Wait for the indicated retry duration and retry "
355f12894f8SJason M. Bills                            "the operation."}});
356f4c4dcf4SKowalski, Kamil }
357f4c4dcf4SKowalski, Kamil 
358f4c4dcf4SKowalski, Kamil /**
359f4c4dcf4SKowalski, Kamil  * @internal
360f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAlreadyExists message into JSON
361f4c4dcf4SKowalski, Kamil  *
362f4c4dcf4SKowalski, Kamil  * See header file for more information
363f4c4dcf4SKowalski, Kamil  * @endinternal
364f4c4dcf4SKowalski, Kamil  */
365f12894f8SJason M. Bills void resourceAlreadyExists(crow::Response& res, const std::string& arg1,
366f12894f8SJason M. Bills                            const std::string& arg2, const std::string& arg3)
3671abe55efSEd Tanous {
368f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
369*a08b46ccSJason M. Bills     addMessageToJson(
370f12894f8SJason M. Bills         res.jsonValue,
371f12894f8SJason M. Bills         nlohmann::json{
372f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
373cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceAlreadyExists"},
374f4c4dcf4SKowalski, Kamil             {"Message", "The requested resource of type " + arg1 +
3751abe55efSEd Tanous                             " with the property " + arg2 + " with the value " +
3761abe55efSEd Tanous                             arg3 + " already exists."},
377f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
378f12894f8SJason M. Bills             {"Resolution", "Do not repeat the create operation as the resource "
379*a08b46ccSJason M. Bills                            "has already been created."}},
380*a08b46ccSJason M. Bills         arg2);
381f4c4dcf4SKowalski, Kamil }
382f4c4dcf4SKowalski, Kamil 
383f4c4dcf4SKowalski, Kamil /**
384f4c4dcf4SKowalski, Kamil  * @internal
385f4c4dcf4SKowalski, Kamil  * @brief Formats AccountForSessionNoLongerExists message into JSON
386f4c4dcf4SKowalski, Kamil  *
387f4c4dcf4SKowalski, Kamil  * See header file for more information
388f4c4dcf4SKowalski, Kamil  * @endinternal
389f4c4dcf4SKowalski, Kamil  */
390*a08b46ccSJason M. Bills void accountForSessionNoLongerExists(crow::Response& res)
3911abe55efSEd Tanous {
392f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
393*a08b46ccSJason M. Bills     addMessageToErrorJson(
394f12894f8SJason M. Bills         res.jsonValue,
395f12894f8SJason M. Bills         nlohmann::json{
396f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
397cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.AccountForSessionNoLongerExists"},
3981abe55efSEd Tanous             {"Message", "The account for the current session has been removed, "
39966ac2b8cSJason M. Bills                         "thus the current session has been removed as well."},
400f4c4dcf4SKowalski, Kamil             {"Severity", "OK"},
401*a08b46ccSJason M. Bills             {"Resolution", "Attempt to connect with a valid account."}});
402f4c4dcf4SKowalski, Kamil }
403f4c4dcf4SKowalski, Kamil 
404f4c4dcf4SKowalski, Kamil /**
405f4c4dcf4SKowalski, Kamil  * @internal
406f4c4dcf4SKowalski, Kamil  * @brief Formats CreateFailedMissingReqProperties message into JSON
407f4c4dcf4SKowalski, Kamil  *
408f4c4dcf4SKowalski, Kamil  * See header file for more information
409f4c4dcf4SKowalski, Kamil  * @endinternal
410f4c4dcf4SKowalski, Kamil  */
411f12894f8SJason M. Bills void createFailedMissingReqProperties(crow::Response& res,
412f12894f8SJason M. Bills                                       const std::string& arg1)
4131abe55efSEd Tanous {
414f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
415*a08b46ccSJason M. Bills     addMessageToJson(
416f12894f8SJason M. Bills         res.jsonValue,
417f12894f8SJason M. Bills         nlohmann::json{
418f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
419cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.CreateFailedMissingReqProperties"},
4201abe55efSEd Tanous             {"Message",
421f12894f8SJason M. Bills              "The create operation failed because the required property " +
422f12894f8SJason M. Bills                  arg1 + " was missing from the request."},
423f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
424f4c4dcf4SKowalski, Kamil             {"Resolution",
425f12894f8SJason M. Bills              "Correct the body to include the required property with a valid "
426*a08b46ccSJason M. Bills              "value and resubmit the request if the operation failed."}},
427*a08b46ccSJason M. Bills         arg1);
428f12894f8SJason M. Bills }
429f12894f8SJason M. Bills 
430f12894f8SJason M. Bills /**
431f12894f8SJason M. Bills  * @internal
432f12894f8SJason M. Bills  * @brief Formats PropertyValueFormatError message into JSON for the specified
433f12894f8SJason M. Bills  * property
434f12894f8SJason M. Bills  *
435f12894f8SJason M. Bills  * See header file for more information
436f12894f8SJason M. Bills  * @endinternal
437f12894f8SJason M. Bills  */
438f12894f8SJason M. Bills void propertyValueFormatError(crow::Response& res, const std::string& arg1,
439*a08b46ccSJason M. Bills                               const std::string& arg2)
440f12894f8SJason M. Bills {
441f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
442f12894f8SJason M. Bills     addMessageToJson(
443f12894f8SJason M. Bills         res.jsonValue,
444f12894f8SJason M. Bills         nlohmann::json{
445f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
446cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyValueFormatError"},
447f12894f8SJason M. Bills             {"Message",
448f12894f8SJason M. Bills              "The value " + arg1 + " for the property " + arg2 +
449f12894f8SJason M. Bills                  " is of a different format than the property can accept."},
450f12894f8SJason M. Bills             {"Severity", "Warning"},
45166ac2b8cSJason M. Bills             {"Resolution",
45266ac2b8cSJason M. Bills              "Correct the value for the property in the request body and "
45366ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}},
454*a08b46ccSJason M. Bills         arg2);
455f12894f8SJason M. Bills }
456f12894f8SJason M. Bills 
457f12894f8SJason M. Bills /**
458f12894f8SJason M. Bills  * @internal
459f12894f8SJason M. Bills  * @brief Formats PropertyValueNotInList message into JSON for the specified
460f12894f8SJason M. Bills  * property
461f12894f8SJason M. Bills  *
462f12894f8SJason M. Bills  * See header file for more information
463f12894f8SJason M. Bills  * @endinternal
464f12894f8SJason M. Bills  */
465f12894f8SJason M. Bills void propertyValueNotInList(crow::Response& res, const std::string& arg1,
466*a08b46ccSJason M. Bills                             const std::string& arg2)
467f12894f8SJason M. Bills {
468f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
469f12894f8SJason M. Bills     addMessageToJson(
470f12894f8SJason M. Bills         res.jsonValue,
471f12894f8SJason M. Bills         nlohmann::json{
472f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
473cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyValueNotInList"},
474f12894f8SJason M. Bills             {"Message", "The value " + arg1 + " for the property " + arg2 +
475f12894f8SJason M. Bills                             " is not in the list of acceptable values."},
476f12894f8SJason M. Bills             {"Severity", "Warning"},
477f12894f8SJason M. Bills             {"Resolution",
478f12894f8SJason M. Bills              "Choose a value from the enumeration list that the implementation "
47966ac2b8cSJason M. Bills              "can support and resubmit the request if the operation failed."}},
480*a08b46ccSJason M. Bills         arg2);
481f4c4dcf4SKowalski, Kamil }
482f4c4dcf4SKowalski, Kamil 
483f4c4dcf4SKowalski, Kamil /**
484f4c4dcf4SKowalski, Kamil  * @internal
485f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceAtUriInUnknownFormat message into JSON
486f4c4dcf4SKowalski, Kamil  *
487f4c4dcf4SKowalski, Kamil  * See header file for more information
488f4c4dcf4SKowalski, Kamil  * @endinternal
489f4c4dcf4SKowalski, Kamil  */
490f12894f8SJason M. Bills void resourceAtUriInUnknownFormat(crow::Response& res, const std::string& arg1)
4911abe55efSEd Tanous {
492f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
493f12894f8SJason M. Bills     addMessageToErrorJson(
494f12894f8SJason M. Bills         res.jsonValue,
495f12894f8SJason M. Bills         nlohmann::json{
496f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
497cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceAtUriInUnknownFormat"},
498f4c4dcf4SKowalski, Kamil             {"Message", "The resource at " + arg1 +
499f4c4dcf4SKowalski, Kamil                             " is in a format not recognized by the service."},
500f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
501f12894f8SJason M. Bills             {"Resolution", "Place an image or resource or file that is "
50266ac2b8cSJason M. Bills                            "recognized by the service at the URI."}});
503f4c4dcf4SKowalski, Kamil }
504f4c4dcf4SKowalski, Kamil 
505f4c4dcf4SKowalski, Kamil /**
506f4c4dcf4SKowalski, Kamil  * @internal
507f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceInUnknownState message into JSON
508f4c4dcf4SKowalski, Kamil  *
509f4c4dcf4SKowalski, Kamil  * See header file for more information
510f4c4dcf4SKowalski, Kamil  * @endinternal
511f4c4dcf4SKowalski, Kamil  */
512f12894f8SJason M. Bills void serviceInUnknownState(crow::Response& res)
5131abe55efSEd Tanous {
514f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
515f12894f8SJason M. Bills     addMessageToErrorJson(
516f12894f8SJason M. Bills         res.jsonValue,
517f12894f8SJason M. Bills         nlohmann::json{
518f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
519cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ServiceInUnknownState"},
52066ac2b8cSJason M. Bills             {"Message",
52166ac2b8cSJason M. Bills              "The operation failed because the service is in an unknown state "
52266ac2b8cSJason M. Bills              "and can no longer take incoming requests."},
523f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
52466ac2b8cSJason M. Bills             {"Resolution", "Restart the service and resubmit the request if "
52566ac2b8cSJason M. Bills                            "the operation failed."}});
526f4c4dcf4SKowalski, Kamil }
527f4c4dcf4SKowalski, Kamil 
528f4c4dcf4SKowalski, Kamil /**
529f4c4dcf4SKowalski, Kamil  * @internal
530f4c4dcf4SKowalski, Kamil  * @brief Formats EventSubscriptionLimitExceeded message into JSON
531f4c4dcf4SKowalski, Kamil  *
532f4c4dcf4SKowalski, Kamil  * See header file for more information
533f4c4dcf4SKowalski, Kamil  * @endinternal
534f4c4dcf4SKowalski, Kamil  */
535f12894f8SJason M. Bills void eventSubscriptionLimitExceeded(crow::Response& res)
5361abe55efSEd Tanous {
537f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
538f12894f8SJason M. Bills     addMessageToErrorJson(
539f12894f8SJason M. Bills         res.jsonValue,
540f12894f8SJason M. Bills         nlohmann::json{
541f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
542cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.EventSubscriptionLimitExceeded"},
543f4c4dcf4SKowalski, Kamil             {"Message",
544f4c4dcf4SKowalski, Kamil              "The event subscription failed due to the number of simultaneous "
545f4c4dcf4SKowalski, Kamil              "subscriptions exceeding the limit of the implementation."},
546f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
547f4c4dcf4SKowalski, Kamil             {"Resolution",
548f12894f8SJason M. Bills              "Reduce the number of other subscriptions before trying to "
54966ac2b8cSJason M. Bills              "establish the event subscription or increase the limit of "
55066ac2b8cSJason M. Bills              "simultaneous subscriptions (if supported)."}});
551f4c4dcf4SKowalski, Kamil }
552f4c4dcf4SKowalski, Kamil 
553f4c4dcf4SKowalski, Kamil /**
554f4c4dcf4SKowalski, Kamil  * @internal
555f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterMissing message into JSON
556f4c4dcf4SKowalski, Kamil  *
557f4c4dcf4SKowalski, Kamil  * See header file for more information
558f4c4dcf4SKowalski, Kamil  * @endinternal
559f4c4dcf4SKowalski, Kamil  */
560f12894f8SJason M. Bills void actionParameterMissing(crow::Response& res, const std::string& arg1,
5611abe55efSEd Tanous                             const std::string& arg2)
5621abe55efSEd Tanous {
563f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
564f12894f8SJason M. Bills     addMessageToErrorJson(
565f12894f8SJason M. Bills         res.jsonValue,
566f12894f8SJason M. Bills         nlohmann::json{
567f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
568cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterMissing"},
569f12894f8SJason M. Bills             {"Message", "The action " + arg1 + " requires the parameter " +
570f12894f8SJason M. Bills                             arg2 + " to be present in the request body."},
571f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
572f12894f8SJason M. Bills             {"Resolution",
57366ac2b8cSJason M. Bills              "Supply the action with the required parameter in the request "
57466ac2b8cSJason M. Bills              "body when the request is resubmitted."}});
575f4c4dcf4SKowalski, Kamil }
576f4c4dcf4SKowalski, Kamil 
577f4c4dcf4SKowalski, Kamil /**
578f4c4dcf4SKowalski, Kamil  * @internal
579f4c4dcf4SKowalski, Kamil  * @brief Formats StringValueTooLong message into JSON
580f4c4dcf4SKowalski, Kamil  *
581f4c4dcf4SKowalski, Kamil  * See header file for more information
582f4c4dcf4SKowalski, Kamil  * @endinternal
583f4c4dcf4SKowalski, Kamil  */
584f12894f8SJason M. Bills void stringValueTooLong(crow::Response& res, const std::string& arg1,
585f12894f8SJason M. Bills                         const int& arg2)
5861abe55efSEd Tanous {
587f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
588f12894f8SJason M. Bills     addMessageToErrorJson(
589f12894f8SJason M. Bills         res.jsonValue,
590f12894f8SJason M. Bills         nlohmann::json{
591f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
592cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.StringValueTooLong"},
593f4c4dcf4SKowalski, Kamil             {"Message", "The string " + arg1 + " exceeds the length limit " +
594f4c4dcf4SKowalski, Kamil                             std::to_string(arg2) + "."},
595f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
596f4c4dcf4SKowalski, Kamil             {"Resolution",
597f12894f8SJason M. Bills              "Resubmit the request with an appropriate string length."}});
598f4c4dcf4SKowalski, Kamil }
599f4c4dcf4SKowalski, Kamil 
600f4c4dcf4SKowalski, Kamil /**
601f4c4dcf4SKowalski, Kamil  * @internal
602cc9139ecSJason M. Bills  * @brief Formats SessionTerminated message into JSON
603cc9139ecSJason M. Bills  *
604cc9139ecSJason M. Bills  * See header file for more information
605cc9139ecSJason M. Bills  * @endinternal
606cc9139ecSJason M. Bills  */
607cc9139ecSJason M. Bills void sessionTerminated(crow::Response& res)
608cc9139ecSJason M. Bills {
609cc9139ecSJason M. Bills     res.result(boost::beast::http::status::ok);
610cc9139ecSJason M. Bills     addMessageToJsonRoot(
611cc9139ecSJason M. Bills         res.jsonValue,
612cc9139ecSJason M. Bills         nlohmann::json{
613cc9139ecSJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
614cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.SessionTerminated"},
615cc9139ecSJason M. Bills             {"Message", "The session was successfully terminated."},
616cc9139ecSJason M. Bills             {"Severity", "OK"},
617cc9139ecSJason M. Bills             {"Resolution", "No resolution is required."}});
618cc9139ecSJason M. Bills }
619cc9139ecSJason M. Bills 
620cc9139ecSJason M. Bills /**
621cc9139ecSJason M. Bills  * @internal
622cc9139ecSJason M. Bills  * @brief Formats ResourceTypeIncompatible message into JSON
623cc9139ecSJason M. Bills  *
624cc9139ecSJason M. Bills  * See header file for more information
625cc9139ecSJason M. Bills  * @endinternal
626cc9139ecSJason M. Bills  */
627cc9139ecSJason M. Bills void resourceTypeIncompatible(crow::Response& res, const std::string& arg1,
628cc9139ecSJason M. Bills                               const std::string& arg2)
629cc9139ecSJason M. Bills {
630cc9139ecSJason M. Bills     res.result(boost::beast::http::status::bad_request);
631cc9139ecSJason M. Bills     addMessageToErrorJson(
632cc9139ecSJason M. Bills         res.jsonValue,
633cc9139ecSJason M. Bills         nlohmann::json{
634cc9139ecSJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
635cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceTypeIncompatible"},
636cc9139ecSJason M. Bills             {"Message", "The @odata.type of the request body " + arg1 +
637cc9139ecSJason M. Bills                             " is incompatible with the @odata.type of the "
638cc9139ecSJason M. Bills                             "resource which is " +
639cc9139ecSJason M. Bills                             arg2 + "."},
640cc9139ecSJason M. Bills             {"Severity", "Critical"},
641cc9139ecSJason M. Bills             {"Resolution", "Resubmit the request with a payload compatible "
642cc9139ecSJason M. Bills                            "with the resource's schema."}});
643cc9139ecSJason M. Bills }
644cc9139ecSJason M. Bills 
645cc9139ecSJason M. Bills /**
646cc9139ecSJason M. Bills  * @internal
647f12894f8SJason M. Bills  * @brief Formats PropertyValueTypeError message into JSON for the specified
648f12894f8SJason M. Bills  * property
649f12894f8SJason M. Bills  *
650f12894f8SJason M. Bills  * See header file for more information
651f12894f8SJason M. Bills  * @endinternal
652f12894f8SJason M. Bills  */
653f12894f8SJason M. Bills void propertyValueTypeError(crow::Response& res, const std::string& arg1,
654*a08b46ccSJason M. Bills                             const std::string& arg2)
655f12894f8SJason M. Bills {
656f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
657f12894f8SJason M. Bills     addMessageToJson(
658f12894f8SJason M. Bills         res.jsonValue,
659f12894f8SJason M. Bills         nlohmann::json{
660f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
661cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyValueTypeError"},
662f12894f8SJason M. Bills             {"Message",
663f12894f8SJason M. Bills              "The value " + arg1 + " for the property " + arg2 +
664f12894f8SJason M. Bills                  " is of a different type than the property can accept."},
665f12894f8SJason M. Bills             {"Severity", "Warning"},
66666ac2b8cSJason M. Bills             {"Resolution",
66766ac2b8cSJason M. Bills              "Correct the value for the property in the request body and "
66866ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}},
669*a08b46ccSJason M. Bills         arg2);
670f4c4dcf4SKowalski, Kamil }
671f4c4dcf4SKowalski, Kamil 
672f4c4dcf4SKowalski, Kamil /**
673f4c4dcf4SKowalski, Kamil  * @internal
674f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceNotFound message into JSON
675f4c4dcf4SKowalski, Kamil  *
676f4c4dcf4SKowalski, Kamil  * See header file for more information
677f4c4dcf4SKowalski, Kamil  * @endinternal
678f4c4dcf4SKowalski, Kamil  */
679f12894f8SJason M. Bills void resourceNotFound(crow::Response& res, const std::string& arg1,
6801abe55efSEd Tanous                       const std::string& arg2)
6811abe55efSEd Tanous {
682f12894f8SJason M. Bills     res.result(boost::beast::http::status::not_found);
683f12894f8SJason M. Bills     addMessageToErrorJson(
684f12894f8SJason M. Bills         res.jsonValue,
685f12894f8SJason M. Bills         nlohmann::json{
686f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
687cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceNotFound"},
6881abe55efSEd Tanous             {"Message", "The requested resource of type " + arg1 + " named " +
6891abe55efSEd Tanous                             arg2 + " was not found."},
690f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
691f4c4dcf4SKowalski, Kamil             {"Resolution",
692f12894f8SJason M. Bills              "Provide a valid resource identifier and resubmit the request."}});
693f4c4dcf4SKowalski, Kamil }
694f4c4dcf4SKowalski, Kamil 
695f4c4dcf4SKowalski, Kamil /**
696f4c4dcf4SKowalski, Kamil  * @internal
697f4c4dcf4SKowalski, Kamil  * @brief Formats CouldNotEstablishConnection message into JSON
698f4c4dcf4SKowalski, Kamil  *
699f4c4dcf4SKowalski, Kamil  * See header file for more information
700f4c4dcf4SKowalski, Kamil  * @endinternal
701f4c4dcf4SKowalski, Kamil  */
702f12894f8SJason M. Bills void couldNotEstablishConnection(crow::Response& res, const std::string& arg1)
7031abe55efSEd Tanous {
704f12894f8SJason M. Bills     res.result(boost::beast::http::status::not_found);
705f12894f8SJason M. Bills     addMessageToErrorJson(
706f12894f8SJason M. Bills         res.jsonValue,
707f12894f8SJason M. Bills         nlohmann::json{
708f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
709cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.CouldNotEstablishConnection"},
7101abe55efSEd Tanous             {"Message",
711f12894f8SJason M. Bills              "The service failed to establish a Connection with the URI " +
712f12894f8SJason M. Bills                  arg1 + "."},
713f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
71466ac2b8cSJason M. Bills             {"Resolution",
71566ac2b8cSJason M. Bills              "Ensure that the URI contains a valid and reachable node name, "
71666ac2b8cSJason M. Bills              "protocol information and other URI components."}});
717f4c4dcf4SKowalski, Kamil }
718f4c4dcf4SKowalski, Kamil 
719f4c4dcf4SKowalski, Kamil /**
720f4c4dcf4SKowalski, Kamil  * @internal
721f12894f8SJason M. Bills  * @brief Formats PropertyNotWritable message into JSON for the specified
722f12894f8SJason M. Bills  * property
723f12894f8SJason M. Bills  *
724f12894f8SJason M. Bills  * See header file for more information
725f12894f8SJason M. Bills  * @endinternal
726f12894f8SJason M. Bills  */
727*a08b46ccSJason M. Bills void propertyNotWritable(crow::Response& res, const std::string& arg1)
728f12894f8SJason M. Bills {
729f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
730f12894f8SJason M. Bills     addMessageToJson(
731f12894f8SJason M. Bills         res.jsonValue,
732f12894f8SJason M. Bills         nlohmann::json{
733f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
734cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyNotWritable"},
735f12894f8SJason M. Bills             {"Message",
736f12894f8SJason M. Bills              "The property " + arg1 +
737f12894f8SJason M. Bills                  " is a read only property and cannot be assigned a value."},
738f12894f8SJason M. Bills             {"Severity", "Warning"},
73966ac2b8cSJason M. Bills             {"Resolution", "Remove the property from the request body and "
74066ac2b8cSJason M. Bills                            "resubmit the request if the operation failed."}},
741*a08b46ccSJason M. Bills         arg1);
742f4c4dcf4SKowalski, Kamil }
743f4c4dcf4SKowalski, Kamil 
744f4c4dcf4SKowalski, Kamil /**
745f4c4dcf4SKowalski, Kamil  * @internal
746f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterValueTypeError message into JSON
747f4c4dcf4SKowalski, Kamil  *
748f4c4dcf4SKowalski, Kamil  * See header file for more information
749f4c4dcf4SKowalski, Kamil  * @endinternal
750f4c4dcf4SKowalski, Kamil  */
751f12894f8SJason M. Bills void queryParameterValueTypeError(crow::Response& res, const std::string& arg1,
7521abe55efSEd Tanous                                   const std::string& arg2)
7531abe55efSEd Tanous {
754f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
755f12894f8SJason M. Bills     addMessageToErrorJson(
756f12894f8SJason M. Bills         res.jsonValue,
757f12894f8SJason M. Bills         nlohmann::json{
758f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
759cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.QueryParameterValueTypeError"},
7601abe55efSEd Tanous             {"Message",
7611abe55efSEd Tanous              "The value " + arg1 + " for the query parameter " + arg2 +
762f4c4dcf4SKowalski, Kamil                  " is of a different type than the parameter can accept."},
763f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
76466ac2b8cSJason M. Bills             {"Resolution",
76566ac2b8cSJason M. Bills              "Correct the value for the query parameter in the request and "
76666ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}});
767f4c4dcf4SKowalski, Kamil }
768f4c4dcf4SKowalski, Kamil 
769f4c4dcf4SKowalski, Kamil /**
770f4c4dcf4SKowalski, Kamil  * @internal
771f4c4dcf4SKowalski, Kamil  * @brief Formats ServiceShuttingDown message into JSON
772f4c4dcf4SKowalski, Kamil  *
773f4c4dcf4SKowalski, Kamil  * See header file for more information
774f4c4dcf4SKowalski, Kamil  * @endinternal
775f4c4dcf4SKowalski, Kamil  */
776f12894f8SJason M. Bills void serviceShuttingDown(crow::Response& res)
7771abe55efSEd Tanous {
778f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
779f12894f8SJason M. Bills     addMessageToErrorJson(
780f12894f8SJason M. Bills         res.jsonValue,
781f12894f8SJason M. Bills         nlohmann::json{
782f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
783cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ServiceShuttingDown"},
784f12894f8SJason M. Bills             {"Message", "The operation failed because the service is shutting "
78566ac2b8cSJason M. Bills                         "down and can no longer take incoming requests."},
786f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
78766ac2b8cSJason M. Bills             {"Resolution", "When the service becomes available, resubmit the "
78866ac2b8cSJason M. Bills                            "request if the operation failed."}});
789f4c4dcf4SKowalski, Kamil }
790f4c4dcf4SKowalski, Kamil 
791f4c4dcf4SKowalski, Kamil /**
792f4c4dcf4SKowalski, Kamil  * @internal
793f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterDuplicate message into JSON
794f4c4dcf4SKowalski, Kamil  *
795f4c4dcf4SKowalski, Kamil  * See header file for more information
796f4c4dcf4SKowalski, Kamil  * @endinternal
797f4c4dcf4SKowalski, Kamil  */
798f12894f8SJason M. Bills void actionParameterDuplicate(crow::Response& res, const std::string& arg1,
7991abe55efSEd Tanous                               const std::string& arg2)
8001abe55efSEd Tanous {
801f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
802f12894f8SJason M. Bills     addMessageToErrorJson(
803f12894f8SJason M. Bills         res.jsonValue,
804f12894f8SJason M. Bills         nlohmann::json{
805f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
806cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterDuplicate"},
807f4c4dcf4SKowalski, Kamil             {"Message",
808f4c4dcf4SKowalski, Kamil              "The action " + arg1 +
8091abe55efSEd Tanous                  " was submitted with more than one value for the parameter " +
8101abe55efSEd Tanous                  arg2 + "."},
811f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
81266ac2b8cSJason M. Bills             {"Resolution",
81366ac2b8cSJason M. Bills              "Resubmit the action with only one instance of the parameter in "
81466ac2b8cSJason M. Bills              "the request body if the operation failed."}});
815f4c4dcf4SKowalski, Kamil }
816f4c4dcf4SKowalski, Kamil 
817f4c4dcf4SKowalski, Kamil /**
818f4c4dcf4SKowalski, Kamil  * @internal
819f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterNotSupported message into JSON
820f4c4dcf4SKowalski, Kamil  *
821f4c4dcf4SKowalski, Kamil  * See header file for more information
822f4c4dcf4SKowalski, Kamil  * @endinternal
823f4c4dcf4SKowalski, Kamil  */
824f12894f8SJason M. Bills void actionParameterNotSupported(crow::Response& res, const std::string& arg1,
8251abe55efSEd Tanous                                  const std::string& arg2)
8261abe55efSEd Tanous {
827f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
828f12894f8SJason M. Bills     addMessageToErrorJson(
829f12894f8SJason M. Bills         res.jsonValue,
830f12894f8SJason M. Bills         nlohmann::json{
831f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
832cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterNotSupported"},
833f4c4dcf4SKowalski, Kamil             {"Message", "The parameter " + arg1 + " for the action " + arg2 +
834f4c4dcf4SKowalski, Kamil                             " is not supported on the target resource."},
835f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
83666ac2b8cSJason M. Bills             {"Resolution", "Remove the parameter supplied and resubmit the "
83766ac2b8cSJason M. Bills                            "request if the operation failed."}});
838f4c4dcf4SKowalski, Kamil }
839f4c4dcf4SKowalski, Kamil 
840f4c4dcf4SKowalski, Kamil /**
841f4c4dcf4SKowalski, Kamil  * @internal
842f4c4dcf4SKowalski, Kamil  * @brief Formats SourceDoesNotSupportProtocol message into JSON
843f4c4dcf4SKowalski, Kamil  *
844f4c4dcf4SKowalski, Kamil  * See header file for more information
845f4c4dcf4SKowalski, Kamil  * @endinternal
846f4c4dcf4SKowalski, Kamil  */
847f12894f8SJason M. Bills void sourceDoesNotSupportProtocol(crow::Response& res, const std::string& arg1,
8481abe55efSEd Tanous                                   const std::string& arg2)
8491abe55efSEd Tanous {
850f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
851f12894f8SJason M. Bills     addMessageToErrorJson(
852f12894f8SJason M. Bills         res.jsonValue,
853f12894f8SJason M. Bills         nlohmann::json{
854f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
855cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.SourceDoesNotSupportProtocol"},
85655c7b7a2SEd Tanous             {"Message", "The other end of the Connection at " + arg1 +
8571abe55efSEd Tanous                             " does not support the specified protocol " + arg2 +
8581abe55efSEd Tanous                             "."},
859f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
860f12894f8SJason M. Bills             {"Resolution", "Change protocols or URIs. "}});
861f4c4dcf4SKowalski, Kamil }
862f4c4dcf4SKowalski, Kamil 
863f4c4dcf4SKowalski, Kamil /**
864f4c4dcf4SKowalski, Kamil  * @internal
865f4c4dcf4SKowalski, Kamil  * @brief Formats AccountRemoved message into JSON
866f4c4dcf4SKowalski, Kamil  *
867f4c4dcf4SKowalski, Kamil  * See header file for more information
868f4c4dcf4SKowalski, Kamil  * @endinternal
869f4c4dcf4SKowalski, Kamil  */
870f12894f8SJason M. Bills void accountRemoved(crow::Response& res)
8711abe55efSEd Tanous {
872f12894f8SJason M. Bills     res.result(boost::beast::http::status::ok);
873f12894f8SJason M. Bills     addMessageToJsonRoot(
874f12894f8SJason M. Bills         res.jsonValue,
875f12894f8SJason M. Bills         nlohmann::json{
876f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
877cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.AccountRemoved"},
878f4c4dcf4SKowalski, Kamil             {"Message", "The account was successfully removed."},
879f4c4dcf4SKowalski, Kamil             {"Severity", "OK"},
880f12894f8SJason M. Bills             {"Resolution", "No resolution is required."}});
881f4c4dcf4SKowalski, Kamil }
882f4c4dcf4SKowalski, Kamil 
883f4c4dcf4SKowalski, Kamil /**
884f4c4dcf4SKowalski, Kamil  * @internal
885f4c4dcf4SKowalski, Kamil  * @brief Formats AccessDenied message into JSON
886f4c4dcf4SKowalski, Kamil  *
887f4c4dcf4SKowalski, Kamil  * See header file for more information
888f4c4dcf4SKowalski, Kamil  * @endinternal
889f4c4dcf4SKowalski, Kamil  */
890f12894f8SJason M. Bills void accessDenied(crow::Response& res, const std::string& arg1)
8911abe55efSEd Tanous {
892f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
893f12894f8SJason M. Bills     addMessageToErrorJson(
894f12894f8SJason M. Bills         res.jsonValue,
895f12894f8SJason M. Bills         nlohmann::json{
896f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
897cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.AccessDenied"},
898f12894f8SJason M. Bills             {"Message", "While attempting to establish a Connection to " +
899f12894f8SJason M. Bills                             arg1 + ", the service denied access."},
900f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
90166ac2b8cSJason M. Bills             {"Resolution", "Attempt to ensure that the URI is correct and that "
90266ac2b8cSJason M. Bills                            "the service has the appropriate credentials."}});
903f4c4dcf4SKowalski, Kamil }
904f4c4dcf4SKowalski, Kamil 
905f4c4dcf4SKowalski, Kamil /**
906f4c4dcf4SKowalski, Kamil  * @internal
907f4c4dcf4SKowalski, Kamil  * @brief Formats QueryNotSupported message into JSON
908f4c4dcf4SKowalski, Kamil  *
909f4c4dcf4SKowalski, Kamil  * See header file for more information
910f4c4dcf4SKowalski, Kamil  * @endinternal
911f4c4dcf4SKowalski, Kamil  */
912f12894f8SJason M. Bills void queryNotSupported(crow::Response& res)
9131abe55efSEd Tanous {
914f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
915f12894f8SJason M. Bills     addMessageToErrorJson(
916f12894f8SJason M. Bills         res.jsonValue,
917f12894f8SJason M. Bills         nlohmann::json{
918f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
919cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.QueryNotSupported"},
920f4c4dcf4SKowalski, Kamil             {"Message", "Querying is not supported by the implementation."},
921f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
92266ac2b8cSJason M. Bills             {"Resolution", "Remove the query parameters and resubmit the "
92366ac2b8cSJason M. Bills                            "request if the operation failed."}});
924f4c4dcf4SKowalski, Kamil }
925f4c4dcf4SKowalski, Kamil 
926f4c4dcf4SKowalski, Kamil /**
927f4c4dcf4SKowalski, Kamil  * @internal
928f4c4dcf4SKowalski, Kamil  * @brief Formats CreateLimitReachedForResource message into JSON
929f4c4dcf4SKowalski, Kamil  *
930f4c4dcf4SKowalski, Kamil  * See header file for more information
931f4c4dcf4SKowalski, Kamil  * @endinternal
932f4c4dcf4SKowalski, Kamil  */
933f12894f8SJason M. Bills void createLimitReachedForResource(crow::Response& res)
9341abe55efSEd Tanous {
935f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
936f12894f8SJason M. Bills     addMessageToErrorJson(
937f12894f8SJason M. Bills         res.jsonValue,
938f12894f8SJason M. Bills         nlohmann::json{
939f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
940cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.CreateLimitReachedForResource"},
9411abe55efSEd Tanous             {"Message", "The create operation failed because the resource has "
94266ac2b8cSJason M. Bills                         "reached the limit of possible resources."},
943f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
94466ac2b8cSJason M. Bills             {"Resolution",
94566ac2b8cSJason M. Bills              "Either delete resources and resubmit the request if the "
94666ac2b8cSJason M. Bills              "operation failed or do not resubmit the request."}});
947f4c4dcf4SKowalski, Kamil }
948f4c4dcf4SKowalski, Kamil 
949f4c4dcf4SKowalski, Kamil /**
950f4c4dcf4SKowalski, Kamil  * @internal
951f4c4dcf4SKowalski, Kamil  * @brief Formats GeneralError message into JSON
952f4c4dcf4SKowalski, Kamil  *
953f4c4dcf4SKowalski, Kamil  * See header file for more information
954f4c4dcf4SKowalski, Kamil  * @endinternal
955f4c4dcf4SKowalski, Kamil  */
956f12894f8SJason M. Bills void generalError(crow::Response& res)
9571abe55efSEd Tanous {
958f12894f8SJason M. Bills     res.result(boost::beast::http::status::internal_server_error);
959f12894f8SJason M. Bills     addMessageToErrorJson(
960f12894f8SJason M. Bills         res.jsonValue,
961f12894f8SJason M. Bills         nlohmann::json{
962f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
963cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.GeneralError"},
964cc9139ecSJason M. Bills             {"Message", "A general error has occurred. See Resolution for "
965cc9139ecSJason M. Bills                         "information on how to resolve the error."},
966f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
967cc9139ecSJason M. Bills             {"Resolution", "None."}});
968f4c4dcf4SKowalski, Kamil }
969f4c4dcf4SKowalski, Kamil 
970f4c4dcf4SKowalski, Kamil /**
971f4c4dcf4SKowalski, Kamil  * @internal
972f4c4dcf4SKowalski, Kamil  * @brief Formats Success message into JSON
973f4c4dcf4SKowalski, Kamil  *
974f4c4dcf4SKowalski, Kamil  * See header file for more information
975f4c4dcf4SKowalski, Kamil  * @endinternal
976f4c4dcf4SKowalski, Kamil  */
977f12894f8SJason M. Bills void success(crow::Response& res)
9781abe55efSEd Tanous {
979f12894f8SJason M. Bills     res.result(boost::beast::http::status::ok);
980f12894f8SJason M. Bills     addMessageToJsonRoot(
981f12894f8SJason M. Bills         res.jsonValue,
982f12894f8SJason M. Bills         nlohmann::json{
983f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
984cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.Success"},
985f4c4dcf4SKowalski, Kamil             {"Message", "Successfully Completed Request"},
986f4c4dcf4SKowalski, Kamil             {"Severity", "OK"},
987f12894f8SJason M. Bills             {"Resolution", "None"}});
988f12894f8SJason M. Bills }
989f12894f8SJason M. Bills 
990f12894f8SJason M. Bills /**
991f12894f8SJason M. Bills  * @internal
992f4c4dcf4SKowalski, Kamil  * @brief Formats Created message into JSON
993f4c4dcf4SKowalski, Kamil  *
994f4c4dcf4SKowalski, Kamil  * See header file for more information
995f4c4dcf4SKowalski, Kamil  * @endinternal
996f4c4dcf4SKowalski, Kamil  */
997f12894f8SJason M. Bills void created(crow::Response& res)
9981abe55efSEd Tanous {
999f12894f8SJason M. Bills     res.result(boost::beast::http::status::created);
1000f12894f8SJason M. Bills     addMessageToJsonRoot(
1001f12894f8SJason M. Bills         res.jsonValue,
1002f12894f8SJason M. Bills         nlohmann::json{
1003f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1004cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.Created"},
1005f4c4dcf4SKowalski, Kamil             {"Message", "The resource has been created successfully"},
1006f4c4dcf4SKowalski, Kamil             {"Severity", "OK"},
1007f12894f8SJason M. Bills             {"Resolution", "None"}});
1008f4c4dcf4SKowalski, Kamil }
1009f4c4dcf4SKowalski, Kamil 
1010f4c4dcf4SKowalski, Kamil /**
1011f4c4dcf4SKowalski, Kamil  * @internal
1012cc9139ecSJason M. Bills  * @brief Formats NoOperation message into JSON
1013cc9139ecSJason M. Bills  *
1014cc9139ecSJason M. Bills  * See header file for more information
1015cc9139ecSJason M. Bills  * @endinternal
1016cc9139ecSJason M. Bills  */
1017cc9139ecSJason M. Bills void noOperation(crow::Response& res)
1018cc9139ecSJason M. Bills {
1019cc9139ecSJason M. Bills     res.result(boost::beast::http::status::bad_request);
1020cc9139ecSJason M. Bills     addMessageToErrorJson(
1021cc9139ecSJason M. Bills         res.jsonValue,
1022cc9139ecSJason M. Bills         nlohmann::json{
1023cc9139ecSJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1024cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.NoOperation"},
1025cc9139ecSJason M. Bills             {"Message", "The request body submitted contain no data to act "
1026cc9139ecSJason M. Bills                         "upon and no changes to the resource took place."},
1027cc9139ecSJason M. Bills             {"Severity", "Warning"},
1028cc9139ecSJason M. Bills             {"Resolution",
1029cc9139ecSJason M. Bills              "Add properties in the JSON object and resubmit the request."}});
1030cc9139ecSJason M. Bills }
1031cc9139ecSJason M. Bills 
1032cc9139ecSJason M. Bills /**
1033cc9139ecSJason M. Bills  * @internal
1034f12894f8SJason M. Bills  * @brief Formats PropertyUnknown message into JSON for the specified property
1035f12894f8SJason M. Bills  *
1036f12894f8SJason M. Bills  * See header file for more information
1037f12894f8SJason M. Bills  * @endinternal
1038f12894f8SJason M. Bills  */
1039*a08b46ccSJason M. Bills void propertyUnknown(crow::Response& res, const std::string& arg1)
1040f12894f8SJason M. Bills {
1041f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1042f12894f8SJason M. Bills     addMessageToJson(
1043f12894f8SJason M. Bills         res.jsonValue,
1044f12894f8SJason M. Bills         nlohmann::json{
1045f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1046cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyUnknown"},
1047f12894f8SJason M. Bills             {"Message",
1048f12894f8SJason M. Bills              "The property " + arg1 +
1049f12894f8SJason M. Bills                  " is not in the list of valid properties for the resource."},
1050f12894f8SJason M. Bills             {"Severity", "Warning"},
105166ac2b8cSJason M. Bills             {"Resolution",
105266ac2b8cSJason M. Bills              "Remove the unknown property from the request body and resubmit "
105366ac2b8cSJason M. Bills              "the request if the operation failed."}},
1054*a08b46ccSJason M. Bills         arg1);
1055f4c4dcf4SKowalski, Kamil }
1056f4c4dcf4SKowalski, Kamil 
1057f4c4dcf4SKowalski, Kamil /**
1058f4c4dcf4SKowalski, Kamil  * @internal
1059f4c4dcf4SKowalski, Kamil  * @brief Formats NoValidSession message into JSON
1060f4c4dcf4SKowalski, Kamil  *
1061f4c4dcf4SKowalski, Kamil  * See header file for more information
1062f4c4dcf4SKowalski, Kamil  * @endinternal
1063f4c4dcf4SKowalski, Kamil  */
1064f12894f8SJason M. Bills void noValidSession(crow::Response& res)
10651abe55efSEd Tanous {
1066f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
1067f12894f8SJason M. Bills     addMessageToErrorJson(
1068f12894f8SJason M. Bills         res.jsonValue,
1069f12894f8SJason M. Bills         nlohmann::json{
1070f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1071cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.NoValidSession"},
1072f4c4dcf4SKowalski, Kamil             {"Message",
1073f4c4dcf4SKowalski, Kamil              "There is no valid session established with the implementation."},
1074f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
10751abe55efSEd Tanous             {"Resolution",
1076f12894f8SJason M. Bills              "Establish as session before attempting any operations."}});
1077f4c4dcf4SKowalski, Kamil }
1078f4c4dcf4SKowalski, Kamil 
1079f4c4dcf4SKowalski, Kamil /**
1080f4c4dcf4SKowalski, Kamil  * @internal
1081f4c4dcf4SKowalski, Kamil  * @brief Formats InvalidObject message into JSON
1082f4c4dcf4SKowalski, Kamil  *
1083f4c4dcf4SKowalski, Kamil  * See header file for more information
1084f4c4dcf4SKowalski, Kamil  * @endinternal
1085f4c4dcf4SKowalski, Kamil  */
1086f12894f8SJason M. Bills void invalidObject(crow::Response& res, const std::string& arg1)
10871abe55efSEd Tanous {
1088f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1089f12894f8SJason M. Bills     addMessageToErrorJson(
1090f12894f8SJason M. Bills         res.jsonValue,
1091f12894f8SJason M. Bills         nlohmann::json{
1092f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1093cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.InvalidObject"},
1094f4c4dcf4SKowalski, Kamil             {"Message", "The object at " + arg1 + " is invalid."},
1095f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1096f12894f8SJason M. Bills             {"Resolution",
109766ac2b8cSJason M. Bills              "Either the object is malformed or the URI is not correct.  "
109866ac2b8cSJason M. Bills              "Correct the condition and resubmit the request if it failed."}});
1099f4c4dcf4SKowalski, Kamil }
1100f4c4dcf4SKowalski, Kamil 
1101f4c4dcf4SKowalski, Kamil /**
1102f4c4dcf4SKowalski, Kamil  * @internal
1103f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceInStandby message into JSON
1104f4c4dcf4SKowalski, Kamil  *
1105f4c4dcf4SKowalski, Kamil  * See header file for more information
1106f4c4dcf4SKowalski, Kamil  * @endinternal
1107f4c4dcf4SKowalski, Kamil  */
1108f12894f8SJason M. Bills void resourceInStandby(crow::Response& res)
11091abe55efSEd Tanous {
1110f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
1111f12894f8SJason M. Bills     addMessageToErrorJson(
1112f12894f8SJason M. Bills         res.jsonValue,
1113f12894f8SJason M. Bills         nlohmann::json{
1114f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1115cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceInStandby"},
111666ac2b8cSJason M. Bills             {"Message", "The request could not be performed because the "
111766ac2b8cSJason M. Bills                         "resource is in standby."},
1118f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1119f12894f8SJason M. Bills             {"Resolution", "Ensure that the resource is in the correct power "
112066ac2b8cSJason M. Bills                            "state and resubmit the request."}});
1121f4c4dcf4SKowalski, Kamil }
1122f4c4dcf4SKowalski, Kamil 
1123f4c4dcf4SKowalski, Kamil /**
1124f4c4dcf4SKowalski, Kamil  * @internal
1125f4c4dcf4SKowalski, Kamil  * @brief Formats ActionParameterValueTypeError message into JSON
1126f4c4dcf4SKowalski, Kamil  *
1127f4c4dcf4SKowalski, Kamil  * See header file for more information
1128f4c4dcf4SKowalski, Kamil  * @endinternal
1129f4c4dcf4SKowalski, Kamil  */
1130f12894f8SJason M. Bills void actionParameterValueTypeError(crow::Response& res, const std::string& arg1,
1131f4c4dcf4SKowalski, Kamil                                    const std::string& arg2,
11321abe55efSEd Tanous                                    const std::string& arg3)
11331abe55efSEd Tanous {
1134f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1135f12894f8SJason M. Bills     addMessageToErrorJson(
1136f12894f8SJason M. Bills         res.jsonValue,
1137f12894f8SJason M. Bills         nlohmann::json{
1138f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1139cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionParameterValueTypeError"},
11401abe55efSEd Tanous             {"Message",
11411abe55efSEd Tanous              "The value " + arg1 + " for the parameter " + arg2 +
1142f4c4dcf4SKowalski, Kamil                  " in the action " + arg3 +
1143f4c4dcf4SKowalski, Kamil                  " is of a different type than the parameter can accept."},
1144f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
114566ac2b8cSJason M. Bills             {"Resolution",
114666ac2b8cSJason M. Bills              "Correct the value for the parameter in the request body and "
114766ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}});
1148f4c4dcf4SKowalski, Kamil }
1149f4c4dcf4SKowalski, Kamil 
1150f4c4dcf4SKowalski, Kamil /**
1151f4c4dcf4SKowalski, Kamil  * @internal
1152f4c4dcf4SKowalski, Kamil  * @brief Formats SessionLimitExceeded message into JSON
1153f4c4dcf4SKowalski, Kamil  *
1154f4c4dcf4SKowalski, Kamil  * See header file for more information
1155f4c4dcf4SKowalski, Kamil  * @endinternal
1156f4c4dcf4SKowalski, Kamil  */
1157f12894f8SJason M. Bills void sessionLimitExceeded(crow::Response& res)
11581abe55efSEd Tanous {
1159f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
1160f12894f8SJason M. Bills     addMessageToErrorJson(
1161f12894f8SJason M. Bills         res.jsonValue,
1162f12894f8SJason M. Bills         nlohmann::json{
1163f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1164cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.SessionLimitExceeded"},
1165f12894f8SJason M. Bills             {"Message", "The session establishment failed due to the number of "
116666ac2b8cSJason M. Bills                         "simultaneous sessions exceeding the limit of the "
116766ac2b8cSJason M. Bills                         "implementation."},
1168f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
116966ac2b8cSJason M. Bills             {"Resolution", "Reduce the number of other sessions before trying "
117066ac2b8cSJason M. Bills                            "to establish the session or increase the limit of "
117166ac2b8cSJason M. Bills                            "simultaneous sessions (if supported)."}});
1172f4c4dcf4SKowalski, Kamil }
1173f4c4dcf4SKowalski, Kamil 
1174f4c4dcf4SKowalski, Kamil /**
1175f4c4dcf4SKowalski, Kamil  * @internal
1176f4c4dcf4SKowalski, Kamil  * @brief Formats ActionNotSupported message into JSON
1177f4c4dcf4SKowalski, Kamil  *
1178f4c4dcf4SKowalski, Kamil  * See header file for more information
1179f4c4dcf4SKowalski, Kamil  * @endinternal
1180f4c4dcf4SKowalski, Kamil  */
1181f12894f8SJason M. Bills void actionNotSupported(crow::Response& res, const std::string& arg1)
11821abe55efSEd Tanous {
1183f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1184f12894f8SJason M. Bills     addMessageToErrorJson(
1185f12894f8SJason M. Bills         res.jsonValue,
1186f12894f8SJason M. Bills         nlohmann::json{
1187f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1188cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ActionNotSupported"},
11891abe55efSEd Tanous             {"Message",
11901abe55efSEd Tanous              "The action " + arg1 + " is not supported by the resource."},
1191f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1192f4c4dcf4SKowalski, Kamil             {"Resolution",
1193f4c4dcf4SKowalski, Kamil              "The action supplied cannot be resubmitted to the implementation. "
1194f12894f8SJason M. Bills              " Perhaps the action was invalid, the wrong resource was the "
119566ac2b8cSJason M. Bills              "target or the implementation documentation may be of "
119666ac2b8cSJason M. Bills              "assistance."}});
1197f4c4dcf4SKowalski, Kamil }
1198f4c4dcf4SKowalski, Kamil 
1199f4c4dcf4SKowalski, Kamil /**
1200f4c4dcf4SKowalski, Kamil  * @internal
1201f4c4dcf4SKowalski, Kamil  * @brief Formats InvalidIndex message into JSON
1202f4c4dcf4SKowalski, Kamil  *
1203f4c4dcf4SKowalski, Kamil  * See header file for more information
1204f4c4dcf4SKowalski, Kamil  * @endinternal
1205f4c4dcf4SKowalski, Kamil  */
1206f12894f8SJason M. Bills void invalidIndex(crow::Response& res, const int& arg1)
12071abe55efSEd Tanous {
1208f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1209f12894f8SJason M. Bills     addMessageToErrorJson(
1210f12894f8SJason M. Bills         res.jsonValue,
1211f12894f8SJason M. Bills         nlohmann::json{
1212f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1213cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.InvalidIndex"},
121455c7b7a2SEd Tanous             {"Message", "The index " + std::to_string(arg1) +
1215f4c4dcf4SKowalski, Kamil                             " is not a valid offset into the array."},
1216f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
1217f12894f8SJason M. Bills             {"Resolution", "Verify the index value provided is within the "
1218f12894f8SJason M. Bills                            "bounds of the array."}});
1219f4c4dcf4SKowalski, Kamil }
1220f4c4dcf4SKowalski, Kamil 
1221f4c4dcf4SKowalski, Kamil /**
1222f4c4dcf4SKowalski, Kamil  * @internal
1223f4c4dcf4SKowalski, Kamil  * @brief Formats EmptyJSON message into JSON
1224f4c4dcf4SKowalski, Kamil  *
1225f4c4dcf4SKowalski, Kamil  * See header file for more information
1226f4c4dcf4SKowalski, Kamil  * @endinternal
1227f4c4dcf4SKowalski, Kamil  */
1228f12894f8SJason M. Bills void emptyJSON(crow::Response& res)
12291abe55efSEd Tanous {
1230f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1231f12894f8SJason M. Bills     addMessageToErrorJson(
1232f12894f8SJason M. Bills         res.jsonValue,
1233f12894f8SJason M. Bills         nlohmann::json{
1234f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1235cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.EmptyJSON"},
1236f12894f8SJason M. Bills             {"Message", "The request body submitted contained an empty JSON "
123766ac2b8cSJason M. Bills                         "object and the service is unable to process it."},
1238f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
1239f4c4dcf4SKowalski, Kamil             {"Resolution",
1240f12894f8SJason M. Bills              "Add properties in the JSON object and resubmit the request."}});
1241f4c4dcf4SKowalski, Kamil }
1242f4c4dcf4SKowalski, Kamil 
1243f4c4dcf4SKowalski, Kamil /**
1244f4c4dcf4SKowalski, Kamil  * @internal
1245f4c4dcf4SKowalski, Kamil  * @brief Formats QueryNotSupportedOnResource message into JSON
1246f4c4dcf4SKowalski, Kamil  *
1247f4c4dcf4SKowalski, Kamil  * See header file for more information
1248f4c4dcf4SKowalski, Kamil  * @endinternal
1249f4c4dcf4SKowalski, Kamil  */
1250f12894f8SJason M. Bills void queryNotSupportedOnResource(crow::Response& res)
12511abe55efSEd Tanous {
1252f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
1253f12894f8SJason M. Bills     addMessageToErrorJson(
1254f12894f8SJason M. Bills         res.jsonValue,
1255f12894f8SJason M. Bills         nlohmann::json{
1256f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1257cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.QueryNotSupportedOnResource"},
1258f4c4dcf4SKowalski, Kamil             {"Message", "Querying is not supported on the requested resource."},
1259f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
126066ac2b8cSJason M. Bills             {"Resolution", "Remove the query parameters and resubmit the "
126166ac2b8cSJason M. Bills                            "request if the operation failed."}});
1262f4c4dcf4SKowalski, Kamil }
1263f4c4dcf4SKowalski, Kamil 
1264f4c4dcf4SKowalski, Kamil /**
1265f4c4dcf4SKowalski, Kamil  * @internal
1266f4c4dcf4SKowalski, Kamil  * @brief Formats InsufficientPrivilege message into JSON
1267f4c4dcf4SKowalski, Kamil  *
1268f4c4dcf4SKowalski, Kamil  * See header file for more information
1269f4c4dcf4SKowalski, Kamil  * @endinternal
1270f4c4dcf4SKowalski, Kamil  */
1271f12894f8SJason M. Bills void insufficientPrivilege(crow::Response& res)
12721abe55efSEd Tanous {
1273f12894f8SJason M. Bills     res.result(boost::beast::http::status::forbidden);
1274f12894f8SJason M. Bills     addMessageToErrorJson(
1275f12894f8SJason M. Bills         res.jsonValue,
1276f12894f8SJason M. Bills         nlohmann::json{
1277f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1278cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.InsufficientPrivilege"},
127966ac2b8cSJason M. Bills             {"Message", "There are insufficient privileges for the account or "
128066ac2b8cSJason M. Bills                         "credentials associated with the current session to "
128166ac2b8cSJason M. Bills                         "perform the requested operation."},
1282f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1283f4c4dcf4SKowalski, Kamil             {"Resolution",
1284f12894f8SJason M. Bills              "Either abandon the operation or change the associated access "
128566ac2b8cSJason M. Bills              "rights and resubmit the request if the operation failed."}});
1286f4c4dcf4SKowalski, Kamil }
1287f4c4dcf4SKowalski, Kamil 
1288f4c4dcf4SKowalski, Kamil /**
1289f4c4dcf4SKowalski, Kamil  * @internal
1290f4c4dcf4SKowalski, Kamil  * @brief Formats PropertyValueModified message into JSON
1291f4c4dcf4SKowalski, Kamil  *
1292f4c4dcf4SKowalski, Kamil  * See header file for more information
1293f4c4dcf4SKowalski, Kamil  * @endinternal
1294f4c4dcf4SKowalski, Kamil  */
1295f12894f8SJason M. Bills void propertyValueModified(crow::Response& res, const std::string& arg1,
1296*a08b46ccSJason M. Bills                            const std::string& arg2)
12971abe55efSEd Tanous {
1298f12894f8SJason M. Bills     res.result(boost::beast::http::status::ok);
1299f12894f8SJason M. Bills     addMessageToJson(
1300f12894f8SJason M. Bills         res.jsonValue,
1301f12894f8SJason M. Bills         nlohmann::json{
1302f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1303cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyValueModified"},
1304f12894f8SJason M. Bills             {"Message", "The property " + arg1 + " was assigned the value " +
1305f12894f8SJason M. Bills                             arg2 + " due to modification by the service."},
1306f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
1307f12894f8SJason M. Bills             {"Resolution", "No resolution is required."}},
1308*a08b46ccSJason M. Bills         arg1);
1309f4c4dcf4SKowalski, Kamil }
1310f4c4dcf4SKowalski, Kamil 
1311f4c4dcf4SKowalski, Kamil /**
1312f4c4dcf4SKowalski, Kamil  * @internal
1313f4c4dcf4SKowalski, Kamil  * @brief Formats AccountNotModified message into JSON
1314f4c4dcf4SKowalski, Kamil  *
1315f4c4dcf4SKowalski, Kamil  * See header file for more information
1316f4c4dcf4SKowalski, Kamil  * @endinternal
1317f4c4dcf4SKowalski, Kamil  */
1318f12894f8SJason M. Bills void accountNotModified(crow::Response& res)
13191abe55efSEd Tanous {
1320f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1321f12894f8SJason M. Bills     addMessageToErrorJson(
1322f12894f8SJason M. Bills         res.jsonValue,
1323f12894f8SJason M. Bills         nlohmann::json{
1324f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1325cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.AccountNotModified"},
1326f4c4dcf4SKowalski, Kamil             {"Message", "The account modification request failed."},
1327f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
1328f12894f8SJason M. Bills             {"Resolution", "The modification may have failed due to permission "
132966ac2b8cSJason M. Bills                            "issues or issues with the request body."}});
1330f4c4dcf4SKowalski, Kamil }
1331f4c4dcf4SKowalski, Kamil 
1332f4c4dcf4SKowalski, Kamil /**
1333f4c4dcf4SKowalski, Kamil  * @internal
1334f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterValueFormatError message into JSON
1335f4c4dcf4SKowalski, Kamil  *
1336f4c4dcf4SKowalski, Kamil  * See header file for more information
1337f4c4dcf4SKowalski, Kamil  * @endinternal
1338f4c4dcf4SKowalski, Kamil  */
1339f12894f8SJason M. Bills void queryParameterValueFormatError(crow::Response& res,
1340f12894f8SJason M. Bills                                     const std::string& arg1,
13411abe55efSEd Tanous                                     const std::string& arg2)
13421abe55efSEd Tanous {
1343f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1344f12894f8SJason M. Bills     addMessageToErrorJson(
1345f12894f8SJason M. Bills         res.jsonValue,
1346f12894f8SJason M. Bills         nlohmann::json{
1347f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1348cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.QueryParameterValueFormatError"},
1349f4c4dcf4SKowalski, Kamil             {"Message",
1350f4c4dcf4SKowalski, Kamil              "The value " + arg1 + " for the parameter " + arg2 +
1351f4c4dcf4SKowalski, Kamil                  " is of a different format than the parameter can accept."},
1352f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
135366ac2b8cSJason M. Bills             {"Resolution",
135466ac2b8cSJason M. Bills              "Correct the value for the query parameter in the request and "
135566ac2b8cSJason M. Bills              "resubmit the request if the operation failed."}});
1356f4c4dcf4SKowalski, Kamil }
1357f4c4dcf4SKowalski, Kamil 
1358f4c4dcf4SKowalski, Kamil /**
1359f4c4dcf4SKowalski, Kamil  * @internal
1360f12894f8SJason M. Bills  * @brief Formats PropertyMissing message into JSON for the specified property
1361f12894f8SJason M. Bills  *
1362f12894f8SJason M. Bills  * See header file for more information
1363f12894f8SJason M. Bills  * @endinternal
1364f12894f8SJason M. Bills  */
1365*a08b46ccSJason M. Bills void propertyMissing(crow::Response& res, const std::string& arg1)
1366f12894f8SJason M. Bills {
1367f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1368f12894f8SJason M. Bills     addMessageToJson(
1369f12894f8SJason M. Bills         res.jsonValue,
1370f12894f8SJason M. Bills         nlohmann::json{
1371f12894f8SJason M. Bills             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1372cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.PropertyMissing"},
1373f12894f8SJason M. Bills             {"Message", "The property " + arg1 +
1374f12894f8SJason M. Bills                             " is a required property and must be included in "
1375f12894f8SJason M. Bills                             "the request."},
1376f12894f8SJason M. Bills             {"Severity", "Warning"},
1377f12894f8SJason M. Bills             {"Resolution",
137866ac2b8cSJason M. Bills              "Ensure that the property is in the request body and has a valid "
137966ac2b8cSJason M. Bills              "value and resubmit the request if the operation failed."}},
1380*a08b46ccSJason M. Bills         arg1);
1381f4c4dcf4SKowalski, Kamil }
1382f4c4dcf4SKowalski, Kamil 
1383f4c4dcf4SKowalski, Kamil /**
1384f4c4dcf4SKowalski, Kamil  * @internal
1385f4c4dcf4SKowalski, Kamil  * @brief Formats ResourceExhaustion message into JSON
1386f4c4dcf4SKowalski, Kamil  *
1387f4c4dcf4SKowalski, Kamil  * See header file for more information
1388f4c4dcf4SKowalski, Kamil  * @endinternal
1389f4c4dcf4SKowalski, Kamil  */
1390f12894f8SJason M. Bills void resourceExhaustion(crow::Response& res, const std::string& arg1)
13911abe55efSEd Tanous {
1392f12894f8SJason M. Bills     res.result(boost::beast::http::status::service_unavailable);
1393f12894f8SJason M. Bills     addMessageToErrorJson(
1394f12894f8SJason M. Bills         res.jsonValue,
1395f12894f8SJason M. Bills         nlohmann::json{
1396f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1397cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.ResourceExhaustion"},
1398d425c6f6SEd Tanous             {"Message", "The resource " + arg1 +
139966ac2b8cSJason M. Bills                             " was unable to satisfy the request due to "
140066ac2b8cSJason M. Bills                             "unavailability of resources."},
1401f4c4dcf4SKowalski, Kamil             {"Severity", "Critical"},
1402f12894f8SJason M. Bills             {"Resolution", "Ensure that the resources are available and "
1403f12894f8SJason M. Bills                            "resubmit the request."}});
1404f4c4dcf4SKowalski, Kamil }
1405f4c4dcf4SKowalski, Kamil 
1406f4c4dcf4SKowalski, Kamil /**
1407f4c4dcf4SKowalski, Kamil  * @internal
1408f4c4dcf4SKowalski, Kamil  * @brief Formats AccountModified message into JSON
1409f4c4dcf4SKowalski, Kamil  *
1410f4c4dcf4SKowalski, Kamil  * See header file for more information
1411f4c4dcf4SKowalski, Kamil  * @endinternal
1412f4c4dcf4SKowalski, Kamil  */
1413*a08b46ccSJason M. Bills void accountModified(crow::Response& res)
14141abe55efSEd Tanous {
1415f12894f8SJason M. Bills     res.result(boost::beast::http::status::ok);
1416*a08b46ccSJason M. Bills     addMessageToErrorJson(
1417f12894f8SJason M. Bills         res.jsonValue,
1418f12894f8SJason M. Bills         nlohmann::json{
1419f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1420cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.AccountModified"},
1421f4c4dcf4SKowalski, Kamil             {"Message", "The account was successfully modified."},
1422f4c4dcf4SKowalski, Kamil             {"Severity", "OK"},
1423*a08b46ccSJason M. Bills             {"Resolution", "No resolution is required."}});
1424f4c4dcf4SKowalski, Kamil }
1425f4c4dcf4SKowalski, Kamil 
1426f4c4dcf4SKowalski, Kamil /**
1427f4c4dcf4SKowalski, Kamil  * @internal
1428f4c4dcf4SKowalski, Kamil  * @brief Formats QueryParameterOutOfRange message into JSON
1429f4c4dcf4SKowalski, Kamil  *
1430f4c4dcf4SKowalski, Kamil  * See header file for more information
1431f4c4dcf4SKowalski, Kamil  * @endinternal
1432f4c4dcf4SKowalski, Kamil  */
1433f12894f8SJason M. Bills void queryParameterOutOfRange(crow::Response& res, const std::string& arg1,
1434f12894f8SJason M. Bills                               const std::string& arg2, const std::string& arg3)
14351abe55efSEd Tanous {
1436f12894f8SJason M. Bills     res.result(boost::beast::http::status::bad_request);
1437f12894f8SJason M. Bills     addMessageToErrorJson(
1438f12894f8SJason M. Bills         res.jsonValue,
1439f12894f8SJason M. Bills         nlohmann::json{
1440f4c4dcf4SKowalski, Kamil             {"@odata.type", "/redfish/v1/$metadata#Message.v1_0_0.Message"},
1441cc9139ecSJason M. Bills             {"MessageId", "Base.1.4.0.QueryParameterOutOfRange"},
1442f12894f8SJason M. Bills             {"Message", "The value " + arg1 + " for the query parameter " +
1443f12894f8SJason M. Bills                             arg2 + " is out of range " + arg3 + "."},
1444f4c4dcf4SKowalski, Kamil             {"Severity", "Warning"},
1445f4c4dcf4SKowalski, Kamil             {"Resolution",
1446f12894f8SJason M. Bills              "Reduce the value for the query parameter to a value that is "
144766ac2b8cSJason M. Bills              "within range, such as a start or count value that is within "
144866ac2b8cSJason M. Bills              "bounds of the number of resources in a collection or a page that "
144966ac2b8cSJason M. Bills              "is within the range of valid pages."}});
1450f4c4dcf4SKowalski, Kamil }
1451f4c4dcf4SKowalski, Kamil 
1452f4c4dcf4SKowalski, Kamil } // namespace messages
1453f4c4dcf4SKowalski, Kamil 
1454d425c6f6SEd Tanous } // namespace redfish
1455