Docs: Update all API docs with example
[pti/o2.git] / o2ims / views / api_ns.py
index 3fbdc18..5f3cf23 100644 (file)
-from flask_restx import Namespace
+# Copyright (C) 2021-2022 Wind River Systems, Inc.
+#
+#  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.
 
+from flask import request
+from flask_restx import Resource, fields
 
-api_ims_inventory_v1 = Namespace(
-    "O2IMS_Inventory",
-    description='IMS Inventory related operations.')
+from o2common.views.route import O2Namespace
 
-api_provision_v1 = Namespace(
+
+api_ims_inventory = O2Namespace(
+    "O2IMS-InfrastructureInventory",
+    description='O2 IMS Inventory related operations.')
+
+api_provision_v1 = O2Namespace(
     "PROVISION",
     description='Provision related operations.')
 
-api_monitoring_v1 = Namespace(
-    "O2IMS_InfrastructureMonitoring",
+api_ims_monitoring = O2Namespace(
+    "O2IMS-InfrastructureMonitoring",
     description='O2 IMS Monitoring related operations.')
+
+
+@api_ims_inventory.route('/api_versions')
+class InventoryVersion(Resource):
+    api_version = api_ims_inventory.model(
+        'InventoryApiVersionStructure',
+        {
+            'version': fields.String(
+                required=True,
+                example='1.0.0',
+                description='Identifies a supported version.'
+            )
+        },
+        mask='{version,}'
+    )
+    model = api_ims_inventory.model(
+        "InventoryAPIVersion",
+        {
+            'uriPrefix': fields.String(
+                required=True,
+                example='https://128.224.115.36:30205/' +
+                'o2ims-infrastructureInventory',
+                description='Specifies the URI prefix for the API'),
+            'apiVersions': fields.List(
+                fields.Nested(api_version),
+                example=[{'version': '1.0.0'}],
+                description='Version(s) supported for the API ' +
+                'signaled by the uriPrefix attribute.'),
+        },
+        mask='{uriPrefix,apiVersions}'
+    )
+
+    @api_ims_inventory.doc('Get Inventory Version')
+    @api_ims_inventory.marshal_with(model)
+    def get(self):
+        return {
+            'uriPrefix': request.base_url.rsplit('/', 1)[0],
+            'apiVersions': [{
+                'version': '1.0.0',
+                # 'isDeprecated': 'False',
+                # 'retirementDate': ''
+            }]
+        }
+
+
+@api_ims_monitoring.route('/api_versions')
+class MonitoringVersion(Resource):
+    api_version = api_ims_inventory.model(
+        'MonitoringApiVersionStructure',
+        {
+            'version': fields.String(
+                required=True,
+                example='1.0.0',
+                description='Identifies a supported version.'
+            )
+        },
+        mask='{version,}'
+    )
+    model = api_ims_inventory.model(
+        "MonitoringAPIVersion",
+        {
+            'uriPrefix': fields.String(
+                required=True,
+                example='https://128.224.115.36:30205/' +
+                'o2ims-infrastructureMonitoring',
+                description='Specifies the URI prefix for the API'),
+            'apiVersions': fields.List(
+                fields.Nested(api_version),
+                example=[{'version': '1.0.0'}],
+                description='Version(s) supported for the API ' +
+                'signaled by the uriPrefix attribute.'),
+        },
+        mask='{uriPrefix,apiVersions}'
+    )
+
+    @api_ims_monitoring.doc('Get Monitoring Version')
+    @api_ims_monitoring.marshal_with(model)
+    def get(self):
+        return {
+            'uriPrefix': request.base_url.rsplit('/', 1)[0],
+            'apiVersions': [{
+                'version': '1.0.0',
+                # 'isDeprecated': 'False',
+                # 'retirementDate': ''
+            }]
+        }