How to use executeAllStages with REST API to control a build
Asked by james.mckean:

I am using the REST API endpoint [https://mybamboo.company.com.com/rest/api/latest/queue/\<ProjectKey\>-\<PLanKey\>](https://bamboo.dev.medpro.com/rest/api/latest/queue/TAUBV-ET)

According to documentation, this endpoint supports parameters **stage=\<nameOfStage\>** and **executAllStage=\<true/false\>**

I cannot get either the **stage** or **executeAllStages** parameters to work. Regardless of how I set them, the behavior remains the same. The automatic stages are executed, but stop when it hits the first manual.

Assume I have 3 stages named: Stage1, Stage2, Stage3. Stage3 is manual

I am using the Ansible URI module, so the call looks like:

-  
uri:  
headers:  
Authorization: 'Bearer {{ bearer_token }}'  
body_format: raw  
body: stage=Stage3\&executeAllStages=true  
method: POST  
url: <https://mybamboo.company.com/rest/api/latest/queue/TAU-ETX/>  

The equivalent curl would be:

curl --fail

-H "Authorization: Bearer \<XXX\>"

-X POST

-d "stage=Stage3\&executeAllStages=true"

--location [https://mybamboo.company.com.com/rest/api/latest/queue/TAU-ETX](https://bamboo.dev.medpro.com/rest/api/latest/queue/TAUBV-ET)

In both formats, the call runs without errors, but no matter how I set the values for **stage** and **executeAllStages**, Stage1 and Stage2 are run, Stage3 is not.

There are a lot of questions about this and closely related issues, the best answer I have found being <https://community.atlassian.com/t5/Bamboo-questions/Rest-Api-to-start-a-stage-for-build/qaq-p/786887> but I have not been able to get by this.

Can someone help me find my error or confirm there is a bug?


Answers:
author: Cristiano Mariano
body: Hi [@james.mckean](/t5/user/viewprofilepage/user-id/4184054) ! How are you doing?

Did you try to add the stage and/or executeAllStages parameter to the end of the URL instead of passing it as a body?

Hope this helps!

comments: author: james.mckean
body: Sorry for the long wait.

I am used to using Ansible, so my curl formatting is rusty. If you mean something like

```
curl --fail -H "Authorization: bearer XXX" -X POST https://bamboo.mybamboo.com/rest/api/latest/queue/TAU-ETX?stage=3&executeAllStages=true
```

then I get an error like

```
no matches found: https://bamboo.dev.mybamboo.com/rest/api/latest/queue/TAU-ETX?stage=3&executeAllStages=true
```


author: james.mckean
body: Oh, wait. I am in a zsh shell so apparently the ? needs to be escaped with double quotes.


author: james.mckean
body: OK, further experimenting. I cannot get the bearer token to work, but basic authentication does. Final working format is:

```
curl --fail -k --user <user>:<password>   -X POST https://bamboo.mybamboo.com/rest/api/latest/queue/TAU-ETX"?stage=3&executeAllStages=true"
```

This builds all stages ***including the manual one***. Now I just have to figure out how to accomplish the same in Ansible.

Thanks for the hint.


author: Cristiano Mariano
body: Hi [@james.mckean](/t5/user/viewprofilepage/user-id/4184054) !

I am very glad to hear that it worked.

And thanks for give back the Ansible example to the community!


author: james.mckean
body: For anyone else trying to make this work in Ansible, the correct format is

```
name: 'execute all stages test'
hosts: localhost
tasks:
-
  uri:
    headers:
      Authorization: 'Bearer {{ bearer_token }}'
    method: POST
    url: "https://bamboo.myBamboo.com/rest/api/latest/queue/TAU-ETX/?stage=Stage3&executeAllStages=true"
    validate_certs: false?
```


Tags: api

rest