def add_request_model_to_method()

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