Hi,
I am on Jira Server Automation.
I retrieved all versions for my project using REST api and result looks like what is shared in documentation page : https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/project-getProjectVersions
I now want to filter this down to ones which are overdue. ("overdue": true,) because I need to send an email of all overdue versions, their name and release date for folks to take action.
Going through documentation, I think response is a list and can be accessed thru {{webhookresponses.body}} but I cant figure out how to filter this list.
@Bill Sheboy in this thread said: "if there is a specific one you need, such as by name filtering...Unfortunately smart value, list filtering does not work yet for Data Center/Server. You could use the match() function with a regular expression if you extract from the correct level in the response."
So trying to understand if what I am trying is possible, if so, any guidance is greatly appreciated. I havent made any progress in the if block conditions I tried so far.
Response from API call looks like in documentation. Thanks!!
Hi @Kalyan Sattaluri - whoa, you found a rare case of Bill being wrong (albeit on a post from almost a year ago). :-}
Smart list filtering (or as Atlassian calls it Conditional Logic) definitely works on DC/Server. I have a rule that uses it on our Jira Server (yes I know) instance. I created it back in March of this year.
For the record, this was supposedly done on 30/Aug/2021, per JIRAAUTOSERVER-294 but we didn't see documentation for it until 01/Jan/2022.
Now, last June (2022), Bill referenced the original announcement of the feature by @Sam Harding from Atlassian, on 06/Oct/2021.
SO ANYWAYS, yeah, this should be possible. Let us know if you run into any issues!
hi @Darryl Lee
Can you please tell, based on the documentation for versions from above, if what is returned is a list?
All below syntax works:
{{webhookResponse.body}} --> prints complete response
{{webhookResponse.body.overdue}} --> prints true,false
{{webhookResponse.body.last.overdue}} --> prints false
{{#if(equals(webhookResponse.body.last.overdue, false))}} last release is good {{/}} --> Correctly prints the statement as expected
so I am able to access the values.
But when I try to iterate and filter in email, I am not getting my syntax right and need help. Below is what I have tried:
{{#webhookResponse.body}}
{{#if(equals(webhookResponse.body.overdue, true))}}
Version needs to be released
{{/}}
{{/}}
I am trying all combinations of above syntax, used webhookResponses.body. removed reference to webhookResponse.body and just used if statement. etc.
I have searched all over atlassian and could not find a reference so If some one can help, will def help other noob like me.. So any help is greatly appreciated!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hey there!
You're very close! The trick with filters/conditional logic is that the smart values within them they are always relative to the list you are filtering. So what you want is:
{{#webhookResponse.body}}
{{#if(equals(overdue, true))}}
Version {{name}} needs to be released
{{/}}
{{/}}
(I also threw {{name}} in there so you can see exactly which version is overdue.)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
WOW. Awesome.
Thank you very much @Darryl Lee . It works
It was bugging me for a while and so thanks again for making my weekend!!
Hope others will find this useful as well.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.