Updating api documentation 29/34129/1
authorKiran Kamineni <kiran.k.kamineni@intel.com>
Mon, 5 Mar 2018 20:57:22 +0000 (12:57 -0800)
committerKiran Kamineni <kiran.k.kamineni@intel.com>
Mon, 5 Mar 2018 21:31:01 +0000 (13:31 -0800)
Updating API documentation to add login, status and unseal end points

Issue-ID: AAF-121
Change-Id: I073d970aa779353a34236e61692ca67f380084b6
Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
sms-service/doc/api_swagger.html [new file with mode: 0644]
sms-service/doc/api_swagger.yaml
sms-service/src/sms/handler/handler.go

diff --git a/sms-service/doc/api_swagger.html b/sms-service/doc/api_swagger.html
new file mode 100644 (file)
index 0000000..94a72aa
--- /dev/null
@@ -0,0 +1,724 @@
+<!doctype html>
+<html>
+  <head>
+    <title>Secret Management Service</title>
+    <style type="text/css">
+      body {
+       font-family: Trebuchet MS, sans-serif;
+       font-size: 15px;
+       color: #444;
+       margin-right: 24px;
+}
+
+h1     {
+       font-size: 25px;
+}
+h2     {
+       font-size: 20px;
+}
+h3     {
+       font-size: 16px;
+       font-weight: bold;
+}
+hr     {
+       height: 1px;
+       border: 0;
+       color: #ddd;
+       background-color: #ddd;
+}
+
+.app-desc {
+  clear: both;
+  margin-left: 20px;
+}
+.param-name {
+  width: 100%;
+}
+.license-info {
+  margin-left: 20px;
+}
+
+.license-url {
+  margin-left: 20px;
+}
+
+.model {
+  margin: 0 0 0px 20px;
+}
+
+.method {
+  margin-left: 20px;
+}
+
+.method-notes  {
+       margin: 10px 0 20px 0;
+       font-size: 90%;
+       color: #555;
+}
+
+pre {
+  padding: 10px;
+  margin-bottom: 2px;
+}
+
+.http-method {
+ text-transform: uppercase;
+}
+
+pre.get {
+  background-color: #0f6ab4;
+}
+
+pre.post {
+  background-color: #10a54a;
+}
+
+pre.put {
+  background-color: #c5862b;
+}
+
+pre.delete {
+  background-color: #a41e22;
+}
+
+.huge  {
+       color: #fff;
+}
+
+pre.example {
+  background-color: #f3f3f3;
+  padding: 10px;
+  border: 1px solid #ddd;
+}
+
+code {
+  white-space: pre;
+}
+
+.nickname {
+  font-weight: bold;
+}
+
+.method-path {
+  font-size: 1.5em;
+  background-color: #0f6ab4;
+}
+
+.up {
+  float:right;
+}
+
+.parameter {
+  width: 500px;
+}
+
+.param {
+  width: 500px;
+  padding: 10px 0 0 20px;
+  font-weight: bold;
+}
+
+.param-desc {
+  width: 700px;
+  padding: 0 0 0 20px;
+  color: #777;
+}
+
+.param-type {
+  font-style: italic;
+}
+
+.param-enum-header {
+width: 700px;
+padding: 0 0 0 60px;
+color: #777;
+font-weight: bold;
+}
+
+.param-enum {
+width: 700px;
+padding: 0 0 0 80px;
+color: #777;
+font-style: italic;
+}
+
+.field-label {
+  padding: 0;
+  margin: 0;
+  clear: both;
+}
+
+.field-items   {
+       padding: 0 0 15px 0;
+       margin-bottom: 15px;
+}
+
+.return-type {
+  clear: both;
+  padding-bottom: 10px;
+}
+
+.param-header {
+  font-weight: bold;
+}
+
+.method-tags {
+  text-align: right;
+}
+
+.method-tag {
+  background: none repeat scroll 0% 0% #24A600;
+  border-radius: 3px;
+  padding: 2px 10px;
+  margin: 2px;
+  color: #FFF;
+  display: inline-block;
+  text-decoration: none;
+}
+
+    </style>
+  </head>
+  <body>
+  <h1>Secret Management Service</h1>
+    <div class="app-desc">This is a service that provides secret management facilities</div>
+    <div class="app-desc">More information: <a href=""></a></div>
+    <div class="app-desc">Contact Info: <a href="kiran.k.kamineni@intel.com">kiran.k.kamineni@intel.com</a></div>
+    <div class="app-desc">Version: 1.0.0</div>
+    <div class="app-desc">BasePath:/v1/sms/</div>
+    <div class="license-info">Apache 2.0</div>
+    <div class="license-url">http://www.apache.org/licenses/LICENSE-2.0.html</div>
+  <h2>Access</h2>
+    <ol>
+      <li>APIKey KeyParamName:token KeyInQuery:false KeyInHeader:true</li>
+    </ol>
+
+  <h2><a name="__Methods">Methods</a></h2>
+  [ Jump to <a href="#__Models">Models</a> ]
+
+  <h3>Table of Contents </h3>
+  <div class="method-summary"></div>
+  <h4><a href="#Domain">Domain</a></h4>
+  <ul>
+  <li><a href="#domainDomainNameDelete"><code><span class="http-method">delete</span> /domain/{domainName}</code></a></li>
+  <li><a href="#domainPost"><code><span class="http-method">post</span> /domain</code></a></li>
+  </ul>
+  <h4><a href="#Login">Login</a></h4>
+  <ul>
+  <li><a href="#loginPost"><code><span class="http-method">post</span> /login</code></a></li>
+  </ul>
+  <h4><a href="#Secret">Secret</a></h4>
+  <ul>
+  <li><a href="#domainDomainNameSecretGet"><code><span class="http-method">get</span> /domain/{domainName}/secret</code></a></li>
+  <li><a href="#domainDomainNameSecretPost"><code><span class="http-method">post</span> /domain/{domainName}/secret</code></a></li>
+  <li><a href="#domainDomainNameSecretSecretNameDelete"><code><span class="http-method">delete</span> /domain/{domainName}/secret/{secretName}</code></a></li>
+  <li><a href="#domainDomainNameSecretSecretNameGet"><code><span class="http-method">get</span> /domain/{domainName}/secret/{secretName}</code></a></li>
+  </ul>
+  <h4><a href="#System">System</a></h4>
+  <ul>
+  <li><a href="#statusGet"><code><span class="http-method">get</span> /status</code></a></li>
+  <li><a href="#unsealPost"><code><span class="http-method">post</span> /unseal</code></a></li>
+  </ul>
+
+  <h1><a name="Domain">Domain</a></h1>
+  <div class="method"><a name="domainDomainNameDelete"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="delete"><code class="huge"><span class="http-method">delete</span> /domain/{domainName}</code></pre></div>
+    <div class="method-summary">Deletes a domain by name (<span class="nickname">domainDomainNameDelete</span>)</div>
+    <div class="method-notes">Deletes a domain with provided name</div>
+
+    <h3 class="field-label">Path parameters</h3>
+    <div class="field-items">
+      <div class="param">domainName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of the domain </div>
+    </div>  <!-- field-items -->
+
+
+
+
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">204</h4>
+    Successful Deletion
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="domainPost"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /domain</code></pre></div>
+    <div class="method-summary">Add a new domain (<span class="nickname">domainPost</span>)</div>
+    <div class="method-notes"></div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="heaader">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#Domain">Domain</a> (required)</div>
+
+      <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+
+    </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#Domain">Domain</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "name" : "aeiou",
+  "uuid" : "aeiou"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">201</h4>
+    Successful Creation
+        <a href="#Domain">Domain</a>
+    <h4 class="field-label">400</h4>
+    Invalid input
+        <a href="#"></a>
+    <h4 class="field-label">500</h4>
+    Internal Server Error
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Login">Login</a></h1>
+  <div class="method"><a name="loginPost"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /login</code></pre></div>
+    <div class="method-summary">Login with username and password (<span class="nickname">loginPost</span>)</div>
+    <div class="method-notes">Operations related to logging in via username and Password</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="heaader">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#Credential">Credential</a> (required)</div>
+
+      <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+
+    </div>  <!-- field-items -->
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#inline_response_200">inline_response_200</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "ttl" : 0,
+  "token" : "aeiou"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful Login returns a token
+        <a href="#inline_response_200">inline_response_200</a>
+    <h4 class="field-label">404</h4>
+    Invalid Username or Password
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="Secret">Secret</a></h1>
+  <div class="method"><a name="domainDomainNameSecretGet"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /domain/{domainName}/secret</code></pre></div>
+    <div class="method-summary">List secret Names in this domain (<span class="nickname">domainDomainNameSecretGet</span>)</div>
+    <div class="method-notes">Gets all secret names in this domain</div>
+
+    <h3 class="field-label">Path parameters</h3>
+    <div class="field-items">
+      <div class="param">domainName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of the domain in which to look at </div>
+    </div>  <!-- field-items -->
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      
+      array[String]
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>[ "secret1", "secret2", "secret3" ]</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful operation
+        
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="domainDomainNameSecretPost"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /domain/{domainName}/secret</code></pre></div>
+    <div class="method-summary">Add a new secret (<span class="nickname">domainDomainNameSecretPost</span>)</div>
+    <div class="method-notes"></div>
+
+    <h3 class="field-label">Path parameters</h3>
+    <div class="field-items">
+      <div class="param">domainName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of the domain </div>
+    </div>  <!-- field-items -->
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="heaader">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#Secret">Secret</a> (required)</div>
+
+      <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+
+    </div>  <!-- field-items -->
+
+
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">201</h4>
+    Successful Creation
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="domainDomainNameSecretSecretNameDelete"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="delete"><code class="huge"><span class="http-method">delete</span> /domain/{domainName}/secret/{secretName}</code></pre></div>
+    <div class="method-summary">Deletes a Secret (<span class="nickname">domainDomainNameSecretSecretNameDelete</span>)</div>
+    <div class="method-notes"></div>
+
+    <h3 class="field-label">Path parameters</h3>
+    <div class="field-items">
+      <div class="param">secretName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of Secret to Delete </div><div class="param">domainName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Path to the SecretDomain which contains the Secret </div>
+    </div>  <!-- field-items -->
+
+
+
+
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">204</h4>
+    Successful Deletion
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="domainDomainNameSecretSecretNameGet"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /domain/{domainName}/secret/{secretName}</code></pre></div>
+    <div class="method-summary">Find Secret by Name (<span class="nickname">domainDomainNameSecretSecretNameGet</span>)</div>
+    <div class="method-notes">Returns a single secret</div>
+
+    <h3 class="field-label">Path parameters</h3>
+    <div class="field-items">
+      <div class="param">domainName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of the domain in which to look at </div><div class="param">secretName (required)</div>
+
+      <div class="param-desc"><span class="param-type">Path Parameter</span> &mdash; Name of the secret which is needed </div>
+    </div>  <!-- field-items -->
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#Secret">Secret</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "values" : {
+    "name" : "john",
+    "Age" : 40,
+    "admin" : true
+  },
+  "name" : "aeiou"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    successful operation
+        <a href="#Secret">Secret</a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <h1><a name="System">System</a></h1>
+  <div class="method"><a name="statusGet"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="get"><code class="huge"><span class="http-method">get</span> /status</code></pre></div>
+    <div class="method-summary">Get backend status (<span class="nickname">statusGet</span>)</div>
+    <div class="method-notes">Gets current backend status. This API is used only by quorum clients</div>
+
+
+
+
+
+
+
+    <h3 class="field-label">Return type</h3>
+    <div class="return-type">
+      <a href="#inline_response_200_1">inline_response_200_1</a>
+      
+    </div>
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+    <h3 class="field-label">Example data</h3>
+    <div class="example-data-content-type">Content-Type: application/json</div>
+    <pre class="example"><code>{
+  "sealstatus" : "aeiou"
+}</code></pre>
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">200</h4>
+    Successful operation
+        <a href="#inline_response_200_1">inline_response_200_1</a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+  <div class="method"><a name="unsealPost"/>
+    <div class="method-path">
+    <a class="up" href="#__Methods">Up</a>
+    <pre class="post"><code class="huge"><span class="http-method">post</span> /unseal</code></pre></div>
+    <div class="method-summary">Unseal backend (<span class="nickname">unsealPost</span>)</div>
+    <div class="method-notes">Sends unseal shard to unseal if backend is sealed</div>
+
+
+    <h3 class="field-label">Consumes</h3>
+    This API call consumes the following media types via the <span class="heaader">Content-Type</span> request header:
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Request body</h3>
+    <div class="field-items">
+      <div class="param">body <a href="#body">body</a> (required)</div>
+
+      <div class="param-desc"><span class="param-type">Body Parameter</span> &mdash;  </div>
+
+    </div>  <!-- field-items -->
+
+
+
+
+
+    <!--Todo: process Response Object and its headers, schema, examples -->
+
+
+    <h3 class="field-label">Produces</h3>
+    This API call produces the following media types according to the <span class="header">Accept</span> request header;
+    the media type will be conveyed by the <span class="heaader">Content-Type</span> response header.
+    <ul>
+      <li><code>application/json</code></li>
+    </ul>
+
+    <h3 class="field-label">Responses</h3>
+    <h4 class="field-label">201</h4>
+    Submitted unseal key
+        <a href="#"></a>
+    <h4 class="field-label">404</h4>
+    Invalid Path or Path not found
+        <a href="#"></a>
+  </div> <!-- method -->
+  <hr/>
+
+  <h2><a name="__Models">Models</a></h2>
+  [ Jump to <a href="#__Methods">Methods</a> ]
+
+  <h3>Table of Contents</h3>
+  <ol>
+    <li><a href="#Credential"><code>Credential</code> - </a></li>
+    <li><a href="#Domain"><code>Domain</code> - </a></li>
+    <li><a href="#Secret"><code>Secret</code> - </a></li>
+    <li><a href="#body"><code>body</code> - </a></li>
+    <li><a href="#inline_response_200"><code>inline_response_200</code> - </a></li>
+    <li><a href="#inline_response_200_1"><code>inline_response_200_1</code> - </a></li>
+  </ol>
+
+  <div class="model">
+    <h3><a name="Credential"><code>Credential</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    <div class='model-description'></div>
+    <div class="field-items">
+      <div class="param">username (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">password (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Domain"><code>Domain</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    <div class='model-description'></div>
+    <div class="field-items">
+      <div class="param">uuid (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span> Optional value provided by user. If user does not provide, server will auto generate </div>
+<div class="param">name (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span> Name of the secret domain under which all secrets will be stored </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="Secret"><code>Secret</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    <div class='model-description'></div>
+    <div class="field-items">
+      <div class="param">name (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span> Name of the secret </div>
+<div class="param">values (optional)</div><div class="param-desc"><span class="param-type"><a href="#object">map[String, Object]</a></span> Map of key value pairs that constitute the secret </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="body"><code>body</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">unsealshard (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span> Unseal shard that will be used along with other shards to unseal backend </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="inline_response_200"><code>inline_response_200</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">token (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span>  </div>
+<div class="param">ttl (optional)</div><div class="param-desc"><span class="param-type"><a href="#integer">Integer</a></span> ttl of returned token in seconds </div>
+    </div>  <!-- field-items -->
+  </div>
+  <div class="model">
+    <h3><a name="inline_response_200_1"><code>inline_response_200_1</code> - </a> <a class="up" href="#__Models">Up</a></h3>
+    
+    <div class="field-items">
+      <div class="param">sealstatus (optional)</div><div class="param-desc"><span class="param-type"><a href="#string">String</a></span> seal status of backend </div>
+    </div>  <!-- field-items -->
+  </div>
+  </body>
+</html>
index 5e0b792..08e3c18 100644 (file)
@@ -8,9 +8,11 @@ info:
   license:
     name: Apache 2.0
     url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
-host: 'aaf.onap.org:8000'
+host: 'aaf.onap.org:10443'
 basePath: /v1/sms/
 tags:
+  - name: system
+    description: Operations related to quorum client which are not useful to clients
   - name: login
     description: Operations related to username password based authentication
   - name: domain
@@ -24,9 +26,8 @@ paths:
     post:
       tags:
         - login
-      summary: "Login with username and password"
-      description: 'Operations related to logging in via username and Password'
-      operationId: loginUser
+      summary: Login with username and password
+      description: Operations related to logging in via username and Password
       consumes:
         - application/json
       produces:
@@ -39,18 +40,67 @@ paths:
             $ref: '#/definitions/Credential'
       responses:
         '200':
-          description: "Successful Login"
+          description: Successful Login returns a token
           schema:
-            type: "string"
+            type: object
+            properties:
+              token:
+                type: string
+              ttl:
+                type: integer
+                description: ttl of returned token in seconds
         '404':
-          description: "Invalid Username or Password"
+          description: Invalid Username or Password
+  /status:
+    get:
+      tags:
+        - system
+      description: Gets current backend status. This API is used only by quorum clients
+      summary: Get backend status
+      produces:
+        - application/json
+      responses:
+        '200':
+          description: Successful operation
+          schema:
+            type: object
+            properties:
+              sealstatus:
+                type: string
+                description: seal status of backend
+        '404':
+          description: Invalid Path or Path not found
+  /unseal:
+    post:
+      tags:
+        - system
+      description: Sends unseal shard to unseal if backend is sealed
+      summary: Unseal backend
+      consumes:
+        - application/json
+      produces:
+        - application/json
+      parameters:
+        - in: body
+          name: body
+          required: true
+          schema:
+            type: object
+            properties:
+              unsealshard:
+                type: string
+                description: Unseal shard that will be used along with other shards to unseal backend
+      responses:
+        '201':
+          description: Submitted unseal key
+        '404':
+          description: Invalid Path or Path not found          
   /domain:
     post:
       tags:
         - domain
       summary: Add a new domain
       description: ''
-      operationId: addDomain
       consumes:
         - application/json
       produces:
@@ -62,38 +112,20 @@ paths:
           schema:
             $ref: '#/definitions/Domain'
       responses:
-        '200':
+        '201':
           description: Successful Creation
           schema:
             $ref: '#/definitions/Domain'
-        '405':
+        '400':
           description: Invalid input
+        '500':
+          description: Internal Server Error
   '/domain/{domainName}':
-    get:
-      tags:
-        - domain
-      description: Gets domain information by name
-      operationId: getDomainByName
-      produces:
-        - application/json
-      parameters:
-        - name: domainName
-          in: path
-          description: Name of the domain
-          required: true
-          type: string
-      responses:
-        '200':
-          description: successful operation
-          schema:
-            $ref: '#/definitions/Domain'
-        '404':
-          description: Invalid Path or Path not found
     delete:
       tags:
         - domain
       description: Deletes a domain with provided name
-      operationId: deleteDomainByName
+      summary: Deletes a domain by name
       produces:
         - application/json
       parameters:
@@ -113,7 +145,6 @@ paths:
         - secret
       summary: Add a new secret
       description: ''
-      operationId: addSecretInDomain
       consumes:
         - application/json
       produces:
@@ -130,17 +161,15 @@ paths:
           schema:
             $ref: '#/definitions/Secret'
       responses:
-        '200':
+        '201':
           description: Successful Creation
-          schema:
-            $ref: '#/definitions/Secret'
         '404':
           description: Invalid Path or Path not found
     get:
       tags:
         - secret
-      description: Gets all secrets in this domain
-      operationId: getAllSecretsInDomain
+      description: Gets all secret names in this domain
+      summary: List secret Names in this domain
       produces:
         - application/json
       parameters:
@@ -151,11 +180,12 @@ paths:
           type: string
       responses:
         '200':
-          description: successful operation
+          description: Successful operation
           schema:
-            type: "array"
+            type: array
             items:
-              $ref: '#/definitions/Secret'
+              type: string 
+            example: ['secret1', 'secret2', 'secret3']
         '404':
           description: Invalid Path or Path not found
   '/domain/{domainName}/secret/{secretName}':
@@ -164,7 +194,6 @@ paths:
         - secret
       summary: Find Secret by Name
       description: Returns a single secret
-      operationId: getSecretByName
       produces:
         - application/json
       parameters:
@@ -190,7 +219,6 @@ paths:
         - secret
       summary: Deletes a Secret
       description: ''
-      operationId: deleteSecret
       produces:
         - application/json
       parameters:
@@ -209,14 +237,19 @@ paths:
           description: Successful Deletion
         '404':
           description: Invalid Path or Path not found
+securityDefinitions:
+  token:
+    type: "apiKey"
+    name: "token"
+    in: "header"
 definitions:
   Credential:
     type: object
     properties:
       username:
-        type: "string"
+        type: string
       password:
-        type: "string"
+        type: string
   Domain:
     type: object
     properties:
@@ -229,21 +262,20 @@ definitions:
         type: string
         description: Name of the secret domain under which all secrets will be stored
   Secret:
-    type: "object"
+    type: object
     properties:
       name:
-        type: "string"
+        type: string
         description: Name of the secret
-      value:
-        type: "array"
-        description: Array of key value pairs that constitute the secret
-        items:
-          type: "object"
-          properties:
-            key:
-              type: "string"
-            value:
-              type: "string"
+      values:
+        description: Map of key value pairs that constitute the secret
+        type: object
+        additionalProperties:
+          type: object
+        example:
+          "name": "john"
+          "Age": 40
+          "admin": true
 externalDocs:
   description: Find out more about Swagger
   url: 'http://swagger.io'
index dd124e9..fde6718 100644 (file)
@@ -52,6 +52,8 @@ func (h handler) createSecretDomainHandler(w http.ResponseWriter, r *http.Reques
                http.Error(w, err.Error(), http.StatusInternalServerError)
                return
        }
+
+       w.WriteHeader(http.StatusCreated)
 }
 
 // deleteSecretDomainHandler deletes a secret domain with the name provided
@@ -64,6 +66,8 @@ func (h handler) deleteSecretDomainHandler(w http.ResponseWriter, r *http.Reques
                http.Error(w, err.Error(), http.StatusInternalServerError)
                return
        }
+
+       w.WriteHeader(http.StatusNoContent)
 }
 
 // createSecretHandler handles creation of secrets on a given domain name