[BUG] Fix for Swagger UI generation
[cps.git] / cps-rest / docs / openapi / components.yml
index 5a21a73..a3016ce 100644 (file)
+# ============LICENSE_START=======================================================
+# Copyright (c) 2021-2022 Bell Canada.
+# Modifications Copyright (C) 2021-2023 Nordix Foundation
+# Modifications Copyright (C) 2022-2023 TechMahindra Ltd.
+# Modifications Copyright (C) 2022 Deutsche Telekom AG
+# ================================================================================
+# 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=========================================================
+
 components:
   schemas:
+
+    AnchorDetails:
+      type: object
+      title: Anchor details by anchor Name
+      properties:
+        name:
+          type: string
+          example: my-anchor
+        dataspaceName:
+          type: string
+          example: my-dataspace
+        schemaSetName:
+          type: string
+          example: my-schema-set
+
+    DataspaceDetails:
+      type: object
+      title: Dataspace details by dataspace Name
+      properties:
+        name:
+          type: string
+          example: my-dataspace
+
     ErrorMessage:
       type: object
       title: Error
       properties:
         status:
           type: string
-          example: 400
         message:
           type: string
-          example: Dataspace not found
         details:
           type: string
-          example: Dataspace with name D1 does not exist.
 
     MultipartFile:
+      type: object
       required:
         - file
       properties:
-        multipartFile:
+        file:
           type: string
           description: multipartFile
           format: binary
-          example: http://example.com/examples/example.yang
+
+    ModuleReferences:
+      type: object
+      title: Module reference object
+      properties:
+        name:
+          type: string
+          example: my-module-reference-name
+        namespace:
+          type: string
+          example: my-module-reference-namespace
+        revision:
+          type: string
+          example: my-module-reference-revision
+
+    SchemaSetDetails:
+      type: object
+      title: Schema set details by dataspace and schemasetName
+      required:
+        - "moduleReferences"
+      properties:
+        dataspaceName:
+          type: string
+          example: my-dataspace
+        moduleReferences:
+          type: array
+          items:
+            $ref: '#/components/schemas/ModuleReferences'
+        name:
+          type: string
+          example: my-schema-set
+
+  examples:
+    dataSample:
+      value:
+        test:bookstore:
+          bookstore-name: Chapters
+          categories:
+            - code: 01
+              name: SciFi
+            - code: 02
+              name: kids
+    dataSampleXml:
+        value:
+          <stores xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+            <bookstore xmlns="org:onap:ccsdk:sample">
+              <bookstore-name>Chapters</bookstore-name>
+              <categories>
+                <code>1</code>
+                <name>SciFi</name>
+              </categories>
+            </bookstore>
+          </stores>
+    dataSampleAcrossAnchors:
+      value:
+        - anchorName: bookstore1
+          dataNode:
+            test:bookstore:
+              bookstore-name: Chapters
+              categories:
+                - code: 01
+                  name: SciFi
+                - code: 02
+                  name: kids
+        - anchorName: bookstore2
+          dataNode:
+            test:bookstore:
+              bookstore-name: Chapters
+              categories:
+                - code: 01
+                  name: SciFi
+                - code: 02
+                  name: kids
 
   parameters:
     dataspaceNameInQuery:
@@ -32,6 +146,7 @@ components:
       required: true
       schema:
         type: string
+        example: my-dataspace
     dataspaceNameInPath:
       name: dataspace-name
       in: path
@@ -39,6 +154,7 @@ components:
       required: true
       schema:
         type: string
+        example: my-dataspace
     anchorNameInPath:
       name: anchor-name
       in: path
@@ -46,6 +162,7 @@ components:
       required: true
       schema:
         type: string
+        example: my-anchor
     schemaSetNameInQuery:
       name: schema-set-name
       in: query
@@ -53,6 +170,7 @@ components:
       required: true
       schema:
         type: string
+        example: my-schema-set
     schemaSetNameInPath:
       name: schema-set-name
       in: path
@@ -60,6 +178,7 @@ components:
       required: true
       schema:
         type: string
+        example: my-schema-set
     anchorNameInQuery:
       name: anchor-name
       in: query
@@ -67,29 +186,45 @@ components:
       required: true
       schema:
         type: string
