You can upload a plugin from HTTP client by POST to <a href="../uploadPlugin">this URL</a> with <a href="http://tools.ietf.org/html/rfc2388">multipart/form-data</a> MIME type.
</p>
<h2>Making sure all the needed plugins are installed</h2>
<p>
Jenkins uses an XML format for representing most of complex objects internally (such as slaves, views, jobs, and builds.)
As such, it has various APIs that send/receive those XMLs. For example, you can create a new job by POSTing its XML representation.
Starting 1.482, Jenkins annotates these XMLs with additional information indicating what plugins have been used in them.
This improves the portability of those XML files.
</p><p>
By POSTing such XML to <a href="../prevalidateConfig">this URL</a>, you can find out if any plugins are missing or too old.
This method responds with a JSON array that contains one entry for every missing/outdated plugin. If this method
returns an empty array, then you know that this Jenkins has every plugin needed to accept the submitted XML.