.. _extensions-hooks-ref:

Extensions & Hooks
==================

The extensions & hooks section references three concepts regularly,
so to clarify what is meant each time, read the following definitions:

* **Plugin**: A Plugin is software that adds a specific feature to
  an existing software application.
* **Extension**: An extension extends the capabilities of,
  or the data available to, an existing software application.
* **Hook**: A hook intercepts function calls, messages, or events passed
  between software components and can be used to trigger plugins, or their
  extensions.


Hooks
-----

Within |RCE| there are two types of supported hooks.

* **Internal built-in hooks**: The internal |hg|, |git| or |svn| hooks are
  triggered by different VCS operations, like push, pull,
  or clone and are non-configurable, but you can add your own VCS hooks,
  see :ref:`custom-hooks`.
* **Custom rcextensions hooks**: User defined hooks centre around the lifecycle of
  certain actions such are |repo| creation, user creation etc. The actions
  these hooks trigger can be rejected based on the API permissions of the
  user calling them.

On instructions how to use the custom `rcextensions`
see :ref:`integrations-rcextensions` section.