New standard GO project layout
[ric-plt/appmgr.git] / api / appmgr_rest_api.json
diff --git a/api/appmgr_rest_api.json b/api/appmgr_rest_api.json
new file mode 100644 (file)
index 0000000..c5a4c0b
--- /dev/null
@@ -0,0 +1,545 @@
+{
+  "swagger": "2.0",
+  "info": {
+    "description": "This is a draft API for RIC appmgr",
+    "version": "0.0.10",
+    "title": "RIC appmgr",
+    "license": {
+      "name": "Apache 2.0",
+      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "host": "hostname",
+  "basePath": "/ric/v1",
+  "schemes": [
+    "https",
+    "http"
+  ],
+  "paths": {
+    "/health": {
+      "get": {
+        "summary": "Health check of xApp Manager",
+        "operationId": "getHealth",
+        "responses": {
+          "200": {
+            "description": "Status of xApp Manager is ok"
+          }
+        }
+      }
+    },
+    "/xapps": {
+      "post": {
+        "summary": "Deploy a xapp",
+        "operationId": "deployXapp",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "xAppInfo",
+            "in": "body",
+            "description": "xApp information",
+            "schema": {
+              "type": "object",
+              "required": [
+                "xAppName"
+              ],
+              "properties": {
+                "xAppName": {
+                  "type":"string",
+                  "description":"Name of the xApp",
+                  "example": "xapp-dummy"
+                }
+              }
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "xApp successfully created",
+            "schema": {
+              "$ref": "#/definitions/Xapp"
+            }
+          },
+          "400": {
+            "description": "Invalid input"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      },
+      "get": {
+        "summary": "Returns the status of all xapps",
+        "operationId": "getAllXapps",
+        "produces": [
+          "application/json"
+        ],
+        "responses": {
+          "200": {
+            "description": "successful query of xApps",
+            "schema": {
+              "$ref": "#/definitions/AllXapps"
+            }
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      }
+    },
+    "/xapps/{xAppName}": {
+      "get": {
+        "summary": "Returns the status of a given xapp",
+        "operationId": "getXappByName",
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "xAppName",
+            "in": "path",
+            "description": "Name of xApp",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/Xapp"
+            }
+          },
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Xapp not found"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      },
+      "delete": {
+        "summary": "Undeploy an existing xapp",
+        "operationId": "undeployXapp",
+        "parameters": [
+          {
+            "name": "xAppName",
+            "in": "path",
+            "description": "Xapp to be undeployed",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Successful deletion of xApp"
+          },
+          "400": {
+            "description": "Invalid xApp name supplied"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      }
+    },
+    "/xapps/{xAppName}/instances/{xAppInstanceName}": {
+      "get": {
+        "summary": "Returns the status of a given xapp",
+        "operationId": "getXappInstanceByName",
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "xAppName",
+            "in": "path",
+            "description": "Name of xApp",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "xAppInstanceName",
+            "in": "path",
+            "description": "Name of xApp instance to get information",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/XappInstance"
+            }
+          },
+          "400": {
+            "description": "Invalid name supplied"
+          },
+          "404": {
+            "description": "Xapp not found"
+          },
+          "500": {
+            "description": "Internal error"
+          }
+        }
+      }
+    },
+    "/subscriptions": {
+      "post": {
+        "summary": "Subscribe event",
+        "operationId": "addSubscription",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "subscriptionRequest",
+            "in": "body",
+            "description": "New subscription",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/subscriptionRequest"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Subscription successful",
+            "schema": {
+              "$ref": "#/definitions/subscriptionResponse"
+            }
+          },
+          "400": {
+            "description": "Invalid input"
+          }
+        }
+      },
+      "get": {
+        "summary": "Returns all subscriptions",
+        "operationId": "getSubscriptions",
+        "produces": [
+          "application/json"
+        ],
+        "responses": {
+          "200": {
+            "description": "successful query of subscriptions",
+            "schema": {
+              "$ref": "#/definitions/allSubscriptions"
+            }
+          }
+        }
+      }
+    },
+    "/subscriptions/{subscriptionId}": {
+      "get": {
+        "summary": "Returns the information of subscription",
+        "operationId": "getSubscriptionById",
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "subscriptionId",
+            "in": "path",
+            "description": "ID of subscription",
+            "required": true,
+            "type": "integer"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "$ref": "#/definitions/subscription"
+            }
+          },
+          "400": {
+            "description": "Invalid ID supplied"
+          },
+          "404": {
+            "description": "Subscription not found"
+          }
+        }
+      },
+      "put": {
+        "summary": "Modify event subscription",
+        "operationId": "modifySubscription",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "name": "subscriptionId",
+            "in": "path",
+            "description": "ID of subscription",
+            "required": true,
+            "type": "integer"
+          },
+          {
+            "in": "body",
+            "name": "subscriptionRequest",
+            "description": "Modified subscription",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/subscriptionRequest"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Subscription modification successful",
+            "schema": {
+              "$ref": "#/definitions/subscriptionResponse"
+            }
+          },
+          "400": {
+            "description": "Invalid input"
+          }
+        }
+      },
+      "delete": {
+        "summary": "Unsubscribe event",
+        "description": "",
+        "operationId": "deleteSubscription",
+        "parameters": [
+          {
+            "name": "subscriptionId",
+            "in": "path",
+            "description": "ID of subscription",
+            "required": true,
+            "type": "integer"
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Successful deletion of subscription"
+          },
+          "400": {
+            "description": "Invalid subscription supplied"
+          }
+        }
+      }
+    }
+  },
+  "definitions": {
+    "AllXapps": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/Xapp"
+      }
+    },
+    "Xapp": {
+      "type": "object",
+      "required": [
+        "name"
+      ],
+      "properties": {
+        "name": {
+          "type": "string",
+          "example": "xapp-dummy"
+        },
+        "status": {
+          "type": "string",
+          "description": "xapp status in the RIC",
+          "enum": [
+            "unknown",
+            "deployed",
+            "deleted",
+            "superseded",
+            "failed",
+            "deleting"
+          ]
+        },
+        "version": {
+          "type": "string",
+          "example": "1.2.3"
+        },
+        "instances": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/XappInstance"
+          }
+        }
+      }
+    },
+    "XappInstance": {
+      "type": "object",
+      "required": [
+        "name"
+      ],
+      "properties": {
+        "name": {
+          "type": "string",
+          "example": "xapp-dummy-6cd577d9-4v255"
+        },
+        "status": {
+          "type": "string",
+          "description": "xapp instance status",
+          "enum": [
+            "pending",
+            "running",
+            "succeeded",
+            "failed",
+            "unknown",
+            "completed",
+            "crashLoopBackOff"
+          ]
+        },
+        "ip": {
+          "type": "string",
+          "example": "192.168.0.1"
+        },
+        "port": {
+          "type": "integer",
+          "example": 32300
+        },
+        "txMessages" : {
+          "type": "array",
+          "items": {
+            "type" : "string",
+            "example" : "ControlIndication"
+          }
+        },
+        "rxMessages" : {
+          "type": "array",
+          "items": {
+            "type" : "string",
+            "example" : "LoadIndication"
+          }
+        }
+      }
+    },
+    "subscriptionRequest": {
+      "type": "object",
+      "required": [
+        "targetUrl",
+        "eventType",
+        "maxRetries",
+        "retryTimer"
+      ],
+      "properties": {
+        "targetUrl": {
+          "type": "string",
+          "example": "http://localhost:11111/apps/webhook/"
+        },
+        "eventType": {
+          "type": "string",
+          "description": "Event which is subscribed",
+          "enum": [
+            "created",
+            "deleted",
+            "all"
+          ]
+        },
+        "maxRetries": {
+          "type": "integer",
+          "description": "Maximum number of retries",
+          "example": 11
+        },
+        "retryTimer": {
+          "type": "integer",
+          "description": "Time in seconds to wait before next retry",
+          "example": 22
+        }
+      }
+    },
+    "subscriptionResponse": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string",
+          "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc"
+        },
+        "version": {
+          "type": "integer",
+          "example": 2
+        },
+        "eventType": {
+          "type": "string",
+          "description": "Event which is subscribed",
+          "enum": [
+            "created",
+            "deleted",
+            "all"
+          ]
+        }
+      }
+    },
+    "allSubscriptions": {
+      "type": "array",
+      "items": {
+        "$ref": "#/definitions/subscription"
+      }
+    },
+    "subscription": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string",
+          "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc"
+        },
+        "targetUrl": {
+          "type": "string",
+          "example": "http://localhost:11111/apps/webhook/"
+        },
+        "eventType": {
+          "type": "string",
+          "description": "Event which is subscribed",
+          "enum": [
+            "created",
+            "deleted",
+            "all"
+          ]
+        },
+        "maxRetries": {
+          "type": "integer",
+          "description": "Maximum number of retries",
+          "example": 11
+        },
+        "retryTimer": {
+          "type": "integer",
+          "description": "Time in seconds to wait before next retry",
+          "example": 22
+        }
+      }
+    },
+    "subscriptionNotification": {
+      "type": "object",
+      "properties": {
+        "id": {
+          "type": "string",
+          "example": "1ILBltYYzEGzWRrVPZKmuUmhwcc"
+        },
+        "version": {
+          "type": "integer",
+          "example": 2
+        },
+        "eventType": {
+          "type": "string",
+          "description": "Event to be notified",
+          "enum": [
+            "created",
+            "deleted"
+          ]
+        },
+        "xApps": {
+          "$ref": "#/definitions/AllXapps"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file