Add a new API to return the list of undeployed xApps
[ric-plt/appmgr.git] / api / appmgr_rest_api.json
index 66250ae..9e8f076 100644 (file)
@@ -2,7 +2,7 @@
   "swagger": "2.0",
   "info": {
     "description": "This is a draft API for RIC appmgr",
-    "version": "0.0.11",
+    "version": "0.1.5",
     "title": "RIC appmgr",
     "license": {
       "name": "Apache 2.0",
   "host": "hostname",
   "basePath": "/ric/v1",
   "schemes": [
-    "https",
     "http"
   ],
   "paths": {
-    "/health": {
+    "/health/alive": {
       "get": {
-        "summary": "Health check of xApp Manager",
-        "operationId": "getHealth",
+        "summary": "Health check of xApp Manager - Liveness probe",
+        "tags": [
+          "health"
+        ],
+        "operationId": "getHealthAlive",
         "responses": {
           "200": {
             "description": "Status of xApp Manager is ok"
         }
       }
     },
+    "/health/ready": {
+      "get": {
+        "summary": "Readiness check of xApp Manager - Readiness probe",
+        "tags": [
+          "health"
+        ],
+        "operationId": "getHealthReady",
+        "responses": {
+          "200": {
+            "description": "xApp Manager is ready for service"
+          },
+          "503": {
+            "description": "xApp Manager is not ready for service"
+          }
+        }
+      }
+    },
     "/xapps": {
       "post": {
         "summary": "Deploy a xapp",
+        "tags": [
+          "xapp"
+        ],
         "operationId": "deployXapp",
         "consumes": [
           "application/json"
             "schema": {
               "type": "object",
               "required": [
-                "xAppName"
+                "name"
               ],
               "properties": {
-                "xAppName": {
-                  "type":"string",
-                  "description":"Name of the xApp",
+                "name": {
+                  "type": "string",
+                  "description": "Name of the xApp.",
+                  "example": "xapp-dummy"
+                },
+                "configName": {
+                  "type": "string",
+                  "description": "Name of the xApp configmap. Overrides the value given in Helm chart value file.",
+                  "example": "xapp-dummy-configmap"
+                },
+                "namespace": {
+                  "type": "string",
+                  "description": "Name of the namespace to which xApp is deployed. Overrides the value given in Helm chart value file.",
+                  "example": "ricxapps"
+                },
+                "serviceName": {
+                  "type": "string",
+                  "description": "Name of the service xApp is providing. Overrides the value given in Helm chart value file.",
+                  "example": "xapp-dummy-service"
+                },
+                "imageRepo": {
+                  "type": "string",
+                  "description": "Name of the docker repository xApp is located. Overrides the value given in Helm chart value file.",
+                  "example": "xapprepo"
+                },
+                "hostname": {
+                  "type": "string",
+                  "description": "Hostname for the pod. Used by messaging library. Overrides the value given in Helm chart value file.",
                   "example": "xapp-dummy"
                 }
               }
       },
       "get": {
         "summary": "Returns the status of all xapps",
+        "tags": [
+          "xapp"
+        ],
         "operationId": "getAllXapps",
         "produces": [
           "application/json"
           "200": {
             "description": "successful query of xApps",
             "schema": {
-              "$ref": "#/definitions/AllXapps"
+              "$ref": "#/definitions/AllDeployedXapps"
+            }
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      }
+    },
+    "/xapps/list": {
+        "get": {
+        "summary": "Returns the list of all deployable xapps",
+        "tags": [
+          "xapp"
+        ],
+        "operationId": "listAllXapps",
+        "produces": [
+          "application/json"
+        ],
+        "responses": {
+          "200": {
+            "description": "successful list of deployable xApps",
+            "schema": {
+              "$ref": "#/definitions/AllDeployableXapps"
             }
           },
           "500": {
     "/xapps/{xAppName}": {
       "get": {
         "summary": "Returns the status of a given xapp",
+        "tags": [
+          "xapp"
+        ],
         "operationId": "getXappByName",
         "produces": [
           "application/json"
       },
       "delete": {
         "summary": "Undeploy an existing xapp",
+        "tags": [
+          "xapp"
+        ],
         "operationId": "undeployXapp",
         "parameters": [
           {
     "/xapps/{xAppName}/instances/{xAppInstanceName}": {
       "get": {
         "summary": "Returns the status of a given xapp",
+        "tags": [
+          "xapp"
+        ],
         "operationId": "getXappInstanceByName",
         "produces": [
           "application/json"
         }
       }
     },
+    "/config": {
+      "post": {
+        "summary": "Create xApp config",
+        "tags": [
+          "xapp"
+        ],
+        "operationId": "createXappConfig",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "XAppConfig",
+            "in": "body",
+            "description": "xApp config",
+            "schema": {
+              "$ref": "#/definitions/XAppConfig"
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "xApp config successfully created",
+            "schema": {
+              "$ref": "#/definitions/XAppConfig"
+            }
+          },
+          "400": {
+            "description": "Invalid input"
+          },
+          "422": {
+            "description": "Validation of configuration failed"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      },
+      "put": {
+        "summary": "Modify xApp config",
+        "tags": [
+          "xapp"
+        ],
+        "operationId": "ModifyXappConfig",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "XAppConfig",
+            "in": "body",
+            "description": "xApp config",
+            "schema": {
+              "$ref": "#/definitions/XAppConfig"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "xApp config successfully modified",
+            "schema": {
+              "$ref": "#/definitions/XAppConfig"
+            }
+          },
+          "400": {
+            "description": "Invalid input"
+          },
+          "422": {
+            "description": "Validation of configuration failed"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      },
+      "get": {
+        "summary": "Returns the configuration of all xapps",
+        "tags": [
+          "xapp"
+        ],
+        "operationId": "getAllXappConfig",
+        "produces": [
+          "application/json"
+        ],
+        "responses": {
+          "200": {
+            "description": "successful query of xApp config",
+            "schema": {
+              "$ref": "#/definitions/AllXappConfig"
+            }
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      },
+      "delete": {
+        "summary": "Delete xApp configuration",
+        "tags": [
+          "xapp"
+        ],
+        "operationId": "deleteXappConfig",
+        "parameters": [
+          {
+            "name": "ConfigMetadata",
+            "in": "body",
+            "description": "xApp configuration information",
+            "schema": {
+              "$ref": "#/definitions/ConfigMetadata"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Successful deletion of xApp"
+          },
+          "400": {
+            "description": "Invalid parameters supplied"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      }
+    },
     "/subscriptions": {
       "post": {
         "summary": "Subscribe event",
+        "tags": [
+          "xapp",
+          "subscriptions"
+        ],
         "operationId": "addSubscription",
         "consumes": [
           "application/json"
       },
       "get": {
         "summary": "Returns all subscriptions",
+        "tags": [
+          "xapp",
+          "subscriptions"
+        ],
         "operationId": "getSubscriptions",
         "produces": [
           "application/json"
     "/subscriptions/{subscriptionId}": {
       "get": {
         "summary": "Returns the information of subscription",
+        "tags": [
+          "xapp",
+          "subscriptions"
+        ],
         "operationId": "getSubscriptionById",
         "produces": [
           "application/json"
             "in": "path",
             "description": "ID of subscription",
             "required": true,
-            "type": "integer"
+            "type": "string"
           }
         ],
         "responses": {
       },
       "put": {
         "summary": "Modify event subscription",
+        "tags": [
+          "xapp",
+          "subscriptions"
+        ],
         "operationId": "modifySubscription",
         "consumes": [
           "application/json"
             "in": "path",
             "description": "ID of subscription",
             "required": true,
-            "type": "integer"
+            "type": "string"
           },
           {
             "in": "body",
       },
       "delete": {
         "summary": "Unsubscribe event",
+        "tags": [
+          "xapp",
+          "subscriptions"
+        ],
         "description": "",
         "operationId": "deleteSubscription",
         "parameters": [
             "in": "path",
             "description": "ID of subscription",
             "required": true,
-            "type": "integer"
+            "type": "string"
           }
         ],
         "responses": {
     }
   },
   "definitions": {
-    "AllXapps": {
+    "AllDeployableXapps": {
+      "type": "array",
+      "items": {
+        "type": "string",
+        "example": "xapp-dummy"
+      }
+    },
+    "AllDeployedXapps": {
       "type": "array",
       "items": {
         "$ref": "#/definitions/Xapp"
           "type": "integer",
           "example": 32300
         },
-        "txMessages" : {
+        "txMessages": {
           "type": "array",
           "items": {
-            "type" : "string",
-            "example" : "ControlIndication"
+            "type": "string",
+            "example": "ControlIndication"
           }
         },
-        "rxMessages" : {
+        "rxMessages": {
           "type": "array",
           "items": {
-            "type" : "string",
-            "example" : "LoadIndication"
+            "type": "string",
+            "example": "LoadIndication"
           }
         }
       }
     },
+    "ConfigMetadata": {
+      "type": "object",
+      "required": [
+        "name",
+        "configName",
+        "namespace"
+      ],
+      "properties": {
+        "name": {
+          "type": "string",
+          "description": "Name of the xApp",
+          "example": "xapp-dummy"
+        },
+        "configName": {
+          "type": "string",
+          "description": "Name of the config map",
+          "example": "xapp-dummy-config-map"
+        },
+        "namespace": {
+          "type": "string",
+          "description": "Name of the namespace",
+          "example": "ricxapp"
+        }
+      }
+    },
+    "XAppConfig": {
+      "type": "object",
+      "required": [
+        "metadata",
+        "descriptor",
+        "config"
+      ],
+      "properties": {
+        "metadata": {
+          "$ref": "#/definitions/ConfigMetadata"
+        },
+        "descriptor": {
+          "type": "object",
+          "description": "Schema of configuration in JSON format"
+        },
+        "config": {
+          "type": "object",
+          "description": "Configuration in JSON format"
+        }
+      }
+    },
+    "AllXappConfig": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/XAppConfig"
+      }
+    },
     "subscriptionRequest": {
       "type": "object",
       "required": [
           ]
         },
         "xApps": {
-          "$ref": "#/definitions/AllXapps"
+          "$ref": "#/definitions/AllDeployedXapps"
         }
       }
     }