hawkBit rest docs (management & DDI API) (#688)
* hawkBit REST docs. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Fiy gitignore. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Add to website. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Switch to generated docs. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Fix typos. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Review findings. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Otimizations. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Revert accidental checkin. Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com> * Add security link.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@ tmp
|
||||
.settings
|
||||
.classpath
|
||||
target
|
||||
!hawkbit-rest/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/target
|
||||
.allure
|
||||
.vscode
|
||||
.springbeans
|
||||
|
||||
@@ -7,6 +7,8 @@ Eclipse [hawkBit](http://www.eclipse.org/hawkbit/index.html) is an domain indepe
|
||||
Build: [](https://circleci.com/gh/eclipse/hawkbit)
|
||||
[](https://sonar.ops.bosch-iot-rollouts.com) [](https://maven-badges.herokuapp.com/maven-central/org.eclipse.hawkbit/hawkbit-parent)
|
||||
|
||||
Docker images: [](https://microbadger.com/images/hawkbit/hawkbit-update-server:0.2.0M9 "Get your own version badge on microbadger.com") [](https://microbadger.com/images/hawkbit/hawkbit-update-server:0.2.0M9-mysql "Get your own version badge on microbadger.com")
|
||||
|
||||
# Documentation
|
||||
|
||||
see [hawkBit Documentation](https://www.eclipse.org/hawkbit/documentation/overview/introduction.html)
|
||||
|
||||
@@ -2,16 +2,22 @@
|
||||
|
||||
The hawkBit documentation is based on [Jekyll](http://jekyllrb.com/). Jekyll is a Ruby gem and thus requires a Ruby runtime to be executed. Compiling the documentation is not included within the regular Maven build.
|
||||
|
||||
# Build and Serve documentation
|
||||
## Build and Serve documentation
|
||||
|
||||
### Unix / Mac
|
||||
|
||||
## Unix / Mac
|
||||
On a unix or mac you don't need to extra install Jekyll. The Maven build is downloading the ruby runtime and the necessary ruby-gems via the Maven rubygems-proxy repository. The Ruby runtime is downloaded into the `target` folder and executed during the build.
|
||||
|
||||
To serve the current documentation you only need to call `mvn install gem:exec@jekyll-serve` (within the `docs` folder). It automatically monitors the filesystem and every local changes are generated on-demand on the local server [http://127.0.0.1:4000/hawkbit/](http://127.0.0.1:4000/hawkbit/).
|
||||
|
||||
## Windows
|
||||
### Windows
|
||||
|
||||
On a Windows operating system you'll need to install Jekyll manually. If you don't have installed Jekyll on your machine you can use the [PortableJekyll](https://github.com/madhur/PortableJekyll) project. Just clone the Github repository and start the `setpath.cmd` which setups the necessary path entries into the CMD (don't forget to copy them into the environment path variable to have the path set for every command prompt).
|
||||
|
||||
The Maven build on windows just executes the `Jekyll` process using the maven-exec plugin. This allows to use Maven to build and serve the documentation on a windows machine as well.
|
||||
|
||||
To serve the current documentation you only need to call `mvn exec:exec@jekyll-serve`. It automatically monitors the filesystem and every local changes are generated on-demand on the local server [http://127.0.0.1:4000/hawkbit/](http://127.0.0.1:4000/hawkbit/).
|
||||
|
||||
## Test API docs integration
|
||||
|
||||
In order to verify the hawkbit-rest-docs integration you have to run the serve command above and when running call `mvn install`in parallel to include the generated rest docs into the serve run.
|
||||
|
||||
26
docs/pom.xml
26
docs/pom.xml
@@ -86,6 +86,32 @@
|
||||
<jrubyVerbose>false</jrubyVerbose>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>unpack-api-docs</id>
|
||||
<phase>generate-resources</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>org.eclipse.hawkbit</groupId>
|
||||
<artifactId>hawkbit-rest-docs</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>jar</type>
|
||||
<overWrite>true</overWrite>
|
||||
<outputDirectory>${basedir}/target/classes/documentation/</outputDirectory>
|
||||
<includes>**</includes>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
@@ -8,13 +8,14 @@
|
||||
<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>
|
||||
<li><a href="http://www.eclipse.org/legal/">Legal Resources</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>
|
||||
<li><a href="http://www.eclipse.org/security/">Reporting a Security Vulnerability</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@import url('http://fonts.googleapis.com/css?family=Open+Sans:300,300italic,600,600italic,700');
|
||||
|
||||
body {
|
||||
margin-top: 50px; /* padding for .navbar-fixed-top. */
|
||||
margin-top: 50px;
|
||||
/* padding for .navbar-fixed-top. */
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
line-height: 1.85em;
|
||||
color: #111;
|
||||
@@ -14,6 +14,12 @@ a {
|
||||
color: #0088cc;
|
||||
}
|
||||
|
||||
iframe {
|
||||
width: 100%;
|
||||
height: 1280px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
@@ -23,14 +29,12 @@ code {
|
||||
background-color: #f9f2f4;
|
||||
}
|
||||
|
||||
.image-center
|
||||
{
|
||||
.image-center {
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.image-left
|
||||
{
|
||||
.image-left {
|
||||
float: left;
|
||||
margin: 0px 0 0px 0px;
|
||||
padding: 20px;
|
||||
@@ -53,7 +57,9 @@ code {
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
|
||||
/*scroll stuff*/
|
||||
|
||||
.navbar-lp {
|
||||
-webkit-transition: height 0.3s;
|
||||
-moz-transition: height 0.3s;
|
||||
@@ -82,15 +88,13 @@ code {
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
.navbar-lp
|
||||
{
|
||||
.navbar-lp {
|
||||
-webkit-transition: all 0.3s;
|
||||
-moz-transition: all 0.3s;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
.navbar-lp.scroll .navbar-brand
|
||||
{
|
||||
.navbar-lp.scroll .navbar-brand {
|
||||
font-size: 48px;
|
||||
padding-top: 10px;
|
||||
-webkit-transition: all 0.3s;
|
||||
@@ -112,6 +116,7 @@ code {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*scroll stuff ends*/
|
||||
|
||||
.navbar-inverse .navbar-nav>li>a {
|
||||
@@ -134,11 +139,13 @@ code {
|
||||
border-color: #411355;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
|
||||
.navbar-inverse .navbar-toggle:hover,
|
||||
.navbar-inverse .navbar-toggle:focus {
|
||||
background-color: #411355;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
|
||||
.navbar-inverse .navbar-collapse,
|
||||
.navbar-inverse .navbar-form {
|
||||
border-color: rgba(255, 255, 255, 0);
|
||||
}
|
||||
|
||||
@@ -156,7 +163,6 @@ code {
|
||||
|
||||
.tagline {
|
||||
padding: 60px 0 50px;
|
||||
|
||||
}
|
||||
|
||||
.tagline h1 {
|
||||
@@ -205,15 +211,12 @@ footer {
|
||||
.box-separator {
|
||||
margin: 50px 0;
|
||||
}
|
||||
|
||||
.box-img.pull-left {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.box-img.pull-right {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
.box-headline {
|
||||
font-size: 35px;
|
||||
}
|
||||
@@ -223,15 +226,12 @@ footer {
|
||||
.box-separator {
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
.box-img.pull-left {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.box-img.pull-right {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.box-headline {
|
||||
font-size: 30px;
|
||||
}
|
||||
@@ -241,11 +241,9 @@ footer {
|
||||
.container {
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
.box-separator {
|
||||
margin: 40px 0;
|
||||
}
|
||||
|
||||
.box-headline {
|
||||
font-size: 25px;
|
||||
}
|
||||
@@ -283,24 +281,23 @@ footer {
|
||||
.box-separator {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.box-img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.box-img.pull-left {
|
||||
margin-right: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.box-img.pull-right {
|
||||
margin-bottom: 10px;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*Content Header
|
||||
========================*/
|
||||
|
||||
.content-header {
|
||||
margin: 50px 0px;
|
||||
}
|
||||
@@ -309,14 +306,18 @@ footer {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
/*Blog/News
|
||||
========================*/
|
||||
.blogpost, .news {
|
||||
|
||||
.blogpost,
|
||||
.news {
|
||||
padding: 0 0 0px;
|
||||
margin: 20px 0 0px;
|
||||
}
|
||||
|
||||
.blogpost h3, .news h3 {
|
||||
.blogpost h3,
|
||||
.news h3 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
@@ -331,7 +332,8 @@ footer {
|
||||
}
|
||||
|
||||
.metadata ul {
|
||||
margin: 0; padding: 0
|
||||
margin: 0;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
.metadata ul li {
|
||||
@@ -344,8 +346,10 @@ footer {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
/*downloads
|
||||
========================*/
|
||||
|
||||
.box-dl h3 {
|
||||
margin-top: 5px;
|
||||
font-weight: bold;
|
||||
@@ -355,7 +359,10 @@ footer {
|
||||
.box-dl .fa {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
|
||||
/*Home page Image-Hover*/
|
||||
|
||||
.zoom1 {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1);
|
||||
@@ -364,14 +371,21 @@ footer {
|
||||
-ms-transition: .3s ease-in-out;
|
||||
transition: .3s ease-in-out;
|
||||
}
|
||||
|
||||
.zoom1:hover {
|
||||
-webkit-transform: scale(0.9);
|
||||
-ms-transform: scale(0.9);
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
|
||||
/*Home page Image-VideoOverlay*/
|
||||
.thumb1, .thumb2, .thumb3,.thumb4, .thumb5{
|
||||
|
||||
.thumb1,
|
||||
.thumb2,
|
||||
.thumb3,
|
||||
.thumb4,
|
||||
.thumb5 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -384,17 +398,19 @@ footer {
|
||||
font-size: 4em;
|
||||
left: 325px;
|
||||
top: 125px;
|
||||
|
||||
}
|
||||
|
||||
.thumb1 .play-icon:hover, .thumb2 .play-icon:hover, .thumb3 .play-icon:hover, .thumb4 .play-icon:hover, .thumb5 .play-icon:hover{
|
||||
.thumb1 .play-icon:hover,
|
||||
.thumb2 .play-icon:hover,
|
||||
.thumb3 .play-icon:hover,
|
||||
.thumb4 .play-icon:hover,
|
||||
.thumb5 .play-icon:hover {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(1.1);
|
||||
-ms-transform: scale(1.1);
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
|
||||
.thumb2 .play-icon {
|
||||
color: #003151;
|
||||
font-size: 4em;
|
||||
@@ -416,6 +432,7 @@ opacity: 1;
|
||||
z-index: 100;
|
||||
top: 115px;
|
||||
}
|
||||
|
||||
.thumb4 .play-icon {
|
||||
color: #003151;
|
||||
font-size: 4em;
|
||||
@@ -426,6 +443,7 @@ opacity: 1;
|
||||
z-index: 100;
|
||||
top: 125px;
|
||||
}
|
||||
|
||||
.thumb5 .play-icon {
|
||||
color: #003151;
|
||||
font-size: 4em;
|
||||
@@ -436,7 +454,10 @@ opacity: 1;
|
||||
z-index: 100;
|
||||
top: 125px;
|
||||
}
|
||||
|
||||
|
||||
/*community*/
|
||||
|
||||
.team {
|
||||
background: -moz-linear-gradient(center top, rgba(106, 178, 82, 1) 0%, rgba(147, 200, 130, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
background: linear-gradient(center top, rgba(106, 178, 82, 1) 0%, rgba(147, 200, 130, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
@@ -462,9 +483,10 @@ opacity: 1;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
/*Usecases*/
|
||||
.teamuc {
|
||||
|
||||
/*Usecases*/
|
||||
|
||||
.teamuc {
|
||||
background: -moz-linear-gradient(center top, rgba(106, 178, 82, 1) 0%, rgba(177, 189, 205, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
background: linear-gradient(center top, rgba(106, 178, 82, 1) 0%, rgba(177, 189, 205, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
background: -webkit-linear-gradient(top, rgba(106, 178, 82, 1) 0%, rgba(177, 189, 205, 1) 100%) repeat scroll 0 0 rgba(0, 0, 0, 0);
|
||||
@@ -480,10 +502,12 @@ opacity: 1;
|
||||
p.ex {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
h2.ex {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.vbtn {
|
||||
background: #3498db;
|
||||
background-image: -webkit-linear-gradient(top, #002E5C, #2980b9);
|
||||
@@ -511,8 +535,8 @@ h2.ex {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
box-shadow: inset 0 0 0 1px #27496d, 0 5px 15px #193047;
|
||||
|
||||
}
|
||||
|
||||
.vbtn:active {
|
||||
background: #3cb0fd;
|
||||
background-image: -webkit-linear-gradient(top, #30567B, #3498db);
|
||||
@@ -524,8 +548,8 @@ h2.ex {
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
box-shadow: inset 0 0 0 1px #27496d, 0 5px 15px #193047;
|
||||
|
||||
}
|
||||
|
||||
.vbtn:focus {
|
||||
background: #3cb0fd;
|
||||
background-image: -webkit-linear-gradient(top, #30567B, #3498db);
|
||||
@@ -538,6 +562,8 @@ h2.ex {
|
||||
text-decoration: none;
|
||||
box-shadow: inset 0 0 0 1px #27496d, 0 5px 15px #193047;
|
||||
}
|
||||
|
||||
|
||||
/*Footer
|
||||
========================*/
|
||||
|
||||
@@ -555,17 +581,20 @@ footer{
|
||||
border-bottom: 1px solid #999;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.footer-links-header {
|
||||
color: #333;
|
||||
padding-top: 0px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
footer h3 {
|
||||
margin-top: 16px;
|
||||
margin-bottom: 6px;
|
||||
font-size: 20px;
|
||||
font-weight: 555;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
width: 49%;
|
||||
display: inline-block;
|
||||
@@ -577,7 +606,9 @@ footer ul {
|
||||
-webkit-padding-start: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*documentation*/
|
||||
|
||||
.nav-bar {
|
||||
margin-top: 50px;
|
||||
background-color: #dadada;
|
||||
@@ -606,36 +637,50 @@ footer ul {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
|
||||
/* blogs*/
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.blogstep .blogpicture {float:none; text-align:center;}
|
||||
.blogstep .blogtext {padding:0;}
|
||||
.blogstep .blogpicture {
|
||||
float: none;
|
||||
text-align: center;
|
||||
}
|
||||
.blogstep .blogtext {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.blogstep {
|
||||
padding: 0 0 20px 40px;
|
||||
background: url(../img/blogpics/stepline.png) no-repeat 10px 3px;
|
||||
}
|
||||
|
||||
.blogstep .blogpicture {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.blogstep .blogpicture img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.blogstep .blogtext {
|
||||
padding: 0 400px 0 0;
|
||||
color: #848484;
|
||||
}
|
||||
|
||||
.blogstep .blogtext p {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.blogstep .blogtext a {
|
||||
color: #0066FF;
|
||||
}
|
||||
|
||||
.clear{ clear:both; height:0; overflow:hidden;}
|
||||
|
||||
.clear {
|
||||
clear: both;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
table {
|
||||
background: #B0C4DE none repeat scroll 0 0;
|
||||
@@ -643,8 +688,8 @@ table {
|
||||
border-radius: 4px;
|
||||
margin: 20px;
|
||||
width: 100%;
|
||||
|
||||
}
|
||||
|
||||
table th {
|
||||
background: rgba(0, 0, 0, 0) -moz-linear-gradient(center top, #B0C4DE, #B0C4DE) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) linear-gradient(center top, #B0C4DE, #B0C4DE) repeat scroll 0 0;
|
||||
@@ -653,16 +698,20 @@ table th {
|
||||
border-top: 1px solid #e0e0e0;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
|
||||
table tr:first-child th:first-child {
|
||||
border-top-left-radius: 3px;
|
||||
}
|
||||
|
||||
table tr:first-child th:last-child {
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
|
||||
table td:first-child {
|
||||
border-left: 0 none;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table td {
|
||||
background: rgba(0, 0, 0, 0) -moz-linear-gradient(center top, #fbfbfb, #fafafa) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) linear-gradient(center top, #fbfbfb, #fafafa) repeat scroll 0 0;
|
||||
@@ -672,28 +721,35 @@ table td {
|
||||
border-top: 1px solid #f0f0f0;
|
||||
padding: 4px 6px;
|
||||
}
|
||||
|
||||
table tr.even td {
|
||||
background: rgba(0, 0, 0, 0) -moz-linear-gradient(center top, #f8f8f8, #f6f6f6) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) linear-gradient(center top, #f8f8f8, #f6f6f6) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) -webkit-linear-gradient(center top, #f8f8f8, #f6f6f6) repeat scroll 0 0;
|
||||
}
|
||||
|
||||
table tr:last-child td {
|
||||
border-bottom: 0 none;
|
||||
}
|
||||
|
||||
table tr:last-child td:first-child {
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
|
||||
table tr:last-child td:last-child {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
table tr:hover td {
|
||||
background: rgba(0, 0, 0, 0) -moz-linear-gradient(center top, #f2f2f2, #f0f0f0) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) linear-gradient(center top, #f2f2f2, #f0f0f0) repeat scroll 0 0;
|
||||
background: rgba(0, 0, 0, 0) -webkit-linear-gradient(center top, #f2f2f2, #f0f0f0) repeat scroll 0 0;
|
||||
}
|
||||
|
||||
#zoo table {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.pricing {
|
||||
-moz-border-bottom-colors: none;
|
||||
-moz-border-left-colors: none;
|
||||
@@ -711,6 +767,7 @@ table tr:hover td {
|
||||
margin-bottom: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing thead th {
|
||||
background: #333 none repeat scroll 0 0;
|
||||
border-top-left-radius: 4px;
|
||||
@@ -724,6 +781,7 @@ table tr:hover td {
|
||||
text-transform: uppercase;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing tfoot td {
|
||||
background: #ededed none repeat scroll 0 0;
|
||||
border-bottom-left-radius: 6px;
|
||||
@@ -731,6 +789,7 @@ table tr:hover td {
|
||||
padding: 20px 8%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing td {
|
||||
background: #fff none repeat scroll 0 0;
|
||||
border: 1px solid #d4d4d4;
|
||||
@@ -738,11 +797,14 @@ table tr:hover td {
|
||||
padding: 10px 8%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing tfoot td {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pricing td.focus {
|
||||
background: #3a5a82; none repeat scroll 0 0;
|
||||
background: #3a5a82;
|
||||
none repeat scroll 0 0;
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
color: #fff;
|
||||
font-family: "Lato", sans-serif;
|
||||
@@ -752,6 +814,7 @@ table tr:hover td {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing td.focus-best {
|
||||
background: #a00 none repeat scroll 0 0;
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
@@ -763,15 +826,18 @@ table tr:hover td {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pricing td.focus span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.pricing td.focus-best span {
|
||||
display: block;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.pricing td h6 {
|
||||
color: #c0c2c2;
|
||||
float: left;
|
||||
@@ -780,14 +846,17 @@ table tr:hover td {
|
||||
font-weight: 400;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.pricing td p {
|
||||
float: left;
|
||||
text-align: right;
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
box-shadow: 0 0 3px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
#tbltext {
|
||||
color: #000000;
|
||||
}
|
||||
@@ -12,6 +12,7 @@ The _hawkbit_ [update server](https://github.com/eclipse/hawkbit) provides REST
|
||||
Note: in DDI the target is identified using a **controllerId**. Controller is used as a term for the actual service/client on the device. That allows users to have in some cases even multiple clients on the same target for different tasks, e.g. Firmware update and App management.
|
||||
|
||||
# State Machine Mapping
|
||||
|
||||
For historical reasons the DDI has a different state machine and status messages than the [Target State Machine](../architecture/targetstate.html) of the _hawkBit_ update server.
|
||||
|
||||
This is kept in order to ensure that _DDI_ stays compatible for devices out there in the field. A future version "2" of _DDI_ might change that. _DDI_ also defines more states than the update server, e.g. multiple DDI states are currently mapped by the _DDI_ implementation to _RUNNING_ state. It is possible that in the future _hawkBit_ will fully leverage these additional states.
|
||||
@@ -28,147 +29,5 @@ SCHEDULED | This can be used by the target to inform that it s
|
||||
RESUMED | This can be used by the target to inform that it continued to work on the action. | RUNNING
|
||||
|
||||
# Resource Overview
|
||||
The following chapters provide basic examples for the most important resources but we provide also a [detailed resource documentation](https://docs.bosch-iot-rollouts.com/documentation/rest-api/rootcontroller-api-guide.html).
|
||||
|
||||
## Base Poll Resource
|
||||
|
||||
```
|
||||
GET /{tenant}/controller/v1/{controllerId}
|
||||
```
|
||||
|
||||
In the answer to the baseUrl polling the backend can send action links. A possible action is a deploy command. The client makes a GET request on the given link:
|
||||
|
||||
_Example Response_
|
||||
|
||||
```
|
||||
{
|
||||
"config": {
|
||||
"polling": {
|
||||
"sleep": "00:05:00"
|
||||
}
|
||||
},
|
||||
"_links": {
|
||||
"deploymentBase": {
|
||||
"href": "http://localhost:8080/default/controller/v1/example/deploymentBase/1?c=644088541"
|
||||
},
|
||||
"configData": {
|
||||
"href": "http://localhost:8080/default/controller/v1/example/configData"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Deployment Base Resource
|
||||
|
||||
```
|
||||
GET /{tenant}/controller/v1/{controllerId}/deploymentBase/{id}
|
||||
```
|
||||
|
||||
_Example Response_
|
||||
|
||||
```
|
||||
{
|
||||
"deployment": {
|
||||
"download": "forced",
|
||||
"update": "forced",
|
||||
"chunks": [
|
||||
{
|
||||
"part": "os",
|
||||
"version": "1.0.0",
|
||||
"name": "Linux",
|
||||
"artifacts": [
|
||||
{
|
||||
"filename": "linux.zip",
|
||||
"hashes": {
|
||||
"sha1": "46fc56de883ec027759d8513458fe1010aa7e793",
|
||||
"md5": "5813e9655bd6871d0c25b8d510fd8605"
|
||||
},
|
||||
"size": 52167,
|
||||
"_links": {
|
||||
"download": {
|
||||
"href": "http://localhost:8080/default/controller/v1/example/softwaremodules/1/artifacts/linux.zip"
|
||||
},
|
||||
"md5sum": {
|
||||
"href": "http://localhost:8080/default/controller/v1/example/softwaremodules/1/artifacts/linux.zip.MD5SUM"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "1",
|
||||
"actionHistory": {
|
||||
"status": "RETRIEVED",
|
||||
"messages": [
|
||||
"Installing update",
|
||||
"Downloading artifacts"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Deployment Feedback Resource
|
||||
To every deployment the client can post feedback back to the update-server about the deployment status.
|
||||
|
||||
```
|
||||
POST /{tenant}/controller/v1/{controllerId}/deploymentBase/{id}/feedback
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
_Example Body Deployment Success_
|
||||
|
||||
```
|
||||
{
|
||||
"id": 1,
|
||||
"time": "20140511T121314",
|
||||
"status": {
|
||||
"execution": "closed",
|
||||
"result": {
|
||||
"finished": "success",
|
||||
"progress": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
_Example Body Deployment Proceeding_
|
||||
|
||||
```
|
||||
{
|
||||
"id": "1",
|
||||
"time": "20140511T121314",
|
||||
"status": {
|
||||
"execution": "proceeding",
|
||||
"result": {
|
||||
"finished": "none",
|
||||
"progress": {
|
||||
"cnt": 2,
|
||||
"of": 5
|
||||
}
|
||||
},
|
||||
"details": [
|
||||
"checking hash sums"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
_Example Body Deployment Error_
|
||||
|
||||
```
|
||||
{
|
||||
"id": 1,
|
||||
"time": "20140511T121314",
|
||||
"status": {
|
||||
"execution": "rejected",
|
||||
"result": {
|
||||
"finished": "failure",
|
||||
"progress": {}
|
||||
},
|
||||
"details": [
|
||||
"something bad happend"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
<iframe src="../../rest-api/rootcontroller-api-guide.html"></iframe>
|
||||
@@ -8,6 +8,7 @@ title: Management-API
|
||||
# Management API
|
||||
|
||||
## Overview
|
||||
|
||||
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 _Management API_ 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.
|
||||
|
||||
The API is protected and needs authentication and authorization based on the security concept.
|
||||
@@ -29,15 +30,16 @@ Supported HTTP-methods are:
|
||||
|
||||
Available Management APIs resources are:
|
||||
|
||||
* [Targets](https://docs.bosch-iot-rollouts.com/documentation/rest-api/targets-api-guide.html)
|
||||
* [Distribution Sets](https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsets-api-guide.html)
|
||||
* [Distribution Set Types](https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsettypes-api-guide.html)
|
||||
* [Software Modules](https://docs.bosch-iot-rollouts.com/documentation/rest-api/softwaremodules-api-guide.html)
|
||||
* [Software Module Types](https://docs.bosch-iot-rollouts.com/documentation/rest-api/softwaremoduletypes-api-guide.html)
|
||||
* [Target Tag](https://docs.bosch-iot-rollouts.com/documentation/rest-api/targettag-api-guide.html)
|
||||
* [Distribution Set Tag](https://docs.bosch-iot-rollouts.com/documentation/rest-api/distributionsettag-api-guide.html)
|
||||
* [Rollouts](https://docs.bosch-iot-rollouts.com/documentation/rest-api/rollout-api-guide.html)
|
||||
* [System Configuration](https://docs.bosch-iot-rollouts.com/documentation/rest-api/tenant-api-guide.html)
|
||||
- [Targets](managementapi/targets.html)
|
||||
- [Distribution sets](managementapi/distributionsets.html)
|
||||
- [Distribution set types](managementapi/distributionsettypes.html)
|
||||
- [Software modules](managementapi/softwaremodules.html)
|
||||
- [Software module types](managementapi/softwaremoduletypes.html)
|
||||
- [Target tag](managementapi/targettag.html)
|
||||
- [Distribution set tag](managementapi/distributionsettag.html)
|
||||
- [Rollouts](managementapi/rollouts.html)
|
||||
- [Target filters](managementapi/targetfilters.html)
|
||||
- [System configuration](managementapi/tenant.html)
|
||||
|
||||
|
||||
## Headers
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/distributionsets-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/distributionsettag-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,7 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
|
||||
<iframe src="../../rest-api/distributionsettypes-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/rollout-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/softwaremodules-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/softwaremoduletypes-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/targetfilters-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/targets-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/targettag-api-guide.html"></iframe>
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: documentation
|
||||
title: Management-API
|
||||
---
|
||||
|
||||
<iframe src="../../rest-api/tenant-api-guide.html"></iframe>
|
||||
@@ -14,11 +14,11 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.eclipse.hawkbit</groupId>
|
||||
<artifactId>hawkbit-parent</artifactId>
|
||||
<artifactId>hawkbit-rest-parent</artifactId>
|
||||
<version>0.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>hawkbit-ddi-api</artifactId>
|
||||
<name>hawkBit :: DDI API</name>
|
||||
<name>hawkBit :: REST :: DDI API</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@@ -14,11 +14,11 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.eclipse.hawkbit</groupId>
|
||||
<artifactId>hawkbit-parent</artifactId>
|
||||
<artifactId>hawkbit-rest-parent</artifactId>
|
||||
<version>0.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>hawkbit-ddi-resource</artifactId>
|
||||
<name>hawkBit :: DDI Resources</name>
|
||||
<name>hawkBit :: REST :: DDI Resources</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
@@ -13,11 +13,11 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.eclipse.hawkbit</groupId>
|
||||
<artifactId>hawkbit-parent</artifactId>
|
||||
<artifactId>hawkbit-rest-parent</artifactId>
|
||||
<version>0.2.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>hawkbit-mgmt-api</artifactId>
|
||||
<name>hawkBit :: Mgmt REST API</name>
|
||||
<name>hawkBit :: REST :: Management API</name>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user