Stash checking enablement of hook

Is there an interface (Java) to see if a hook is enabled/disabled? I only need access inside of it's own class.

Is this going to be a Catch-22 scenario, where the class doesn't fire if the hook is disabled?

1 answer

0 vote

Hi Justin,

You can use RepositoryHookService.getByKey to retrieve the RepositoryHook for a given repository and hook-key. You can then call RepositoryHook.isEnabled to determine whether it's enabled.



Hi Micheal,

Using STASH CLI, is it possible to check if a hook is enabled or disabled in STASH ?


You can use the REST api to retrieve the hooks for a repository:

Thanks Micheal. As I am not experienced in REST, it would be great if you can share some sample script if it exist with you. Thanks

Calling the REST endpoint is basically just doing a HTTP request. If you're on linux/mac you can use curl to do that:

curl -X GET -u <repo-admin-user><projectKey>/repos/<repositorySlug>/settings/hooks

And to enable/disable a hook:

curl -X PUT -u <repo-admin-user><projectKey>/repos/<repositorySlug>/settings/hooks/<hookKey>/enabled/true

I am sorry for multiple questions here.

How do I get the hookkey ? Thanks

The first example returns the hooks, which include a key="..." attribute. Use that as the hook-key for the second example.

Yes. I got the hook key from the first command. However, the following does not seem to work. I am still missing something.

curl -X PUT -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled/true

You're missing the /rest/api/latest/ part in the URL. Can you try adding that just before the /projects part?

Ah apologies, I read our REST documentation wrong. The /true suffix is the problem. The command to enable a hook is

curl -X PUT -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled

To disable the hook, send a DELETE instead:

curl -X DELETE -u repo-admin-user http://ets-test-cmteam:7990/projects/RNDAP/repos/ap-eclipsetools/settings/hooks/com.atlassian.stash.stash-bundled-hooks:force-push-hook/enabled

You guys are awesome ! Just works fine. Thanks for your patience.

Enable or disable hook works fine with REST API. How about change value?

I'm using an external pre-receive hook with parameters. Can I change a parameter value via rest api?

My response from GET command: {"exe":"/tmp/dev-services/stash/hooks/","params":"-M"}

How I can set new value, for example: params":"-M" ?

Thanks in advance.


You need to do a PUT by passing the parameters 


I think this should solve your problem. 

Look into this documentation from Atlassian for more info.

Suggest an answer

Log in or Join to answer
Community showcase
Louis De Jaeger
Posted Thursday in Off-topic

Friday fun: your best joke

Hi all Lets make this Friday fun really fun and post one (or more) of your best jokes! The joke can be about an Atlassian product, or just a really fun joke you want to share! I’m not the best j...

190 views 12 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot