def update_webhook(self, scaling_group, policy, webhook, name=None,
            metadata=None):
        """
        Updates the specified webhook. One or more of the parameters may be
        specified.
        """
        uri = "/%s/%s/policies/%s/webhooks/%s" % (self.uri_base,
                utils.get_id(scaling_group), utils.get_id(policy),
                utils.get_id(webhook))
        if not isinstance(webhook, AutoScaleWebhook):
            # Received an ID
            webhook = self.get_webhook(scaling_group, policy, webhook)
        body = {"name": name or webhook.name,
                "metadata": metadata or webhook.metadata,
                }
        resp, resp_body = self.api.method_put(uri, body=body)
        webhook.reload()
        return webhook