The Atlassian Community Forums are currently in read-only mode. We will be relaunching on a new platform on September 22 (read more here). We apologize for the extended downtime. For concerns or questions, please email communitymanagers@atlassian.com. See you on the other side, on the new Atlassian Community Forums! :)

×

Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Set Post-mortem Executive Summary via API

Wolfgang Kandek
December 19, 2022

I would like to set the Executive Summary in a Post Mortem via the API. I am using Python. There is an API function for it, but unfortunately there is no curl example. Usually with a curl example I can verify that my syntax and formatting works on the commandline and then transfer to Python.

Does anybody have an example that works?

Here is a snippet of what I am trying to accomplish. The error code that I get when running this is HTTP Error 422: Unprocessable Entity

postmortemid = "0..........8"
initialURL = "https://api.opsgenie.com/v2/postmortem/"
URL = initialURL + postmortemid + "/executive-summary"
jsondata = {"type":"adf","executivesummary":{"content":[{"type":"heading","attrs":{"level":4},"content":[{"type":"text","text":"Leadup"}]}],"type":"doc","version":1}}
headers = {"Content-Type": "application/json", "Authorization": og_key}
try:
  data = json.dumps(jsondata) 
  bindata = data if type(data) == bytes else data.encode('utf-8')
  req = urllib.request.Request(URL, data=bindata, headers=headers, method='PUT')
  result = urllib.request.urlopen(req)
  if result.getcode() >= 200 and result.getcode() < 300:
    messages = result.read()
    json_obj = json.loads(messages)
    print(json_obj)
  else:
    print("Non 200 code from OpsGenie", result.getcode())
except Exception as e:
  print("Exception")
  print(e)

 

 

1 answer

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

1 vote
Answer accepted
Agaci Avinas
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
December 21, 2022

Hi Wolfgang,

I am Agaci from Opsgenie support. Happy to help you today.

Your code looks good but there are two possibilities for the 422 status.

1. The "S" in the executiveSummary key in the payload should be in upper case as per the document

2. 'utf-8' encode is not required as json.dumps itself is going add the escape character to the strings. Adding to that encode the values under executiveSummary inside single quotes.

After the changes your code would like below while constructing and posting the payload,

 

data = {"type":"adf", "executiveSummary":'{"content":[{"type":"heading","attrs":{"level":4},"content":[{"type":"text","text":"Leadup"}]}],"type":"doc","version":1}}'}

jsondata = json.dumps(data)

req = requests.put(URL, data=jsondata, headers=headers)

Regards,

Agaci 

Wolfgang Kandek
December 22, 2022

Thank you. That helped enormously.

Here is the final code for future reference (this one is for the body of the post-mortem)

The main point that tripped me up was that the adf content has to be enclosed by single quotes. In the "data =" line after the first "content" : key note that the entire value is enclosed in single quotes.

 

postmortemid = '76 .... 6f'
initialURL = 'https://api.opsgenie.com/v2/postmortem/'
URL = initialURL + postmortemid + '/content'

headers = {'Content-Type': 'application/json', 'Authorization': og_key}
data = {"type":"adf", "content":'{"content":[{"type":"heading","attrs":{"level":4},"content":[{"type":"text","text":"Leadup"}]}],"type":"doc","version":1}'}

jsondata = json.dumps(data)

req = requests.put(URL, data=jsondata, headers=headers)

Like • # people like this
DEPLOYMENT TYPE
CLOUD
TAGS
AUG Leaders

Atlassian Community Events