blob: b0ace78b2739543cdf6f72c590f7756cfd215fb3 [file]
<!DOCTYPE html>
<html>
<!--Head section for CSS/Javascript -->
<head>
<meta charset="utf-8">
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
<meta name="description" content="IoT Software Update">
<meta name="author" content="">
<!--base to have relative path for offline navigation -->
<title>Eclipse hawkBit - IoT Software Update</title>
<!--Stylesheets-->
<!-- Bootstrap 3.3.1 -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<!-- Font Awesome Icons -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="../../css/prettyPhoto.css" type="text/css" media="screen" title="prettyPhoto main stylesheet" charset="utf-8" />
<!-- Custom CSS -->
<link href="../../css/hawkbit.css" rel="stylesheet">
<!--Javascript-->
<!-- JQuery 2.1.1-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Bootstrap 3.3.1 JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript"></script>
<script src="../../js/jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto();
});
</script>
</head>
<body>
<!--Header section Site navigation -->
<!--base to have relative path for offline navigation -->
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../../index.html">Eclipse hawkBit™</a>
</div>
<div class="collapse navbar-collapse wow fadeIn" id="navbar-collapse" data-wow-delay="0.2s">
<ul class="nav navbar-nav pull-right">
<li >
<a href="../../news/index.html">News</a>
</li>
<li >
<a href="../../documentation/overview/introduction.html">Documentation</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<style>#forkongithub a{background:#8d0c0c;color:#fff;text-decoration:none;font-family:Arial, Helvetica, sans-serif;text-align:center;font-weight:bold;padding:5px 40px;font-size:12px;line-height:3rem;position:relative;transition:0.5s;}#forkongithub a:hover{background:#c11;color:#fff;}#forkongithub a::before,#forkongithub a::after{content:"";width:100%;display:block;position:absolute;top:1px;left:0;height:1px;background:#fff;}#forkongithub a::after{bottom:1px;top:auto;}@media screen and (min-width:800px){#forkongithub{position:fixed;display:block;top:0;right:0;width:50px;overflow:visible;height:200px;z-index:9999;}#forkongithub a{width:260px;position:absolute;top:40px;right:-60px;transform:rotate(45deg);-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);}}</style><span id="forkongithub"><a href="https://github.com/eclipse/hawkbit">Fork me on GitHub</a></span>
<!-- /.container -->
</nav>
<div id="header_wrapper" class="container">
<div class="nav-bar col-md-3">
<nav class="navmenu navmenu-default" role="navigation">
<ul class="nav navmenu-nav">
<!--base to have relative path for offline navigation -->
<li>
Introduction
<ul class="nav navmenu-nav">
<!-- 2nd level -->
<!--base to have relative path for offline navigation -->
<li >
<a href="../../documentation/overview/introduction.html">Overview</a>
</li>
<li >
<a href="../../documentation/overview/features.html">Features</a>
</li>
<li >
<a href="../../documentation/overview/getting-started.html">Getting Started</a>
</li>
</ul>
</li>
<li>
Concepts
<ul class="nav navmenu-nav">
<!-- 2nd level -->
<!--base to have relative path for offline navigation -->
<li >
<a href="../../documentation/architecture/architecture.html">Architecture</a>
</li>
<li >
<a href="../../documentation/architecture/datamodel.html">Data model</a>
</li>
<li >
<a href="../../documentation/architecture/targetstate.html">Target States</a>
</li>
</ul>
</li>
<li>
Interfaces
<ul class="nav navmenu-nav">
<!-- 2nd level -->
<!--base to have relative path for offline navigation -->
<li >
<a href="../../documentation/interfaces/interfaces.html">Overview</a>
</li>
<li >
<a href="../../documentation/interfaces/management-ui.html">Management UI</a>
</li>
<li >
<a href="../../documentation/interfaces/management-api.html">Management API</a>
</li>
<li >
<a href="../../documentation/interfaces/ddi-api.html">DDI API</a>
</li>
<li >
<a href="../../documentation/interfaces/dmf-api.html">DMF API</a>
</li>
</ul>
</li>
<li>
Security
<ul class="nav navmenu-nav">
<!-- 2nd level -->
<!--base to have relative path for offline navigation -->
<li >
<a href="../../documentation/security/security.html">Overview</a>
</li>
</ul>
</li>
<li>
Guides
<ul class="nav navmenu-nav">
<!-- 2nd level -->
<!--base to have relative path for offline navigation -->
<li >
<a href="../../documentation/guide/runhawkbit.html">Build and Run hawkBit</a>
</li>
<li >
<a href="../../documentation/guide/clustering.html">Clustering</a>
</li>
<li >
<a href="../../documentation/guide/customtheme.html">Theme Customization</a>
</li>
<li >
<a href="../../documentation/guide/feignclient.html">Create Feign Client</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div id="page" class="col-md-9">
<div class="inner">
<div id="maincontainer">
<section id="top" class="documentation-section">
<div class="row">
<div class="span8 offset3">
<!--base to have relative path for offline navigation -->
<h1 id="management-api">Management API</h1>
<h2 id="overview">Overview</h2>
<p>The Management API is a RESTful API that enables to perform Create/Read/Update/Delete operations for provisioning targets (i.e. devices) and repository content (i.e. software). Based on the Management API you can manage and monitor software update operations via HTTP/HTTPS. The <em>Management API</em> supports JSON payload with hypermedia as well as filtering, sorting and paging. Furthermore the Management API provides permission based access control and standard roles as well as custom role creation. </p>
<p>The API is protected and needs authentication and authorization based on the security concept.</p>
<h2 id="api-version">API Version</h2>
<p><em>hawkBit</em> provides an consistent Management API interface that guarantees backwards compatibility for future releases by version control.</p>
<p>The current version of the Management API is <code>version 1 (v1)</code> with the URI http://localhost:8080/rest/v1/</p>
<h2 id="api-resources">API Resources</h2>
<p>Supported HTTP-methods are:</p>
<ul>
<li>GET</li>
<li>POST</li>
<li>PUT</li>
<li>DELETE</li>
</ul>
<p>Available Management APIs resources are:</p>
<ul>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/targets-api-guide.html">Targets</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsets-api-guide.html">Distribution Sets</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsettypes-api-guide.html">Distribution Set Types</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/softwaremodules-api-guide.html">Software Modules</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/softwaremoduletypes-api-guide.html">Software Module Types</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/targettag-api-guide.html">Target Tag</a></li>
<li><a href="https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsettag-api-guide.html">Distribution Set Tag</a></li>
<li><a href="http://https://docs.bosch-iot-rollouts.com/documentation/developerguide/apispecifications/managementapi/rollouts.html">Rollouts</a></li>
</ul>
<h2 id="headers">Headers</h2>
<p>For all requests an <code>Authorization</code> header has to be set.</p>
<ul>
<li>Username: <code>Tenant\username</code></li>
<li>Password: <code>password</code></li>
</ul>
<p>Also have a look to the <a href="https://github.com/eclipse/hawkbit/wiki/Security">Security</a> chapter.</p>
<p>In addition, for POST and PUT requests the <code>Content-Type</code> header has to be set. Accepted content-types are.</p>
<ul>
<li><code>application/json</code></li>
<li><code>application/hal+json</code></li>
</ul>
<h2 id="request-body">Request Body</h2>
<p>Besides the relevant data (name, description, createdBy etc.) of a resource entity, a resource entity also has URIs (<code>_links</code>) to linked resource entities.</p>
<p>A <em>Distribution Set</em> entity may have for example URIs to artifacts, <em>Software Modules</em>, <em>Software Module Types</em> and metadata.</p>
<figure class="highlight"><pre><code class="language-json" data-lang="json"><span class="s2">"_links"</span><span class="err">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nt">"artifacts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nt">"href"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:8080/rest/v1/softwaremodules/83/artifacts"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nt">"href"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:8080/rest/v1/softwaremodules/83"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nt">"href"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:8080/rest/v1/softwaremoduletypes/43"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="nt">"href"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:8080/rest/v1/softwaremodules/83/metadata?offset=0&amp;limit=50"</span><span class="w">
</span><span class="p">}</span></code></pre></figure>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
<!-- Footer -->
<footer>
<div class="container">
<div class="row">
<div class="col-md-4">
<h3 class="footer-links-header">Quick Links</h3>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/legal/">Legal</a></li>
</ul>
<ul class="footer-links clearfix">
<li><a href="http://www.eclipse.org">Eclipse Home</a></li>
<li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
<li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
<li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
</ul>
</div>
<div class="col-md-2">
</div>
</footer>
<!--/.Footer-->
</body>
</html>