+        example: my-anchor
     xpathInQuery:
       name: xpath
       in: query
-      description: xpath
+      description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html
       required: false
       schema:
         type: string
         default: /
+      examples:
+        container xpath:
+          value: /shops/bookstore
+        list attributes xpath:
+          value: /shops/bookstore/categories[@code=1]
     requiredXpathInQuery:
       name: xpath
       in: query
-      description: xpath
+      description: For more details on xpath, please refer https://docs.onap.org/projects/onap-cps/en/latest/xpath.html
       required: true
       schema:
         type: string
+      examples:
+        container xpath:
+          value: /shops/bookstore
+        list attributes xpath:
+          value: /shops/bookstore/categories[@code=1]
     cpsPathInQuery:
       name: cps-path
       in: query
-      description: cps-path
+      description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html
       required: false
       schema:
         type: string
         default: /
+      examples:
+        container cps path:
+          value: //bookstore
+        list attributes cps path:
+          value: //categories[@code=1]
     includeDescendantsOptionInQuery:
       name: include-descendants
       in: query
@@ -98,6 +233,57 @@ components:
       schema:
         type: boolean
         default: false
+        example: false
+    observedTimestampInQuery:
+      name: observed-timestamp
+      in: query
+      description: observed-timestamp
+      required: false
+      schema:
+        type: string
+        example: '2021-03-21T00:10:34.030-0100'
+    apiVersionInPath:
+      name: apiVersion
+      in: path
+      description: apiVersion
+      required: true
+      schema:
+        type: string
+        enum: [v1, v2]
+        default: v2
+    contentTypeHeader:
+      name: Content-Type
+      in: header
+      description: Content type header
+      schema:
+        type: string
+        example: 'application/json'
+      required: true
+    descendantsInQuery:
+      name: descendants
+      in: query
+      description: Number of descendants to query. Allowed values are 'none', 'all', 'direct', 1 (for direct), -1 (for all), 0 (for none) and any positive number.
+      required: false
+      schema:
+        type: string
+        default: none
+        example: 3
+    pageIndexInQuery:
+      name: pageIndex
+      in: query
+      description: page index for pagination over anchors. It must be greater then zero if provided.
+      required: false
+      schema:
+        type: integer
+        example: 1
+    pageSizeInQuery:
+      name: pageSize
+      in: query
+      description: number of records (anchors) per page. It must be greater then zero if provided.
+      required: false
+      schema:
+        type: integer
+        example: 10
 
   responses:
     NotFound:
@@ -106,42 +292,78 @@ components:
         application/json:
           schema:
             $ref: '#/components/schemas/ErrorMessage'
+          example:
+            status: 404
+            message: Resource Not Found
+            details: The requested resource is not found
     Unauthorized:
       description: Unauthorized
       content:
         application/json:
           schema:
             $ref: '#/components/schemas/ErrorMessage'
+          example:
+            status: 401
+            message: Unauthorized request
+            details: This request is unauthorized
     Forbidden:
       description: Forbidden
       content:
         application/json:
           schema:
             $ref: '#/components/schemas/ErrorMessage'
+          example:
+            status: 403
+            message: Request Forbidden
+            details: This request is forbidden
     BadRequest:
       description: Bad Request
       content:
         application/json:
           schema:
             $ref: '#/components/schemas/ErrorMessage'
+          example:
+            status: 400
+            message: Bad Request
+            details: The provided request is not valid
     Conflict:
       description: Conflict
       content:
         application/json:
           schema:
             $ref: '#/components/schemas/ErrorMessage'
+          example:
+            status: 409
+            message: Conflicting request
+            details: The request cannot be processed as the resource is in use.
     Ok:
       description: OK
       content:
         application/json:
           schema:
             type: object
+          examples:
+            dataSample:
+              value: ""
     Created:
       description: Created
       content:
         text/plain:
           schema:
             type: string
+            example: my-resource
+    CreatedV2:
+      description: Created without response body
+    InternalServerError:
+      description: Internal Server Error
+      content:
+        application/json:
+          schema:
+            $ref: "#/components/schemas/ErrorMessage"
+          example:
+            status: 500
+            message: Internal Server Error
+            details: Internal Server Error occurred
     NoContent:
       description: No Content
       content: {}