Create preliminary documentation for ONAP DMI-Plugin

Create Preliminary documentation for Istanbul release
of the DMI Plugin.
Added new plugins in POM to generate swagger doc for design page.
Added icons from Cps-Core, along with latest conf.py file from
http://gerrit.onap.org/r/doc

Issue-ID: CPS-625
Change-Id: I30582de9b07e93c1c2ecc18003ee6882994690d8
Signed-off-by: DylanB95EST <dylan.byrne@est.tech>
Signed-off-by: shivasubedi <shiva.subedi@est.tech>
diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css
new file mode 100644
index 0000000..6008cb1
--- /dev/null
+++ b/docs/_static/css/ribbon.css
@@ -0,0 +1,63 @@
+.ribbon {
+  z-index: 1000;
+  background-color: #a00;
+  overflow: hidden;
+  white-space: nowrap;
+  position: fixed;
+  top: 25px;
+  right: -50px;
+  -webkit-transform: rotate(45deg);
+     -moz-transform: rotate(45deg);
+      -ms-transform: rotate(45deg);
+       -o-transform: rotate(45deg);
+          transform: rotate(45deg);
+  -webkit-box-shadow: 0 0 10px #888;
+     -moz-box-shadow: 0 0 10px #888;
+          box-shadow: 0 0 10px #888;
+
+}
+
+.ribbon a {
+  border: 1px solid #faa;
+  color: #fff;
+  display: block;
+  font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  margin: 1px 0;
+  padding: 10px 50px;
+  text-align: center;
+  text-decoration: none;
+  text-shadow: 0 0 5px #444;
+  transition: 0.5s;
+}
+
+.ribbon a:hover {
+  background: #c11;
+  color: #fff;
+}
+
+
+/* override table width restrictions */
+@media screen and (min-width: 767px) {
+
+   .wy-table-responsive table td, .wy-table-responsive table th {
+      /* !important prevents the common CSS stylesheets from overriding
+         this as on RTD they are loaded after this stylesheet */
+      white-space: normal !important;
+   }
+
+   .wy-table-responsive {
+      overflow: visible !important;
+   }
+}
+
+@media screen and (max-width: 767px) {
+    .wy-table-responsive table td {
+        white-space: nowrap;
+    }
+}
+
+/* fix width of the screen */
+
+.wy-nav-content {
+    max-width: none;
+}
diff --git a/docs/_static/dmi-plugin-modeling-concepts.png b/docs/_static/dmi-plugin-modeling-concepts.png
new file mode 100644
index 0000000..77817e4
--- /dev/null
+++ b/docs/_static/dmi-plugin-modeling-concepts.png
Binary files differ
diff --git a/docs/_static/dmi-plugin-r9-arch-diagram.PNG b/docs/_static/dmi-plugin-r9-arch-diagram.PNG
new file mode 100644
index 0000000..a791081
--- /dev/null
+++ b/docs/_static/dmi-plugin-r9-arch-diagram.PNG
Binary files differ
diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico
new file mode 100644
index 0000000..cb712eb
--- /dev/null
+++ b/docs/_static/favicon.ico
Binary files differ
diff --git a/docs/_static/logo_onap_2017.png b/docs/_static/logo_onap_2017.png
new file mode 100644
index 0000000..5d064f4
--- /dev/null
+++ b/docs/_static/logo_onap_2017.png
Binary files differ
diff --git a/docs/architecture.rst b/docs/architecture.rst
new file mode 100644
index 0000000..6512576
--- /dev/null
+++ b/docs/architecture.rst
@@ -0,0 +1,40 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+.. _architecture:
+
+DMI Plugin Architecture
+#######################
+
+.. warning:: draft
+
+.. toctree::
+   :maxdepth: 1
+
+
+High Level Component Definition and Architectural Relationships
+===============================================================
+
+The DMI plugin provides a gateway for registration of CM Handles within CPS
+
+Project implementation proposal page describing scope is here:
+`CPS-390 Spike: Define and Agree DMI Plugin REST Interface <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+
+This page reflects the state for Istanbul-R9 release.
+
+.. image:: _static/dmi-plugin-r9-arch-diagram.PNG
+
+API definitions
+===============
+
+The DMI plugin provides following interfaces.
+
+.. list-table::
+   :header-rows: 0
+
+   * - Interface name
+     - Interface definition
+     - Interface capabilities
+     - Protocol
+
+The DMI plugin Basic Concepts are described in :doc:`modeling`.
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..3aaddd1
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,112 @@
+#  ============LICENSE_START=======================================================
+#  Copyright (C) 2021 Nordix Foundation
+#  ================================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+
+from docutils.parsers.rst import directives
+from docs_conf.conf import *
+
+branch = 'latest'
+doc_url = 'https://docs.onap.org/projects'
+master_doc = 'index'
+
+intersphinx_mapping = {}
+
+# Latest (change to branch)
+intersphinx_mapping['onap-cps'] = ('{}/onap-cps/en/%s'.format(doc_url) % branch, None)
+
+linkcheck_ignore = [
+    'http://localhost',
+    'https://example.com',
+    'about:config',
+    # this URL is not directly reachable and must be configured in the system hosts file.
+    'https://portal.api.simpledemo.onap.org:30225/ONAPPORTAL/login.htm',
+    # anchor issues
+    'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#.*',
+    'https://docs.linuxfoundation.org/docs/communitybridge/easycla/contributors/contribute-to-a-gerrit-project#.*',
+    'https://docs.onap.org/projects/onap-integration/en/latest/docs_robot.html#docs-robot',
+    'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#docs-usecases-release',
+    'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases.html#docs-usecases',
+    'https://docs.onap.org/projects/onap-integration/en/latest/usecases/release_non_functional_requirements.html#release-non-functional-requirements',
+]
+
+
+html_last_updated_fmt = '%d-%b-%y %H:%M'
+
+
+def setup(app):
+    app.add_css_file("css/ribbon.css")
+
+
+needs_extra_options = {
+    "target": directives.unchanged,
+    "keyword": directives.unchanged,
+    "introduced": directives.unchanged,
+    "updated": directives.unchanged,
+    "impacts": directives.unchanged,
+    "validation_mode": directives.unchanged,
+    "validated_by": directives.unchanged,
+    "test": directives.unchanged,
+    "test_case": directives.unchanged,
+    "test_file": directives.unchanged,
+    "notes": directives.unchanged,
+}
+
+needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+"
+needs_id_required = True
+needs_title_optional = True
+
+needs_template_collapse = """
+.. _{{id}}:
+
+{% if hide == false -%}
+.. role:: needs_tag
+.. role:: needs_status
+.. role:: needs_type
+.. role:: needs_id
+.. role:: needs_title
+
+.. rst-class:: need
+.. rst-class:: need_{{type_name}}
+
+.. container:: need
+
+    `{{id}}` - {{content|indent(4)}}
+
+    .. container:: toggle
+
+        .. container:: header
+
+            Details
+
+{% if status and  status|upper != "NONE" and not hide_status %}        | status: :needs_status:`{{status}}`{% endif %}
+{% if tags and not hide_tags %}        | tags: :needs_tag:`{{tags|join("` :needs_tag:`")}}`{% endif %}
+{% if keyword %}        | keyword: `{{keyword}}` {% endif %}
+{% if target %}        | target: `{{target}}` {% endif %}
+{% if introduced %}        | introduced: `{{introduced}}` {% endif %}
+{% if updated %}        | updated: `{{updated}}` {% endif %}
+{% if impacts %}        | impacts: `{{impacts}}` {% endif %}
+{% if validation_mode %}        | validation mode: `{{validation_mode}}` {% endif %}
+{% if validated_by %}        | validated by: `{{validated_by}}` {% endif %}
+{% if test %}        | test: `{{test}}` {% endif %}
+{% if test_case %}        | test case: {{test_case}} {% endif %}
+{% if test_file %}        | test file: `{{test_file}}` {% endif %}
+{% if notes %}        | notes: `{{notes}}` {% endif %}
+        | children: :need_incoming:`{{id}}`
+        | parents: :need_outgoing:`{{id}}`
+{% endif -%}
+"""
diff --git a/docs/conf.yaml b/docs/conf.yaml
new file mode 100644
index 0000000..8425e08
--- /dev/null
+++ b/docs/conf.yaml
@@ -0,0 +1,25 @@
+#  ============LICENSE_START=======================================================
+#  Copyright (C) 2021 Nordix Foundation
+#  ================================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#  ============LICENSE_END=========================================================
+
+---
+project_cfg: onap
+project: onap
+
+# Change this to ReleaseBranchName to modify the header
+default-version: latest
+#
diff --git a/docs/deployment.rst b/docs/deployment.rst
new file mode 100644
index 0000000..0f53898
--- /dev/null
+++ b/docs/deployment.rst
@@ -0,0 +1,15 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+
+.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
+.. _deployment:
+
+
+DMI Plugin Deployment
+#####################
+
+.. warning:: draft
+
+.. toctree::
+   :maxdepth: 1
\ No newline at end of file
diff --git a/docs/design.rst b/docs/design.rst
new file mode 100644
index 0000000..e65c5ae
--- /dev/null
+++ b/docs/design.rst
@@ -0,0 +1,40 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+
+.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
+.. _design:
+
+
+DMI Plugin Design
+#################
+
+.. warning:: draft
+
+.. toctree::
+   :maxdepth: 1
+
+Offered APIs
+============
+
+The DMI Plugin supports the public APIs listed in the link below:
+
+:download:`DMI Rest OpenApi Specification <openapi/openapi.yml>`
+
+Exposed API
+-----------
+
+The standard for API definition in the RESTful API world is the OpenAPI Specification (OAS).
+The OAS 3, which is based on the original "Swagger Specification", is being widely used in API developments.
+
+Specification can be accessed using following URI:
+
+.. code-block:: bash
+
+  “http://<hostname>:<port>/v3/api-docs?group=dmi-plugin-docket”
+
+DMI Plugin CM Handles
+=====================
+
+Several DMI Plugin APIs use the cm-handle parameter.
+The DMI Plugin CM Handles are described in detail in :doc:`dmi-plugin-cm-handle`.
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..bc299ae
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,41 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+
+.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
+.. _dmi:
+
+.. THIS IS USED INTERNALLY IN CPS ONLY
+.. _dmi-framework-doc:
+
+DMI Plugin Documentation for the Istanbul-R9 Release
+----------------------------------------------------
+
+.. warning:: draft
+
+.. toctree::
+   :maxdepth: 1
+
+   overview.rst
+   architecture.rst
+   design.rst
+   modeling.rst
+   deployment.rst
+   release-notes.rst
+
+
+CPS-Core Documentation for the Istanbul-R9 Release
+---------------------------------------------------------
+
+.. toctree::
+   :maxdepth: 3
+
+* `CPS Core(placeholder)  `_
+
+CPS-Temporal Documentation for the Istanbul-R9 Release
+------------------------------------------------------
+
+.. toctree::
+   :maxdepth: 1
+
+* `CPS Temporal(placeholder)  `_
\ No newline at end of file
diff --git a/docs/modeling.rst b/docs/modeling.rst
new file mode 100644
index 0000000..63f25b7
--- /dev/null
+++ b/docs/modeling.rst
@@ -0,0 +1,18 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+.. _modeling:
+
+DMI Plugin Modeling
+###################
+
+.. warning:: draft
+
+.. toctree::
+   :maxdepth: 1
+
+Basic Concepts
+==============
+
+.. image:: _static/dmi-plugin-modeling-concepts.png
+   :alt: Basic entities relationship
diff --git a/docs/openapi/openapi.yaml b/docs/openapi/openapi.yaml
new file mode 100644
index 0000000..082df22
--- /dev/null
+++ b/docs/openapi/openapi.yaml
@@ -0,0 +1,428 @@
+openapi: 3.0.1
+info:
+  title: NCMP DMI Plugin
+  description: Adds Data Model Inventory Registry capability for ONAP
+  version: 1.0.0
+servers:
+- url: //localhost:8088/
+tags:
+- name: dmi-plugin-internal
+  description: DMI plugin internal rest apis
+- name: dmi-plugin
+  description: DMI plugin rest apis
+paths:
+  /v1/ch/{cmHandle}/modules:
+    post:
+      tags:
+      - dmi-plugin
+      summary: Get all modules for cm handle
+      description: Get all modules for given cm handle
+      operationId: getModulesForCmHandle
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The cm handle to fetch all the modules
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ModuleSet'
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+  /v1/inventory/cmHandles:
+    post:
+      tags:
+      - dmi-plugin-internal
+      summary: register given list of cm handles (internal use only)
+      description: register given list of cm handles (internal use only)
+      operationId: registerCmHandles
+      requestBody:
+        description: list of cm handles
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/CmHandles'
+        required: true
+      responses:
+        "201":
+          description: Created
+          content:
+            text/plain:
+              schema:
+                type: string
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+      x-api-audience: component-internal
+  /v1/ch/{cmHandle}/moduleResources:
+    post:
+      tags:
+      - dmi-plugin
+      summary: Retrieve module resources
+      description: Retrieve module resources for one or more modules
+      operationId: retrieveModuleResources
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The identifier for a network function, network element, subnetwork,
+          or any other cm object by managed Network CM Proxy
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DmiReadRequestBody'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}:
+    put:
+      tags:
+      - dmi-plugin
+      summary: Get resource data from passthrough-operational for cm handle
+      description: Get resource data from passthrough-operational for cm handle
+      operationId: getResourceDataOperationalForCmHandle
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The identifier for a network function, network element, subnetwork,
+          or any other cm object by managed Network CM Proxy
+        required: true
+        schema:
+          type: string
+      - name: resourceIdentifier
+        in: path
+        description: Resource identifier to get/set the resource data
+        required: true
+        schema:
+          type: string
+      - name: accept
+        in: header
+        description: Accept parameter for response, if accept parameter is null, that
+          means client can accept any format.
+        schema:
+          type: string
+          enum:
+          - application/json
+          - application/yang-data+json
+      - name: fields
+        in: query
+        description: Fields parameter to filter resource
+        required: false
+        schema:
+          type: string
+      - name: depth
+        in: query
+        description: Depth parameter for response
+        required: false
+        schema:
+          minimum: 1
+          type: integer
+      requestBody:
+        description: Operational body
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataAccessReadRequest'
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+  /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}:
+    put:
+      tags:
+      - dmi-plugin
+      summary: Get resource data from passthrough-running for cm handle
+      description: Get resource data from passthrough-running for cm handle
+      operationId: getResourceDataPassthroughRunningForCmHandle
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The identifier for a network function, network element, subnetwork,
+          or any other cm object by managed Network CM Proxy
+        required: true
+        schema:
+          type: string
+      - name: resourceIdentifier
+        in: path
+        description: Resource identifier to get/set the resource data
+        required: true
+        schema:
+          type: string
+      - name: accept
+        in: header
+        description: Accept parameter for response, if accept parameter is null, that
+          means client can accept any format.
+        schema:
+          type: string
+          enum:
+          - application/json
+          - application/yang-data+json
+      - name: fields
+        in: query
+        description: Fields parameter to filter resource
+        required: false
+        schema:
+          type: string
+      - name: depth
+        in: query
+        description: Depth parameter for response
+        required: false
+        schema:
+          minimum: 1
+          type: integer
+      requestBody:
+        description: Operational body
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataAccessReadRequest'
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+    post:
+      tags:
+      - dmi-plugin
+      summary: Write data for a cmHandle
+      description: Write data for a cmHandle using passthrough-running
+      operationId: writeDataByPassthroughRunningForCmHandle
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The identifier for a network function, network element, subnetwork,
+          or any other cm object by managed Network CM Proxy
+        required: true
+        schema:
+          type: string
+      - name: resourceIdentifier
+        in: path
+        description: Resource identifier to get/set the resource data
+        required: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataAccessWriteRequest'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                type: object
+        "400":
+          description: Bad Request
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "401":
+          description: Unauthorized
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+        "403":
+          description: Forbidden
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/ErrorMessage'
+components:
+  schemas:
+    ModuleSet:
+      type: object
+      properties:
+        schemas:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleSet_schemas'
+    ErrorMessage:
+      title: Error
+      type: object
+      properties:
+        status:
+          type: string
+        message:
+          type: string
+        details:
+          type: string
+    CmHandles:
+      type: object
+      properties:
+        cmHandles:
+          type: array
+          items:
+            type: string
+    DmiReadRequestBody:
+      type: object
+      properties:
+        operation:
+          type: string
+          enum:
+          - read
+        data:
+          $ref: '#/components/schemas/DmiReadRequestBody_data'
+        cmHandleProperties:
+          type: object
+          additionalProperties:
+            type: string
+            example: system-001
+    DataAccessReadRequest:
+      type: object
+      properties:
+        operation:
+          type: string
+          enum:
+          - read
+        cmHandleProperties:
+          type: object
+          additionalProperties:
+            type: string
+    DataAccessWriteRequest:
+      type: object
+      properties:
+        operation:
+          type: string
+          enum:
+          - create
+        dataType:
+          type: string
+        data:
+          type: object
+        cmHandleProperties:
+          type: object
+          additionalProperties:
+            type: string
+    ModuleSet_schemas:
+      type: object
+      properties:
+        moduleName:
+          type: string
+        revision:
+          type: string
+        namespace:
+          type: string
+    DmiReadRequestBody_data_modules:
+      type: object
+      properties:
+        name:
+          type: string
+        revision:
+          type: string
+    DmiReadRequestBody_data:
+      type: object
+      properties:
+        modules:
+          type: array
+          items:
+            $ref: '#/components/schemas/DmiReadRequestBody_data_modules'
diff --git a/docs/overview.rst b/docs/overview.rst
new file mode 100644
index 0000000..c2e670c
--- /dev/null
+++ b/docs/overview.rst
@@ -0,0 +1,21 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2021 Nordix Foundation
+.. _overview:
+
+DMI Plugin Overview
+===================
+
+.. warning:: draft
+
+The DMI Plugin is used to allow the DMI API's access to the corresponding NCMP API's.
+
+DMI Plugin Interface
+--------------------
+
+Implementation Proposal: `DMI Plugin Interface <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+
+Contact Information
+-------------------
+
+onap-discuss@lists.onap.org
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
new file mode 100644
index 0000000..8e9a91a
--- /dev/null
+++ b/docs/release-notes.rst
@@ -0,0 +1,129 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING
+.. _release_notes:
+
+
+
+========================
+DMI Plugin Release Notes
+========================
+
+.. warning:: draft
+
+.. contents::
+    :depth: 2
+..
+
+..      ========================
+..      * * *   ISTANBUL   * * *
+..      ========================
+
+Version: 1.0.0
+==============
+
+Abstract
+--------
+
+This document provides the release notes for Istanbul release.
+
+Release Data
+------------
+
++--------------------------------------+--------------------------------------------------------+
+| **CPS Project**                      |                                                        |
+|                                      |                                                        |
++--------------------------------------+--------------------------------------------------------+
+| **Docker images**                    |  placeholder                                           |
+|                                      |                                                        |
++--------------------------------------+--------------------------------------------------------+
+| **Release designation**              | 1.0.0 Istanbul                                         |
+|                                      |                                                        |
++--------------------------------------+--------------------------------------------------------+
+| **Release date**                     | 2021-14-10                                             |
+|                                      |                                                        |
++--------------------------------------+--------------------------------------------------------+
+
+Features
+--------
+* Implement plugin registration.
+* Retrieve data from cmHandles using ncmp-datastores passthorugh.
+* Retrieve Yang Resources from one or more modules of a  CM Handle.
+
+.. _istanbul_deliverable:
+
+Deliverables
+------------
+
+Software Deliverables
+
+.. csv-table::
+   :header: "Repository", "SubModules", "Version & Docker Image (if applicable)"
+   :widths: auto
+
+   "cps/ncmp-dmi-plugin", "", "placeholder"
+
+Bug Fixes
+---------
+
+This document provides the release notes for Istanbul release.
+
+Summary
+-------
+
+Following DMI plugin components are available with default ONAP/DMI-plugin installation.
+
+
+    * Platform components
+
+    * Service components
+
+    * Additional resources that CPS utilizes deployed using ONAP common charts
+
+Below service components (mS) are available to be deployed on-demand.
+
+Under OOM (Kubernetes) all CPS component containers are deployed as Kubernetes Pods/Deployments/Services into Kubernetes cluster.
+
+Known Limitations, Issues and Workarounds
+-----------------------------------------
+
+*System Limitations*
+
+*Known Vulnerabilities*
+
+None
+
+*Workarounds*
+
+Security Notes
+--------------
+
+*Fixed Security Issues*
+
+*Known Security Issues*
+
+Test Results
+------------
+    * `Integration tests`
+
+References
+----------
+
+For more information on the ONAP Honolulu release, please see:
+
+#. `ONAP Home Page`_
+#. `ONAP Documentation`_
+#. `ONAP Release Downloads`_
+#. `ONAP Wiki Page`_
+
+
+.. _`ONAP Home Page`: https://www.onap.org
+.. _`ONAP Wiki Page`: https://wiki.onap.org
+.. _`ONAP Documentation`: https://docs.onap.org
+.. _`ONAP Release Downloads`: https://git.onap.org
+
+Quick Links:
+
+        - `Dmi Plugin implementation page <https://wiki.onap.org/display/DW/CPS-390+Spike%3A+Define+and+Agree+DMI+Plugin+REST+Interface>`_
+        - `Passing Badge information for CPS <https://bestpractices.coreinfrastructure.org/en/projects/4398>`_
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
new file mode 100644
index 0000000..b3188dd
--- /dev/null
+++ b/docs/requirements-docs.txt
@@ -0,0 +1,15 @@
+tox
+Sphinx
+doc8
+docutils
+setuptools
+six
+sphinx_rtd_theme>=0.4.3
+sphinxcontrib-blockdiag
+sphinxcontrib-needs>=0.2.3
+sphinxcontrib-nwdiag
+sphinxcontrib-seqdiag
+sphinxcontrib-swaggerdoc
+sphinxcontrib-plantuml
+sphinx_bootstrap_theme
+lfdocs-conf
diff --git a/docs/tox.ini b/docs/tox.ini
new file mode 100644
index 0000000..edac8c3
--- /dev/null
+++ b/docs/tox.ini
@@ -0,0 +1,22 @@
+[tox]
+minversion = 1.6
+envlist = docs,
+skipsdist = true
+
+[testenv:docs]
+basepython = python3
+deps = -r{toxinidir}/requirements-docs.txt
+commands =
+    sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html
+    echo "Generated docs available in {toxinidir}/_build/html"
+whitelist_externals =
+    echo
+    git
+    sh
+
+[testenv:docs-linkcheck]
+basepython = python3
+#deps = -r{toxinidir}/requirements-docs.txt
+commands = echo "Link Checking not enforced"
+#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck
+whitelist_externals = echo
diff --git a/pom.xml b/pom.xml
index 7204244..c63cc42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,108 @@
 
   SPDX-License-Identifier: Apache-2.0
   ============LICENSE_END=========================================================
