1 /* 2 Copyright (c) 2018 Intel Corporation 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 #pragma once 17 18 #include "http_response.hpp" 19 20 #include <boost/url/url_view_base.hpp> 21 #include <nlohmann/json.hpp> 22 23 #include <cstdint> 24 #include <source_location> 25 #include <string> 26 #include <string_view> 27 28 // IWYU pragma: no_forward_declare crow::Response 29 30 namespace redfish 31 { 32 33 namespace messages 34 { 35 36 constexpr const char* messageVersionPrefix = "Base.1.11.0."; 37 constexpr const char* messageAnnotation = "@Message.ExtendedInfo"; 38 39 /** 40 * @brief Moves all error messages from the |source| JSON to |target| 41 */ 42 void moveErrorsToErrorJson(nlohmann::json& target, nlohmann::json& source); 43 44 /** 45 * @brief Formats ResourceInUse message into JSON 46 * Message body: "The change to the requested resource failed because the 47 * resource is in use or in transition." 48 * 49 * 50 * @returns Message ResourceInUse formatted to JSON */ 51 nlohmann::json resourceInUse(); 52 53 void resourceInUse(crow::Response& res); 54 55 /** 56 * @brief Formats MalformedJSON message into JSON 57 * Message body: "The request body submitted was malformed JSON and could not be 58 * parsed by the receiving service." 59 * 60 * 61 * @returns Message MalformedJSON formatted to JSON */ 62 nlohmann::json malformedJSON(); 63 64 void malformedJSON(crow::Response& res); 65 66 /** 67 * @brief Formats ResourceMissingAtURI message into JSON 68 * Message body: "The resource at the URI <arg1> was not found." 69 * 70 * @param[in] arg1 Parameter of message that will replace %1 in its body. 71 * 72 * @returns Message ResourceMissingAtURI formatted to JSON */ 73 nlohmann::json resourceMissingAtURI(const boost::urls::url_view_base& arg1); 74 75 void resourceMissingAtURI(crow::Response& res, 76 const boost::urls::url_view_base& arg1); 77 78 /** 79 * @brief Formats ActionParameterValueFormatError message into JSON 80 * Message body: "The value <arg1> for the parameter <arg2> in the action <arg3> 81 * is of a different format than the parameter can accept." 82 * 83 * @param[in] arg1 Parameter of message that will replace %1 in its body. 84 * @param[in] arg2 Parameter of message that will replace %2 in its body. 85 * @param[in] arg3 Parameter of message that will replace %3 in its body. 86 * 87 * @returns Message ActionParameterValueFormatError formatted to JSON */ 88 nlohmann::json actionParameterValueFormatError( 89 const nlohmann::json& arg1, std::string_view arg2, std::string_view arg3); 90 91 void actionParameterValueFormatError( 92 crow::Response& res, const nlohmann::json& arg1, std::string_view arg2, 93 std::string_view arg3); 94 95 /** 96 * @brief Formats ActionParameterValueNotInList message into JSON 97 * Message body: "The value <arg1> for the parameter <arg2> in the action <arg3> 98 * is not in the list of acceptable values." 99 * 100 * @param[in] arg1 Parameter of message that will replace %1 in its body. 101 * @param[in] arg2 Parameter of message that will replace %2 in its body. 102 * @param[in] arg3 Parameter of message that will replace %3 in its body. 103 * 104 * @returns Message ActionParameterValueFormatError formatted to JSON */ 105 nlohmann::json actionParameterValueNotInList( 106 std::string_view arg1, std::string_view arg2, std::string_view arg3); 107 108 void actionParameterValueNotInList(crow::Response& res, std::string_view arg1, 109 std::string_view arg2, 110 std::string_view arg3); 111 112 /** 113 * @brief Formats InternalError message into JSON 114 * Message body: "The request failed due to an internal service error. The 115 * service is still operational." 116 * 117 * 118 * @returns Message InternalError formatted to JSON */ 119 nlohmann::json internalError(); 120 121 void internalError(crow::Response& res, std::source_location location = 122 std::source_location::current()); 123 124 /** 125 * @brief Formats UnrecognizedRequestBody message into JSON 126 * Message body: "The service detected a malformed request body that it was 127 * unable to interpret." 128 * 129 * 130 * @returns Message UnrecognizedRequestBody formatted to JSON */ 131 nlohmann::json unrecognizedRequestBody(); 132 133 void unrecognizedRequestBody(crow::Response& res); 134 135 /** 136 * @brief Formats ResourceAtUriUnauthorized message into JSON 137 * Message body: "While accessing the resource at <arg1>, the service received 138 * an authorization error <arg2>." 139 * 140 * @param[in] arg1 Parameter of message that will replace %1 in its body. 141 * @param[in] arg2 Parameter of message that will replace %2 in its body. 142 * 143 * @returns Message ResourceAtUriUnauthorized formatted to JSON */ 144 nlohmann::json resourceAtUriUnauthorized(const boost::urls::url_view_base& arg1, 145 std::string_view arg2); 146 147 void resourceAtUriUnauthorized(crow::Response& res, 148 const boost::urls::url_view_base& arg1, 149 std::string_view arg2); 150 151 /** 152 * @brief Formats ActionParameterUnknown message into JSON 153 * Message body: "The action <arg1> was submitted with the invalid parameter 154 * <arg2>." 155 * 156 * @param[in] arg1 Parameter of message that will replace %1 in its body. 157 * @param[in] arg2 Parameter of message that will replace %2 in its body. 158 * 159 * @returns Message ActionParameterUnknown formatted to JSON */ 160 nlohmann::json actionParameterUnknown(std::string_view arg1, 161 std::string_view arg2); 162 163 void actionParameterUnknown(crow::Response& res, std::string_view arg1, 164 std::string_view arg2); 165 166 /** 167 * @brief Formats ResourceCannotBeDeleted message into JSON 168 * Message body: "The delete request failed because the resource requested 169 * cannot be deleted." 170 * 171 * 172 * @returns Message ResourceCannotBeDeleted formatted to JSON */ 173 nlohmann::json resourceCannotBeDeleted(); 174 175 void resourceCannotBeDeleted(crow::Response& res); 176 177 /** 178 * @brief Formats PropertyDuplicate message into JSON 179 * Message body: "The property <arg1> was duplicated in the request." 180 * 181 * @param[in] arg1 Parameter of message that will replace %1 in its body. 182 * 183 * @returns Message PropertyDuplicate formatted to JSON */ 184 nlohmann::json propertyDuplicate(std::string_view arg1); 185 186 void propertyDuplicate(crow::Response& res, std::string_view arg1); 187 188 /** 189 * @brief Formats ServiceTemporarilyUnavailable message into JSON 190 * Message body: "The service is temporarily unavailable. Retry in <arg1> 191 * seconds." 192 * 193 * @param[in] arg1 Parameter of message that will replace %1 in its body. 194 * 195 * @returns Message ServiceTemporarilyUnavailable formatted to JSON */ 196 nlohmann::json serviceTemporarilyUnavailable(std::string_view arg1); 197 198 void serviceTemporarilyUnavailable(crow::Response& res, std::string_view arg1); 199 200 /** 201 * @brief Formats ResourceAlreadyExists message into JSON 202 * Message body: "The requested resource of type <arg1> with the property <arg2> 203 * with the value <arg3> already exists." 204 * 205 * @param[in] arg1 Parameter of message that will replace %1 in its body. 206 * @param[in] arg2 Parameter of message that will replace %2 in its body. 207 * @param[in] arg3 Parameter of message that will replace %3 in its body. 208 * 209 * @returns Message ResourceAlreadyExists formatted to JSON */ 210 nlohmann::json resourceAlreadyExists( 211 std::string_view arg1, std::string_view arg2, std::string_view arg3); 212 213 void resourceAlreadyExists(crow::Response& res, std::string_view arg1, 214 std::string_view arg2, std::string_view arg3); 215 216 /** 217 * @brief Formats AccountForSessionNoLongerExists message into JSON 218 * Message body: "The account for the current session has been removed, thus the 219 * current session has been removed as well." 220 * 221 * 222 * @returns Message AccountForSessionNoLongerExists formatted to JSON */ 223 nlohmann::json accountForSessionNoLongerExists(); 224 225 void accountForSessionNoLongerExists(crow::Response& res); 226 227 /** 228 * @brief Formats CreateFailedMissingReqProperties message into JSON 229 * Message body: "The create operation failed because the required property 230 * <arg1> was missing from the request." 231 * 232 * @param[in] arg1 Parameter of message that will replace %1 in its body. 233 * 234 * @returns Message CreateFailedMissingReqProperties formatted to JSON */ 235 nlohmann::json createFailedMissingReqProperties(std::string_view arg1); 236 237 void createFailedMissingReqProperties(crow::Response& res, 238 std::string_view arg1); 239 240 /** 241 * @brief Formats PropertyValueFormatError message into JSON 242 * Message body: "The value <arg1> for the property <arg2> is of a different 243 * format than the property can accept." 244 * 245 * @param[in] arg1 Parameter of message that will replace %1 in its body. 246 * @param[in] arg2 Parameter of message that will replace %2 in its body. 247 * 248 * @returns Message PropertyValueFormatError formatted to JSON */ 249 nlohmann::json propertyValueFormatError(const nlohmann::json& arg1, 250 std::string_view arg2); 251 252 void propertyValueFormatError(crow::Response& res, const nlohmann::json& arg1, 253 std::string_view arg2); 254 255 /** 256 * @brief Formats PropertyValueNotInList message into JSON 257 * Message body: "The value <arg1> for the property <arg2> is not in the list of 258 * acceptable values." 259 * 260 * @param[in] arg1 Parameter of message that will replace %1 in its body. 261 * @param[in] arg2 Parameter of message that will replace %2 in its body. 262 * 263 * @returns Message PropertyValueNotInList formatted to JSON */ 264 nlohmann::json propertyValueNotInList(const nlohmann::json& arg1, 265 std::string_view arg2); 266 267 void propertyValueNotInList(crow::Response& res, const nlohmann::json& arg1, 268 std::string_view arg2); 269 /** 270 * @brief Formats PropertyValueOutOfRange message into JSON 271 * Message body: "The value '%1' for the property %2 is not in the supported 272 * range of acceptable values." 273 * 274 * @param[in] arg1 Parameter of message that will replace %1 in its body. 275 * @param[in] arg2 Parameter of message that will replace %2 in its body. 276 * 277 * @returns Message PropertyValueExternalConflict formatted to JSON */ 278 nlohmann::json propertyValueOutOfRange(const nlohmann::json& arg1, 279 std::string_view arg2); 280 281 void propertyValueOutOfRange(crow::Response& res, const nlohmann::json& arg1, 282 std::string_view arg2); 283 284 /** 285 * @brief Formats ResourceAtUriInUnknownFormat message into JSON 286 * Message body: "The resource at <arg1> is in a format not recognized by the 287 * service." 288 * 289 * @param[in] arg1 Parameter of message that will replace %1 in its body. 290 * 291 * @returns Message ResourceAtUriInUnknownFormat formatted to JSON */ 292 nlohmann::json 293 resourceAtUriInUnknownFormat(const boost::urls::url_view_base& arg1); 294 295 void resourceAtUriInUnknownFormat(crow::Response& res, 296 const boost::urls::url_view_base& arg1); 297 298 /** 299 * @brief Formats ServiceDisabled message into JSON 300 * Message body: "The operation failed because the service at <arg1> is disabled 301 * and " cannot accept requests." 302 * 303 * @param[in] arg1 Parameter of message that will replace %1 in its body. 304 * 305 * @returns Message ServiceDisabled formatted to JSON */ 306 nlohmann::json serviceDisabled(std::string_view arg1); 307 308 void serviceDisabled(crow::Response& res, std::string_view arg1); 309 310 /** 311 * @brief Formats ServiceInUnknownState message into JSON 312 * Message body: "The operation failed because the service is in an unknown 313 * state and can no longer take incoming requests." 314 * 315 * 316 * @returns Message ServiceInUnknownState formatted to JSON */ 317 nlohmann::json serviceInUnknownState(); 318 319 void serviceInUnknownState(crow::Response& res); 320 321 /** 322 * @brief Formats EventSubscriptionLimitExceeded message into JSON 323 * Message body: "The event subscription failed due to the number of 324 * simultaneous subscriptions exceeding the limit of the implementation." 325 * 326 * 327 * @returns Message EventSubscriptionLimitExceeded formatted to JSON */ 328 nlohmann::json eventSubscriptionLimitExceeded(); 329 330 void eventSubscriptionLimitExceeded(crow::Response& res); 331 332 /** 333 * @brief Formats ActionParameterMissing message into JSON 334 * Message body: "The action <arg1> requires the parameter <arg2> to be present 335 * in the request body." 336 * 337 * @param[in] arg1 Parameter of message that will replace %1 in its body. 338 * @param[in] arg2 Parameter of message that will replace %2 in its body. 339 * 340 * @returns Message ActionParameterMissing formatted to JSON */ 341 nlohmann::json actionParameterMissing(std::string_view arg1, 342 std::string_view arg2); 343 344 void actionParameterMissing(crow::Response& res, std::string_view arg1, 345 std::string_view arg2); 346 347 /** 348 * @brief Formats StringValueTooLong message into JSON 349 * Message body: "The string <arg1> exceeds the length limit <arg2>." 350 * 351 * @param[in] arg1 Parameter of message that will replace %1 in its body. 352 * @param[in] arg2 Parameter of message that will replace %2 in its body. 353 * 354 * @returns Message StringValueTooLong formatted to JSON */ 355 nlohmann::json stringValueTooLong(std::string_view arg1, int arg2); 356 357 void stringValueTooLong(crow::Response& res, std::string_view arg1, int arg2); 358 359 /** 360 * @brief Formats SessionTerminated message into JSON 361 * Message body: "The session was successfully terminated." 362 * 363 * 364 * @returns Message SessionTerminated formatted to JSON */ 365 nlohmann::json sessionTerminated(); 366 367 void sessionTerminated(crow::Response& res); 368 369 /** 370 * @brief Formats SubscriptionTerminated message into JSON 371 * Message body: "The event subscription has been terminated." 372 * 373 * 374 * @returns Message SubscriptionTerminated formatted to JSON */ 375 nlohmann::json subscriptionTerminated(); 376 377 void subscriptionTerminated(crow::Response& res); 378 379 /** 380 * @brief Formats ResourceTypeIncompatible message into JSON 381 * Message body: "The @odata.type of the request body <arg1> is incompatible 382 * with the @odata.type of the resource which is <arg2>." 383 * 384 * @param[in] arg1 Parameter of message that will replace %1 in its body. 385 * @param[in] arg2 Parameter of message that will replace %2 in its body. 386 * 387 * @returns Message ResourceTypeIncompatible formatted to JSON */ 388 nlohmann::json resourceTypeIncompatible(std::string_view arg1, 389 std::string_view arg2); 390 391 void resourceTypeIncompatible(crow::Response& res, std::string_view arg1, 392 std::string_view arg2); 393 394 /** 395 * @brief Formats ResetRequired message into JSON 396 * Message body: "In order to complete the operation, a component reset is 397 * required with the Reset action URI '<arg1>' and ResetType '<arg2>'." 398 * 399 * @param[in] arg1 Parameter of message that will replace %1 in its body. 400 * @param[in] arg2 Parameter of message that will replace %2 in its body. 401 * 402 * @returns Message ResetRequired formatted to JSON */ 403 nlohmann::json resetRequired(const boost::urls::url_view_base& arg1, 404 std::string_view arg2); 405 406 void resetRequired(crow::Response& res, const boost::urls::url_view_base& arg1, 407 std::string_view arg2); 408 409 /** 410 * @brief Formats ChassisPowerStateOnRequired message into JSON 411 * Message body: "The Chassis with Id '<arg1>' requires to be powered on to 412 * perform this request." 413 * 414 * @param[in] arg1 Parameter of message that will replace %1 in its body. 415 * 416 * @returns Message ChassisPowerStateOnRequired formatted to JSON */ 417 nlohmann::json chassisPowerStateOnRequired(std::string_view arg1); 418 419 void chassisPowerStateOnRequired(crow::Response& res, std::string_view arg1); 420 421 /** 422 * @brief Formats ChassisPowerStateOffRequired message into JSON 423 * Message body: "The Chassis with Id '<arg1>' requires to be powered off to 424 * perform this request." 425 * 426 * @param[in] arg1 Parameter of message that will replace %1 in its body. 427 * 428 * @returns Message ChassisPowerStateOffRequired formatted to JSON */ 429 nlohmann::json chassisPowerStateOffRequired(std::string_view arg1); 430 431 void chassisPowerStateOffRequired(crow::Response& res, std::string_view arg1); 432 433 /** 434 * @brief Formats PropertyValueConflict message into JSON 435 * Message body: "The property '<arg1>' could not be written because its value 436 * would conflict with the value of the '<arg2>' property." 437 * 438 * @param[in] arg1 Parameter of message that will replace %1 in its body. 439 * @param[in] arg2 Parameter of message that will replace %2 in its body. 440 * 441 * @returns Message PropertyValueConflict formatted to JSON */ 442 nlohmann::json propertyValueConflict(std::string_view arg1, 443 std::string_view arg2); 444 445 void propertyValueConflict(crow::Response& res, std::string_view arg1, 446 std::string_view arg2); 447 448 /** 449 * @brief Formats PropertyValueResourceConflict message into JSON 450 * Message body: "The property '%1' with the requested value of '%2' could 451 * not be written because the value conflicts with the state or configuration 452 * of the resource at '%3'." 453 * 454 * @param[in] arg1 Parameter of message that will replace %1 in its body. 455 * @param[in] arg2 Parameter of message that will replace %2 in its body. 456 * @param[in] arg3 Parameter of message that will replace %3 in its body. 457 * 458 * @returns Message PropertyValueResourceConflict to JSON */ 459 nlohmann::json propertyValueResourceConflict( 460 std::string_view arg1, const nlohmann::json& arg2, 461 const boost::urls::url_view_base& arg3); 462 463 void propertyValueResourceConflict(crow::Response& res, std::string_view arg1, 464 const nlohmann::json& arg2, 465 const boost::urls::url_view_base& arg3); 466 467 /** 468 * @brief Formats PropertyValueExternalConflict message into JSON 469 * Message body: "The property '%1' with the requested value of '%2' could not 470 * be written because the value is not available due to a configuration 471 * conflict." 472 * 473 * @param[in] arg1 Parameter of message that will replace %1 in its body. 474 * @param[in] arg2 Parameter of message that will replace %2 in its body. 475 * 476 * @returns Message PropertyValueExternalConflict formatted to JSON */ 477 nlohmann::json propertyValueExternalConflict(std::string_view arg1, 478 const nlohmann::json& arg2); 479 480 void propertyValueExternalConflict(crow::Response& res, std::string_view arg1, 481 const nlohmann::json& arg2); 482 483 /** 484 * @brief Formats PropertyValueIncorrect message into JSON 485 * Message body: "The property '<arg1>' with the requested value of '<arg2>' 486 * could not be written because the value does not meet the constraints of the 487 * implementation." 488 * 489 * @param[in] arg1 Parameter of message that will replace %1 in its body. 490 * @param[in] arg2 Parameter of message that will replace %2 in its body. 491 * 492 * @returns Message PropertyValueIncorrect formatted to JSON */ 493 nlohmann::json propertyValueIncorrect(std::string_view arg1, 494 const nlohmann::json& arg2); 495 496 void propertyValueIncorrect(crow::Response& res, std::string_view arg1, 497 const nlohmann::json& arg2); 498 499 /** 500 * @brief Formats ResourceCreationConflict message into JSON 501 * Message body: "The resource could not be created. The service has a resource 502 * at URI '<arg1>' that conflicts with the creation request." 503 * 504 * @param[in] arg1 Parameter of message that will replace %1 in its body. 505 * 506 * @returns Message ResourceCreationConflict formatted to JSON */ 507 nlohmann::json resourceCreationConflict(const boost::urls::url_view_base& arg1); 508 509 void resourceCreationConflict(crow::Response& res, 510 const boost::urls::url_view_base& arg1); 511 512 /** 513 * @brief Formats MaximumErrorsExceeded message into JSON 514 * Message body: "Too many errors have occurred to report them all." 515 * 516 * 517 * @returns Message MaximumErrorsExceeded formatted to JSON */ 518 nlohmann::json maximumErrorsExceeded(); 519 520 void maximumErrorsExceeded(crow::Response& res); 521 522 /** 523 * @brief Formats PreconditionFailed message into JSON 524 * Message body: "The ETag supplied did not match the ETag required to change 525 * this resource." 526 * 527 * 528 * @returns Message PreconditionFailed formatted to JSON */ 529 nlohmann::json preconditionFailed(); 530 531 void preconditionFailed(crow::Response& res); 532 533 /** 534 * @brief Formats PreconditionRequired message into JSON 535 * Message body: "A precondition header or annotation is required to change this 536 * resource." 537 * 538 * 539 * @returns Message PreconditionRequired formatted to JSON */ 540 nlohmann::json preconditionRequired(); 541 542 void preconditionRequired(crow::Response& res); 543 544 /** 545 * @brief Formats OperationFailed message into JSON 546 * Message body: "An error occurred internal to the service as part of the 547 * overall request. Partial results may have been returned." 548 * 549 * 550 * @returns Message OperationFailed formatted to JSON */ 551 nlohmann::json operationFailed(); 552 553 void operationFailed(crow::Response& res); 554 555 /** 556 * @brief Formats OperationTimeout message into JSON 557 * Message body: "A timeout internal to the service occurred as part of the 558 * request. Partial results may have been returned." 559 * 560 * 561 * @returns Message OperationTimeout formatted to JSON */ 562 nlohmann::json operationTimeout(); 563 564 void operationTimeout(crow::Response& res); 565 566 /** 567 * @brief Formats PropertyValueTypeError message into JSON 568 * Message body: "The value <arg1> for the property <arg2> is of a different 569 * type than the property can accept." 570 * 571 * @param[in] arg1 Parameter of message that will replace %1 in its body. 572 * @param[in] arg2 Parameter of message that will replace %2 in its body. 573 * 574 * @returns Message PropertyValueTypeError formatted to JSON */ 575 nlohmann::json propertyValueTypeError(const nlohmann::json& arg1, 576 std::string_view arg2); 577 578 void propertyValueTypeError(crow::Response& res, const nlohmann::json& arg1, 579 std::string_view arg2); 580 581 /** 582 * @brief Formats PropertyValueError message into JSON 583 * Message body: "The value provided for the property <arg1> is not valid." 584 * 585 * @param[in] arg1 Parameter of message that will replace %1 in its body. 586 * 587 * @returns Message PropertyValueTypeError formatted to JSON */ 588 nlohmann::json propertyValueError(std::string_view arg1); 589 590 void propertyValueError(crow::Response& res, std::string_view arg1); 591 592 /** 593 * @brief Formats ResourceNotFound message into JSON 594 * Message body: "The requested resource of type <arg1> named <arg2> was not 595 * found." 596 * 597 * @param[in] arg1 Parameter of message that will replace %1 in its body. 598 * @param[in] arg2 Parameter of message that will replace %2 in its body. 599 * 600 * @returns Message ResourceNotFound formatted to JSON */ 601 nlohmann::json resourceNotFound(std::string_view arg1, std::string_view arg2); 602 603 void resourceNotFound(crow::Response& res, std::string_view arg1, 604 std::string_view arg2); 605 606 /** 607 * @brief Formats CouldNotEstablishConnection message into JSON 608 * Message body: "The service failed to establish a Connection with the URI 609 * <arg1>." 610 * 611 * @param[in] arg1 Parameter of message that will replace %1 in its body. 612 * 613 * @returns Message CouldNotEstablishConnection formatted to JSON */ 614 nlohmann::json 615 couldNotEstablishConnection(const boost::urls::url_view_base& arg1); 616 617 void couldNotEstablishConnection(crow::Response& res, 618 const boost::urls::url_view_base& arg1); 619 620 /** 621 * @brief Formats PropertyNotWritable message into JSON 622 * Message body: "The property <arg1> is a read only property and cannot be 623 * assigned a value." 624 * 625 * @param[in] arg1 Parameter of message that will replace %1 in its body. 626 * 627 * @returns Message PropertyNotWritable formatted to JSON */ 628 nlohmann::json propertyNotWritable(std::string_view arg1); 629 630 void propertyNotWritable(crow::Response& res, std::string_view arg1); 631 632 /** 633 * @brief Formats QueryParameterValueTypeError message into JSON 634 * Message body: "The value <arg1> for the query parameter <arg2> is of a 635 * different type than the parameter can accept." 636 * 637 * @param[in] arg1 Parameter of message that will replace %1 in its body. 638 * @param[in] arg2 Parameter of message that will replace %2 in its body. 639 * 640 * @returns Message QueryParameterValueTypeError formatted to JSON */ 641 nlohmann::json queryParameterValueTypeError(const nlohmann::json& arg1, 642 std::string_view arg2); 643 644 void queryParameterValueTypeError( 645 crow::Response& res, const nlohmann::json& arg1, std::string_view arg2); 646 647 /** 648 * @brief Formats ServiceShuttingDown message into JSON 649 * Message body: "The operation failed because the service is shutting down and 650 * can no longer take incoming requests." 651 * 652 * 653 * @returns Message ServiceShuttingDown formatted to JSON */ 654 nlohmann::json serviceShuttingDown(); 655 656 void serviceShuttingDown(crow::Response& res); 657 658 /** 659 * @brief Formats ActionParameterDuplicate message into JSON 660 * Message body: "The action <arg1> was submitted with more than one value for 661 * the parameter <arg2>." 662 * 663 * @param[in] arg1 Parameter of message that will replace %1 in its body. 664 * @param[in] arg2 Parameter of message that will replace %2 in its body. 665 * 666 * @returns Message ActionParameterDuplicate formatted to JSON */ 667 nlohmann::json actionParameterDuplicate(std::string_view arg1, 668 std::string_view arg2); 669 670 void actionParameterDuplicate(crow::Response& res, std::string_view arg1, 671 std::string_view arg2); 672 673 /** 674 * @brief Formats ActionParameterNotSupported message into JSON 675 * Message body: "The parameter <arg1> for the action <arg2> is not supported on 676 * the target resource." 677 * 678 * @param[in] arg1 Parameter of message that will replace %1 in its body. 679 * @param[in] arg2 Parameter of message that will replace %2 in its body. 680 * 681 * @returns Message ActionParameterNotSupported formatted to JSON */ 682 nlohmann::json actionParameterNotSupported(std::string_view arg1, 683 std::string_view arg2); 684 685 void actionParameterNotSupported(crow::Response& res, std::string_view arg1, 686 std::string_view arg2); 687 688 /** 689 * @brief Formats SourceDoesNotSupportProtocol message into JSON 690 * Message body: "The other end of the Connection at <arg1> does not support the 691 * specified protocol <arg2>." 692 * 693 * @param[in] arg1 Parameter of message that will replace %1 in its body. 694 * @param[in] arg2 Parameter of message that will replace %2 in its body. 695 * 696 * @returns Message SourceDoesNotSupportProtocol formatted to JSON */ 697 nlohmann::json sourceDoesNotSupportProtocol( 698 const boost::urls::url_view_base& arg1, std::string_view arg2); 699 700 void sourceDoesNotSupportProtocol(crow::Response& res, 701 const boost::urls::url_view_base& arg1, 702 std::string_view arg2); 703 704 /** 705 * @brief Formats StrictAccountTypes message into JSON 706 * Message body: Indicates the request failed because a set of `AccountTypes` or 707 * `OEMAccountTypes` was not accepted while `StrictAccountTypes` is set to `true 708 * @param[in] arg1 Parameter of message that will replace %1 in its body. 709 * 710 * @returns Message StrictAccountTypes formatted to JSON */ 711 nlohmann::json strictAccountTypes(std::string_view arg1); 712 713 void strictAccountTypes(crow::Response& res, std::string_view arg1); 714 715 /** 716 * @brief Formats AccountRemoved message into JSON 717 * Message body: "The account was successfully removed." 718 * 719 * 720 * @returns Message AccountRemoved formatted to JSON */ 721 nlohmann::json accountRemoved(); 722 723 void accountRemoved(crow::Response& res); 724 725 /** 726 * @brief Formats AccessDenied message into JSON 727 * Message body: "While attempting to establish a Connection to <arg1>, the 728 * service denied access." 729 * 730 * @param[in] arg1 Parameter of message that will replace %1 in its body. 731 * 732 * @returns Message AccessDenied formatted to JSON */ 733 nlohmann::json accessDenied(const boost::urls::url_view_base& arg1); 734 735 void accessDenied(crow::Response& res, const boost::urls::url_view_base& arg1); 736 737 /** 738 * @brief Formats QueryNotSupported message into JSON 739 * Message body: "Querying is not supported by the implementation." 740 * 741 * 742 * @returns Message QueryNotSupported formatted to JSON */ 743 nlohmann::json queryNotSupported(); 744 745 void queryNotSupported(crow::Response& res); 746 747 /** 748 * @brief Formats CreateLimitReachedForResource message into JSON 749 * Message body: "The create operation failed because the resource has reached 750 * the limit of possible resources." 751 * 752 * 753 * @returns Message CreateLimitReachedForResource formatted to JSON */ 754 nlohmann::json createLimitReachedForResource(); 755 756 void createLimitReachedForResource(crow::Response& res); 757 758 /** 759 * @brief Formats GeneralError message into JSON 760 * Message body: "A general error has occurred. See ExtendedInfo for more 761 * information." 762 * 763 * 764 * @returns Message GeneralError formatted to JSON */ 765 nlohmann::json generalError(); 766 767 void generalError(crow::Response& res); 768 769 /** 770 * @brief Formats Success message into JSON 771 * Message body: "Successfully Completed Request" 772 * 773 * 774 * @returns Message Success formatted to JSON */ 775 nlohmann::json success(); 776 777 void success(crow::Response& res); 778 779 /** 780 * @brief Formats Created message into JSON 781 * Message body: "The resource has been created successfully" 782 * 783 * 784 * @returns Message Created formatted to JSON */ 785 nlohmann::json created(); 786 787 void created(crow::Response& res); 788 789 /** 790 * @brief Formats NoOperation message into JSON 791 * Message body: "The request body submitted contain no data to act upon and 792 * no changes to the resource took place." 793 * 794 * 795 * @returns Message NoOperation formatted to JSON */ 796 nlohmann::json noOperation(); 797 798 void noOperation(crow::Response& res); 799 800 /** 801 * @brief Formats PropertyUnknown message into JSON 802 * Message body: "The property <arg1> is not in the list of valid properties for 803 * the resource." 804 * 805 * @param[in] arg1 Parameter of message that will replace %1 in its body. 806 * 807 * @returns Message PropertyUnknown formatted to JSON */ 808 nlohmann::json propertyUnknown(std::string_view arg1); 809 810 void propertyUnknown(crow::Response& res, std::string_view arg1); 811 812 /** 813 * @brief Formats NoValidSession message into JSON 814 * Message body: "There is no valid session established with the 815 * implementation." 816 * 817 * 818 * @returns Message NoValidSession formatted to JSON */ 819 nlohmann::json noValidSession(); 820 821 void noValidSession(crow::Response& res); 822 823 /** 824 * @brief Formats InvalidObject message into JSON 825 * Message body: "The object at <arg1> is invalid." 826 * 827 * @param[in] arg1 Parameter of message that will replace %1 in its body. 828 * 829 * @returns Message InvalidObject formatted to JSON */ 830 nlohmann::json invalidObject(const boost::urls::url_view_base& arg1); 831 832 void invalidObject(crow::Response& res, const boost::urls::url_view_base& arg1); 833 834 /** 835 * @brief Formats ResourceInStandby message into JSON 836 * Message body: "The request could not be performed because the resource is in 837 * standby." 838 * 839 * 840 * @returns Message ResourceInStandby formatted to JSON */ 841 nlohmann::json resourceInStandby(); 842 843 void resourceInStandby(crow::Response& res); 844 845 /** 846 * @brief Formats ActionParameterValueTypeError message into JSON 847 * Message body: "The value <arg1> for the parameter <arg2> in the action <arg3> 848 * is of a different type than the parameter can accept." 849 * 850 * @param[in] arg1 Parameter of message that will replace %1 in its body. 851 * @param[in] arg2 Parameter of message that will replace %2 in its body. 852 * @param[in] arg3 Parameter of message that will replace %3 in its body. 853 * 854 * @returns Message ActionParameterValueTypeError formatted to JSON */ 855 nlohmann::json actionParameterValueTypeError( 856 const nlohmann::json& arg1, std::string_view arg2, std::string_view arg3); 857 858 void actionParameterValueTypeError( 859 crow::Response& res, const nlohmann::json& arg1, std::string_view arg2, 860 std::string_view arg3); 861 862 /** 863 * @brief Formats ActionParameterValueError message into JSON 864 * Message body: "Indicates that a parameter was given an invalid value." 865 * The value for the parameter %1 in the action %2 is invalid. 866 * 867 * @param[in] arg1 Parameter of message that will replace %1 in its body. 868 * @param[in] arg2 Parameter of message that will replace %2 in its body. 869 * 870 * @returns Message ActionParameterValueError formatted to JSON */ 871 nlohmann::json actionParameterValueError(const nlohmann::json& arg1, 872 std::string_view arg2); 873 874 void actionParameterValueError(crow::Response& res, const nlohmann::json& arg1, 875 std::string_view arg2); 876 877 /** 878 * @brief Formats SessionLimitExceeded message into JSON 879 * Message body: "The session establishment failed due to the number of 880 * simultaneous sessions exceeding the limit of the implementation." 881 * 882 * 883 * @returns Message SessionLimitExceeded formatted to JSON */ 884 nlohmann::json sessionLimitExceeded(); 885 886 void sessionLimitExceeded(crow::Response& res); 887 888 /** 889 * @brief Formats ActionNotSupported message into JSON 890 * Message body: "The action <arg1> is not supported by the resource." 891 * 892 * @param[in] arg1 Parameter of message that will replace %1 in its body. 893 * 894 * @returns Message ActionNotSupported formatted to JSON */ 895 nlohmann::json actionNotSupported(std::string_view arg1); 896 897 void actionNotSupported(crow::Response& res, std::string_view arg1); 898 899 /** 900 * @brief Formats InvalidIndex message into JSON 901 * Message body: "The index <arg1> is not a valid offset into the array." 902 * 903 * @param[in] arg1 Parameter of message that will replace %1 in its body. 904 * 905 * @returns Message InvalidIndex formatted to JSON */ 906 nlohmann::json invalidIndex(int64_t arg1); 907 908 void invalidIndex(crow::Response& res, int64_t arg1); 909 910 /** 911 * @brief Formats EmptyJSON message into JSON 912 * Message body: "The request body submitted contained an empty JSON object and 913 * the service is unable to process it." 914 * 915 * 916 * @returns Message EmptyJSON formatted to JSON */ 917 nlohmann::json emptyJSON(); 918 919 void emptyJSON(crow::Response& res); 920 921 /** 922 * @brief Formats QueryNotSupportedOnResource message into JSON 923 * Message body: "Querying is not supported on the requested resource." 924 * 925 * 926 * @returns Message QueryNotSupportedOnResource formatted to JSON */ 927 nlohmann::json queryNotSupportedOnResource(); 928 929 void queryNotSupportedOnResource(crow::Response& res); 930 931 /** 932 * @brief Formats QueryNotSupportedOnOperation message into JSON 933 * Message body: "Querying is not supported with the requested operation." 934 * 935 * 936 * @returns Message QueryNotSupportedOnOperation formatted to JSON */ 937 nlohmann::json queryNotSupportedOnOperation(); 938 939 void queryNotSupportedOnOperation(crow::Response& res); 940 941 /** 942 * @brief Formats QueryCombinationInvalid message into JSON 943 * Message body: "Two or more query parameters in the request cannot be used 944 * together." 945 * 946 * 947 * @returns Message QueryCombinationInvalid formatted to JSON */ 948 nlohmann::json queryCombinationInvalid(); 949 950 void queryCombinationInvalid(crow::Response& res); 951 952 /** 953 * @brief Formats EventBufferExceeded message into JSON 954 * Message body: "Indicates undelivered events may have been lost due to a lack 955 * of buffer space in the service." 956 * 957 * 958 * @returns Message QueryCombinationInvalid formatted to JSON */ 959 nlohmann::json eventBufferExceeded(); 960 961 void eventBufferExceeded(crow::Response& res); 962 963 /** 964 * @brief Formats InsufficientPrivilege message into JSON 965 * Message body: "There are insufficient privileges for the account or 966 * credentials associated with the current session to perform the requested 967 * operation." 968 * 969 * 970 * @returns Message InsufficientPrivilege formatted to JSON */ 971 nlohmann::json insufficientPrivilege(); 972 973 void insufficientPrivilege(crow::Response& res); 974 975 /** 976 * @brief Formats PropertyValueModified message into JSON 977 * Message body: "The property <arg1> was assigned the value <arg2> due to 978 * modification by the service." 979 * 980 * @param[in] arg1 Parameter of message that will replace %1 in its body. 981 * @param[in] arg2 Parameter of message that will replace %2 in its body. 982 * 983 * @returns Message PropertyValueModified formatted to JSON */ 984 nlohmann::json propertyValueModified(std::string_view arg1, 985 const nlohmann::json& arg2); 986 987 void propertyValueModified(crow::Response& res, std::string_view arg1, 988 const nlohmann::json& arg2); 989 990 /** 991 * @brief Formats AccountNotModified message into JSON 992 * Message body: "The account modification request failed." 993 * 994 * 995 * @returns Message AccountNotModified formatted to JSON */ 996 nlohmann::json accountNotModified(); 997 998 void accountNotModified(crow::Response& res); 999 1000 /** 1001 * @brief Formats QueryParameterValueFormatError message into JSON 1002 * Message body: "The value <arg1> for the parameter <arg2> is of a different 1003 * format than the parameter can accept." 1004 * 1005 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1006 * @param[in] arg2 Parameter of message that will replace %2 in its body. 1007 * 1008 * @returns Message QueryParameterValueFormatError formatted to JSON */ 1009 1010 nlohmann::json queryParameterValueFormatError(const nlohmann::json& arg1, 1011 std::string_view arg2); 1012 1013 void queryParameterValueFormatError( 1014 crow::Response& res, const nlohmann::json& arg1, std::string_view arg2); 1015 1016 /** 1017 * @brief Formats PropertyMissing message into JSON 1018 * Message body: "The property <arg1> is a required property and must be 1019 * included in the request." 1020 * 1021 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1022 * 1023 * @returns Message PropertyMissing formatted to JSON */ 1024 nlohmann::json propertyMissing(std::string_view arg1); 1025 1026 void propertyMissing(crow::Response& res, std::string_view arg1); 1027 1028 /** 1029 * @brief Formats ResourceExhaustion message into JSON 1030 * Message body: "The resource <arg1> was unable to satisfy the request due to 1031 * unavailability of resources." 1032 * 1033 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1034 * 1035 * @returns Message ResourceExhaustion formatted to JSON */ 1036 nlohmann::json resourceExhaustion(std::string_view arg1); 1037 1038 void resourceExhaustion(crow::Response& res, std::string_view arg1); 1039 1040 /** 1041 * @brief Formats AccountModified message into JSON 1042 * Message body: "The account was successfully modified." 1043 * 1044 * 1045 * @returns Message AccountModified formatted to JSON */ 1046 nlohmann::json accountModified(); 1047 1048 void accountModified(crow::Response& res); 1049 1050 /** 1051 * @brief Formats QueryParameterOutOfRange message into JSON 1052 * Message body: "The value <arg1> for the query parameter <arg2> is out of 1053 * range <arg3>." 1054 * 1055 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1056 * @param[in] arg2 Parameter of message that will replace %2 in its body. 1057 * @param[in] arg3 Parameter of message that will replace %3 in its body. 1058 * 1059 * @returns Message QueryParameterOutOfRange formatted to JSON */ 1060 nlohmann::json queryParameterOutOfRange( 1061 std::string_view arg1, std::string_view arg2, std::string_view arg3); 1062 1063 void queryParameterOutOfRange(crow::Response& res, std::string_view arg1, 1064 std::string_view arg2, std::string_view arg3); 1065 1066 /** 1067 * @brief Formats PasswordChangeRequired message into JSON 1068 * Message body: The password provided for this account must be changed 1069 * before access is granted. PATCH the 'Password' property for this 1070 * account located at the target URI '%1' to complete this process. 1071 * 1072 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1073 * 1074 * @returns Message PasswordChangeRequired formatted to JSON */ 1075 1076 nlohmann::json passwordChangeRequired(const boost::urls::url_view_base& arg1); 1077 1078 void passwordChangeRequired(crow::Response& res, 1079 const boost::urls::url_view_base& arg1); 1080 1081 /** 1082 * @brief Formats InvalidUpload message into JSON 1083 * Message body: Invalid file uploaded to %1: %2.* 1084 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1085 * @param[in] arg2 Parameter of message that will replace %2 in its body. 1086 * 1087 * @returns Message InvalidUpload formatted to JSON */ 1088 nlohmann::json invalidUpload(std::string_view arg1, std::string_view arg2); 1089 1090 void invalidUpload(crow::Response& res, std::string_view arg1, 1091 std::string_view arg2); 1092 1093 /** 1094 * @brief Formats InsufficientStorage message into JSON 1095 * Message body: "Insufficient storage or memory available to complete the 1096 * request." 1097 * @returns Message InsufficientStorage formatted to JSON */ 1098 nlohmann::json insufficientStorage(); 1099 1100 void insufficientStorage(crow::Response& res); 1101 1102 /** 1103 * @brief Formats OperationNotAllowed message into JSON 1104 * Message body: "he HTTP method is not allowed on this resource." 1105 * @returns Message OperationNotAllowed formatted to JSON */ 1106 nlohmann::json operationNotAllowed(); 1107 1108 void operationNotAllowed(crow::Response& res); 1109 1110 /** 1111 * @brief Formats ArraySizeTooLong message into JSON 1112 * Message body: "Indicates that a string value passed to the given resource 1113 * exceeded its length limit." 1114 * @returns Message ArraySizeTooLong formatted to JSON */ 1115 nlohmann::json arraySizeTooLong(std::string_view property, uint64_t length); 1116 1117 void arraySizeTooLong(crow::Response& res, std::string_view property, 1118 uint64_t length); 1119 1120 /** 1121 * @brief Formats GenerateSecretKeyRequired message into JSON 1122 * Message body: Secret key needs to be generated for the account before 1123 * accessing the service. Account has to provide a time based OTP from the 1124 * device configured with the secret key before access is granted. The secret 1125 * key can be generated with a `POST` to the `GenerateSecretKey` action for 1126 * the account located at the target URI '%1'. 1127 * 1128 * @param[in] arg1 Parameter of message that will replace %1 in its body. 1129 * 1130 * @returns Message GenerateSecretKeyRequired formatted to JSON */ 1131 1132 nlohmann::json 1133 generateSecretKeyRequired(const boost::urls::url_view_base& arg1); 1134 1135 void generateSecretKeyRequired(crow::Response& res, 1136 const boost::urls::url_view_base& arg1); 1137 } // namespace messages 1138 1139 } // namespace redfish 1140