API documentation guide 84/84884/3
authorEric Debeau <eric.debeau@orange.com>
Wed, 10 Apr 2019 13:48:42 +0000 (13:48 +0000)
committerEric Debeau <eric.debeau@orange.com>
Wed, 10 Apr 2019 18:29:08 +0000 (18:29 +0000)
Guide how to use Swagger and swaggerv2dcc directive
Add 2 JSON Swagger files
Add code block

Change-Id: If3af3f20509db2cc47bdb2cf3db9b44d8a1bcdc7
Issue-ID: DOC-426
Signed-off-by: Eric Debeau <eric.debeau@orange.com>
docs/guides/onap-developer/how-to-use-docs/api-swagger-guide.rst [new file with mode: 0644]
docs/guides/onap-developer/how-to-use-docs/index.rst
docs/guides/onap-developer/how-to-use-docs/myAPI1.json [new file with mode: 0644]
docs/guides/onap-developer/how-to-use-docs/myAPI2.json [new file with mode: 0644]

diff --git a/docs/guides/onap-developer/how-to-use-docs/api-swagger-guide.rst b/docs/guides/onap-developer/how-to-use-docs/api-swagger-guide.rst
new file mode 100644 (file)
index 0000000..d5e2099
--- /dev/null
@@ -0,0 +1,72 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2019 Orange.  All rights reserved.
+
+.. _api-swagger-guide:
+
+API documentation
+=================
+
+Swagger
+-------
+
+The API should be described using OpenAPI specifications and available as a
+`JSON file <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md>`_
+
+A Swagger editor is available here `<http://editor.swagger.io/>`_ to generate
+such JSON files.
+
+As a result, you should get one JSON file per API:
+
+- myAPI1.json
+- myAPI2.json
+
+Global API table
+----------------
+It is recommended to list the following API available with an access to the
+Swagger JSON files to help the developers/users to play with JSON.
+
+We propose the following table:
+
+.. csv-table::
+   :header: "API name", "Swagger JSON"
+   :widths: 10,5
+
+   "myAPI1", ":download:`link <myAPI1.json>`"
+   "myAPI12", ":download:`link <myAPI2.json>`"
+
+
+The code is available here:
+
+.. code:: rst
+
+   ..csv-table::
+     :header: "API name", "Swagger JSON"
+     :widths: 10,5
+
+     "myAPI1", ":download:`link <myAPI1.json>`"
+     "myAPI2", ":download:`link <myAPI2.json>`"
+
+API Swagger
+-----------
+For each API, the ``swaggerv2doc`` directive must be used as follows:
+
+.. code:: rst
+
+   myAPI1
+   ......
+   .. swaggerv2doc:: myAPI1.json
+
+   myAPI2
+   ......
+   .. swaggerv2doc:: myAPI2.json
+
+It will produce the following output:
+
+myAPI1
+......
+.. swaggerv2doc:: myAPI1.json
+
+myAPI2
+......
+.. swaggerv2doc:: myAPI2.json
index a2cdd6e..90c6575 100644 (file)
@@ -10,6 +10,7 @@ Creating Documentation
    documentation-guide
    style-guide
    include-documentation
+   api-swagger-guide
    converting-formats
    addendum
 
diff --git a/docs/guides/onap-developer/how-to-use-docs/myAPI1.json b/docs/guides/onap-developer/how-to-use-docs/myAPI1.json
new file mode 100644 (file)
index 0000000..b611ad8
--- /dev/null
@@ -0,0 +1,37 @@
+{
+  "swagger" : "2.0",
+  "info" : {
+    "description" : "my API 1",
+    "version" : "1.0.0",
+    "title" : "API example",
+    "contact" : {
+      "email" : "onap@orange.com"
+    },
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "host" : "serverRoot",
+  "basePath" : "/healthCheck",
+  "schemes" : [ "https" ],
+  "produces": [
+    "application/json;charset=utf-8"
+  ],
+  "paths" : {
+    "/healthCheck" : {
+      "get" : {
+        "summary" : "Displays healhcheck for my favorite component",
+        "description" : "Displays healthcheck for my favorite component",
+        "responses": {
+          "200": {
+            "description": "Service OK"
+          },
+          "503" : {
+            "description" : "Service Unavailable"
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/docs/guides/onap-developer/how-to-use-docs/myAPI2.json b/docs/guides/onap-developer/how-to-use-docs/myAPI2.json
new file mode 100644 (file)
index 0000000..473d351
--- /dev/null
@@ -0,0 +1,37 @@
+{
+  "swagger" : "2.0",
+  "info" : {
+    "description" : "my API 2",
+    "version" : "1.0.0",
+    "title" : "API example",
+    "contact" : {
+      "email" : "onap@orange.com"
+    },
+    "license" : {
+      "name" : "Apache 2.0",
+      "url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "host" : "serverRoot",
+  "basePath" : "/status",
+  "schemes" : [ "https" ],
+  "produces": [
+    "application/json;charset=utf-8"
+  ],
+  "paths" : {
+    "/status" : {
+      "get" : {
+        "summary" : "Displays status for my favorite component",
+        "description" : "Displays status for my favorite component",
+        "responses": {
+          "200": {
+            "description": "Service OK"
+          },
+          "503" : {
+            "description" : "Service Unavailable"
+          }
+        }
+      }
+    }
+  }
+}