--->
+--><!DOCTYPE project [
+        <!ELEMENT project (modelVersion|parent|organization|groupId|artifactId|version|name|description|properties|dependencyManagement|dependencies|build|pluginManagement)*>
+        <!ATTLIST project
+                xmlns CDATA #REQUIRED
+                xmlns:xsi CDATA #REQUIRED
+                xsi:schemaLocation CDATA #REQUIRED>
+        <!ELEMENT modelVersion (#PCDATA)>
+        <!ELEMENT parent (groupId|artifactId|version|relativePath)*>
+        <!ELEMENT groupId (#PCDATA)>
+        <!ELEMENT artifactId (#PCDATA)>
+        <!ELEMENT version (#PCDATA)>
+        <!ELEMENT relativePath (#PCDATA)>
+        <!ELEMENT organization (name|url)*>
+        <!ELEMENT name (#PCDATA)>
+        <!ELEMENT url (#PCDATA)>
+        <!ELEMENT description (#PCDATA)>
+        <!ELEMENT properties (app|base.image|cps.version|image.tag|jacoco.minimum.coverage|maven.build.timestamp.format|project.build.sourceEncoding|image.name)*>
+        <!ELEMENT app (#PCDATA)>
+        <!ELEMENT base.image (#PCDATA)>
+        <!ELEMENT cps.version (#PCDATA)>
+        <!ELEMENT image.tag (#PCDATA)>
+        <!ELEMENT jacoco.minimum.coverage (#PCDATA)>
+        <!ELEMENT maven.build.timestamp.format (#PCDATA)>
+        <!ELEMENT project.build.sourceEncoding (#PCDATA)>
+        <!ELEMENT dependencyManagement (dependencies)*>
+        <!ELEMENT dependencies (dependency)*>
+        <!ELEMENT dependency (groupId|artifactId|version|type|scope|exclusions)*>
+        <!ELEMENT type (#PCDATA)>
+        <!ELEMENT scope (#PCDATA)>
+        <!ELEMENT exclusions (exclusion)*>
+        <!ELEMENT exclusion (groupId|artifactId)*>
+        <!ELEMENT build (resources|plugins|plugin)*>
+        <!ELEMENT resources (resource)*>
+        <!ELEMENT resource (directory|filtering|includes|targetPath)*>
+        <!ELEMENT directory (#PCDATA)>
+        <!ELEMENT filtering (#PCDATA)>
+        <!ELEMENT includes (include)*>
+        <!ELEMENT include (#PCDATA)>
+        <!ELEMENT targetPath (#PCDATA)>
+        <!ELEMENT plugins (plugin)*>
+        <!ELEMENT plugin (groupId|artifactId|version|executions|configuration|dependencies)*>
+        <!ELEMENT executions (execution)*>
+        <!ELEMENT execution (goals|configuration|id|phase)*>
+        <!ELEMENT goals (goal)*>
+        <!ELEMENT goal (#PCDATA)>
+        <!ELEMENT configuration (inputSpec|language|generateSupportingFiles|apiPackage|modelPackage|configOptions|argLine|includes|excludes|configLocation|includeResources|includeTestSourceDirectory|includeTestResources|sourceDirectories|consoleOutput|violationSeverity|failOnViolation|plugins|effort|threshold|failOnError|excludeFilterFile|xmlOutput|xmlOutputDirectory|dataFile|rules|dataFileIncludes|container|from|to)*>
+        <!ELEMENT inputSpec (#PCDATA)>
+        <!ELEMENT language (#PCDATA)>
+        <!ELEMENT generateSupportingFiles (#PCDATA)>
+        <!ELEMENT apiPackage (#PCDATA)>
+        <!ELEMENT modelPackage (#PCDATA)>
+        <!ELEMENT configOptions (sourceFolder|dateLibrary|interfaceOnly|useTags)*>
+        <!ELEMENT sourceFolder (#PCDATA)>
+        <!ELEMENT dateLibrary (#PCDATA)>
+        <!ELEMENT interfaceOnly (#PCDATA)>
+        <!ELEMENT useTags (#PCDATA)>
+        <!ELEMENT id (#PCDATA)>
+        <!ELEMENT phase (#PCDATA)>
+        <!ELEMENT argLine (#PCDATA)>
+        <!ELEMENT excludes (exclude)*>
+        <!ELEMENT exclude (#PCDATA)>
+        <!ELEMENT configLocation (#PCDATA)>
+        <!ELEMENT includeResources (#PCDATA)>
+        <!ELEMENT includeTestSourceDirectory (#PCDATA)>
+        <!ELEMENT includeTestResources (#PCDATA)>
+        <!ELEMENT sourceDirectories (sourceDirectory)*>
+        <!ELEMENT sourceDirectory (#PCDATA)>
+        <!ELEMENT consoleOutput (#PCDATA)>
+        <!ELEMENT violationSeverity (#PCDATA)>
+        <!ELEMENT failOnViolation (#PCDATA)>
+        <!ELEMENT effort (#PCDATA)>
+        <!ELEMENT threshold (#PCDATA)>
+        <!ELEMENT failOnError (#PCDATA)>
+        <!ELEMENT excludeFilterFile (#PCDATA)>
+        <!ELEMENT xmlOutput (#PCDATA)>
+        <!ELEMENT xmlOutputDirectory (#PCDATA)>
+        <!ELEMENT dataFile (#PCDATA)>
+        <!ELEMENT rules (rule)*>
+        <!ELEMENT rule (element|limits)*>
+        <!ELEMENT element (#PCDATA)>
+        <!ELEMENT limits (limit)*>
+        <!ELEMENT limit (counter|value|minimum)*>
+        <!ELEMENT counter (#PCDATA)>
+        <!ELEMENT value (#PCDATA)>
+        <!ELEMENT minimum (#PCDATA)>
+        <!ELEMENT dataFileIncludes (fileInclude)*>
+        <!ELEMENT fileInclude (#PCDATA)>
+        <!ELEMENT pluginManagement (plugins)*>
+        <!ELEMENT container (mainClass|creationTime)*>
+        <!ELEMENT mainClass (#PCDATA)>
+        <!ELEMENT creationTime (#PCDATA)>
+        <!ELEMENT from (image)*>
+        <!ELEMENT image (#PCDATA)>
+        <!ELEMENT to (tags|image)*>
+        <!ELEMENT tags (tag)*>
+        <!ELEMENT tag (#PCDATA)>
+        <!ELEMENT profiles (profile)*>
+        <!ELEMENT profile (id|activation|properties|build)*>
+        <!ELEMENT activation (activeByDefault)*>
+        <!ELEMENT activeByDefault (#PCDATA)>
+        <!ELEMENT image.name (#PCDATA)>
+        ]>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -177,6 +278,17 @@
                             </configOptions>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>openapi-yaml-gen</id>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <phase>compile</phase>
+                        <configuration>
+                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
+                            <language>openapi-yaml</language>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
             <plugin>
@@ -414,6 +526,29 @@
                         </execution>
                     </executions>
                 </plugin>
+                <plugin>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <executions>
+                        <execution>
+                            <id>copy-resources</id>
+                            <phase>compile</phase>
+                            <goals>
+                                <goal>copy-resources</goal>
+                            </goals>
+                            <configuration>
+                                <outputDirectory>${project.basedir}/docs/openapi/</outputDirectory>
+                                <resources>
+                                    <resource>
+                                        <directory>${project.basedir}/target/generated-sources/swagger/</directory>
+                                        <includes>
+                                            <include>openapi.yaml</include>
+                                        </includes>
+                                    </resource>
+                                </resources>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>