in samtranslator/swagger/swagger.py [0:0]
def add_request_model_to_method(self, path, method_name, request_model): # type: ignore[no-untyped-def]
"""
Adds request model body parameter for this path/method.
:param string path: Path name
:param string method_name: Method name
:param dict request_model: Model name
"""
model_name = request_model and request_model.get("Model").lower()
model_required = request_model and request_model.get("Required")
for method_definition in self.iter_on_method_definitions_for_path_at_method(path, method_name):
if self._doc.get("swagger") is not None:
existing_parameters = method_definition.get("parameters", [])
# construct parameter as py27 dict
# and insert keys one by one to preserve input order
parameter = Py27Dict()
parameter["in"] = "body"
parameter["name"] = model_name
parameter["schema"] = {"$ref": f"#/definitions/{model_name}"}
if model_required is not None:
parameter["required"] = model_required
existing_parameters.append(parameter)
method_definition["parameters"] = existing_parameters
elif self._doc.get("openapi") and SwaggerEditor.safe_compare_regex_with_string(
SwaggerEditor._OPENAPI_VERSION_3_REGEX, self._doc["openapi"]
):
method_definition["requestBody"] = {
"content": {"application/json": {"schema": {"$ref": f"#/components/schemas/{model_name}"}}}
}
if model_required is not None:
method_definition["requestBody"]["required"] = model_required