Description
Not all requests require a body, however it looks like the Swagger API does not permit a request with an empty body.
For example, the close alert method does not have any mandatory JSON body fields, which implies you should be able to call it like this:
client.close_alert(alert.id)
Or more explicitly:
client.close_alert(alert.id, body=CloseAlertRequest())
However both of these fail with:
ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({})
HTTP response body: {"message":"Body should be a JSON object","took":0.003,"requestId":"b5648d74-cee1-47ed-b8d7-1d458f31101a"}
I believe this section of the Swagger API code is at least partly responsible for this:
https://github.com/opsgenie/opsgenie-python-sdk/blob/master/opsgenie/swagger_client/rest.py#L152
if body:
request_body = json.dumps(body)
My current workaround is to always specify source
for these requests.