Provide complete openapi.yml in read the docs

- Seperate openapi.yml for code gen and read the docs
- Added few env varaibles in docker-compose.yml

Issue-ID: CPS-733
Signed-off-by: Renu Kumari <renu.kumari@bell.ca>
Change-Id: Ibda007c40396436a5adce137d9f69806100253dc
diff --git a/docker-compose/docker-compose.yml b/docker-compose/docker-compose.yml
index a9229e9..bec9bfe 100755
--- a/docker-compose/docker-compose.yml
+++ b/docker-compose/docker-compose.yml
@@ -37,4 +37,7 @@
       SDNC_PORT: ${SDNC_PORT:-8181}
       SDNC_USERNAME: ${SDNC_USERNAME:-admin}
       SDNC_PASSWORD: ${SDNC_PASSWORD:-Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U}
+      DMI_SERVICE_URL: ${DMI_SERVICE_URL:-http://ncmp-dmi-plugin:8783}
+      DMI_USERNAME: "cpsuser"
+      DMI_PASSWORD: "cpsr0cks!"
     restart: unless-stopped
diff --git a/docs/api/swagger/openapi.yaml b/docs/api/swagger/openapi.yaml
new file mode 100644
index 0000000..750091b
--- /dev/null
+++ b/docs/api/swagger/openapi.yaml
@@ -0,0 +1,464 @@
+openapi: 3.0.1
+info:
+  title: NCMP DMI Plugin
+  description: Adds Data Model Inventory Registry capability for ONAP
+  version: 1.0.0
+servers:
+- url: /dmi
+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: getModuleReferences
+      parameters:
+      - name: cmHandle
+        in: path
+        description: The cm handle to fetch all the modules
+        required: true
+        style: simple
+        explode: false
+        schema:
+          type: string
+      requestBody:
+        description: Operational body
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/ModuleReferencesRequest'
+      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/ModuleResourcesReadRequest'
+        required: true
+      responses:
+        "200":
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: '#/components/schemas/YangResources'
+        "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:
+    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: query
+        description: Resource identifier to get/set the resource data
+        required: true
+        allowReserved: 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: options
+        in: query
+        description: options parameter in query, it is mandatory to wrap key(s)=value(s)
+          in parenthesis'()'.
+        required: false
+        allowReserved: true
+        schema:
+          type: string
+        examples:
+          sample1:
+            value:
+              options: (key1=value1,key2=value2)
+          sample2:
+            value:
+              options: (key1=value1,key2=value1/value2)
+          sample3:
+            value:
+              options: (key1=10,key2=value2,key3=[val31,val32])
+      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:
+    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: query
+        description: Resource identifier to get/set the resource data
+        required: true
+        allowReserved: 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: options
+        in: query
+        description: options parameter in query, it is mandatory to wrap key(s)=value(s)
+          in parenthesis'()'.
+        required: false
+        allowReserved: true
+        schema:
+          type: string
+        examples:
+          sample1:
+            value:
+              options: (key1=value1,key2=value2)
+          sample2:
+            value:
+              options: (key1=value1,key2=value1/value2)
+          sample3:
+            value:
+              options: (key1=10,key2=value2,key3=[val31,val32])
+      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: query
+        description: Resource identifier to get/set the resource data
+        required: true
+        allowReserved: true
+        schema:
+          type: string
+      requestBody:
+        content:
+          application/json:
+            schema:
+              $ref: '#/components/schemas/DataAccessWriteRequest'
+        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'
+components:
+  schemas:
+    ModuleReferencesRequest:
+      type: object
+      properties:
+        cmHandleProperties:
+          $ref: '#/components/schemas/cmHandleProperties'
+    cmHandleProperties:
+      type: object
+      additionalProperties:
+        type: string
+        example: '{"prop1":"value1","prop2":"value2"}'
+    ModuleSet:
+      type: object
+      properties:
+        schemas:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleSet_schemas'
+    revision:
+      type: string
+      example: someRevision
+    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
+    ModuleResourcesReadRequest:
+      type: object
+      properties:
+        data:
+          $ref: '#/components/schemas/ModuleResourcesReadRequest_data'
+        cmHandleProperties:
+          $ref: '#/components/schemas/cmHandleProperties'
+    name:
+      type: string
+      example: someName
+    YangResources:
+      type: array
+      items:
+        $ref: '#/components/schemas/YangResource'
+    YangResource:
+      properties:
+        yangSource:
+          type: string
+        moduleName:
+          type: string
+        revision:
+          $ref: '#/components/schemas/revision'
+    DataAccessReadRequest:
+      type: object
+      properties:
+        operation:
+          type: string
+          enum:
+          - read
+        cmHandleProperties:
+          $ref: '#/components/schemas/cmHandleProperties'
+    DataAccessWriteRequest:
+      type: object
+      properties:
+        operation:
+          type: string
+          enum:
+          - create
+        dataType:
+          type: string
+        data:
+          type: string
+        cmHandleProperties:
+          $ref: '#/components/schemas/cmHandleProperties'
+    ModuleSet_schemas:
+      type: object
+      properties:
+        moduleName:
+          type: string
+        revision:
+          $ref: '#/components/schemas/revision'
+        namespace:
+          type: string
+    ModuleResourcesReadRequest_data_modules:
+      type: object
+      properties:
+        name:
+          $ref: '#/components/schemas/name'
+        revision:
+          $ref: '#/components/schemas/revision'
+    ModuleResourcesReadRequest_data:
+      type: object
+      properties:
+        modules:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleResourcesReadRequest_data_modules'
diff --git a/docs/design.rst b/docs/design.rst
index d0d4b87..9326fd3 100644
--- a/docs/design.rst
+++ b/docs/design.rst
@@ -17,7 +17,7 @@
 
 The DMI-Plugin supports the public APIs listed in the link below:
 
-:download:`DMI Rest OpenApi Specification <openapi/openapi.yaml>`
+:download:`DMI Rest OpenApi Specification <api/swagger/openapi.yaml>`
 
 View Offered APIs
 -----------------
diff --git a/docs/openapi/components.yml b/openapi/components.yml
similarity index 100%
rename from docs/openapi/components.yml
rename to openapi/components.yml
diff --git a/docs/openapi/openapi.yml b/openapi/openapi.yml
similarity index 99%
rename from docs/openapi/openapi.yml
rename to openapi/openapi.yml
index 83c05ab..0f43f9a 100644
--- a/docs/openapi/openapi.yml
+++ b/openapi/openapi.yml
@@ -22,7 +22,7 @@
   description: Adds Data Model Inventory Registry capability for ONAP
   version: "1.0.0"
 servers:
-  - url: //localhost:8088/
+  - url: /dmi
 tags:
   - name: dmi-plugin-internal
     description: DMI plugin internal rest apis
diff --git a/pom.xml b/pom.xml
index 03344db..2ac674c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,7 +164,7 @@
                             <goal>generate</goal>
                         </goals>
                         <configuration>
-                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
+                            <inputSpec>${project.basedir}/openapi/openapi.yml</inputSpec>
                             <language>spring</language>
                             <generateSupportingFiles>false</generateSupportingFiles>
                             <apiPackage>org.onap.cps.ncmp.dmi.rest.api</apiPackage>
@@ -184,7 +184,7 @@
                         </goals>
                         <phase>compile</phase>
                         <configuration>
-                            <inputSpec>${project.basedir}/docs/openapi/openapi.yml</inputSpec>
+                            <inputSpec>${project.basedir}/openapi/openapi.yml</inputSpec>
                             <language>openapi-yaml</language>
                         </configuration>
                     </execution>