| { |
| "swagger": "2.0", |
| "info": { |
| "description": "This is a draft API for RIC appmgr", |
| "version": "0.1.5", |
| "title": "RIC appmgr", |
| "license": { |
| "name": "Apache 2.0", |
| "url": "http://www.apache.org/licenses/LICENSE-2.0.html" |
| } |
| }, |
| "host": "hostname", |
| "basePath": "/ric/v1", |
| "schemes": [ |
| "http" |
| ], |
| "paths": { |
| "/health/alive": { |
| "get": { |
| "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" |
| ], |
| "produces": [ |
| "application/json" |
| ], |
| "parameters": [ |
| { |
| "name": "xAppInfo", |
| "in": "body", |
| "description": "xApp information", |
| "schema": { |
| "type": "object", |
| "required": [ |
| "name" |
| ], |
| "properties": { |
| "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" |
| } |
| } |
| } |
| } |
| ], |
| "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", |
| "tags": [ |
| "xapp" |
| ], |
| "operationId": "getAllXapps", |
| "produces": [ |
| "application/json" |
| ], |
| "responses": { |
| "200": { |
| "description": "successful query of xApps", |
| "schema": { |
| "$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": { |
| "description": "Internal error" |
| } |
| } |
| } |
| }, |
| "/xapps/{xAppName}": { |
| "get": { |
| "summary": "Returns the status of a given xapp", |
| "tags": [ |
| "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", |
| "tags": [ |
| "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", |
| "tags": [ |
| "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" |
| } |
| } |
| } |
| }, |
| "/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" |
| ], |
| "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", |
| "tags": [ |
| "xapp", |
| "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", |
| "tags": [ |
| "xapp", |
| "subscriptions" |
| ], |
| "operationId": "getSubscriptionById", |
| "produces": [ |
| "application/json" |
| ], |
| "parameters": [ |
| { |
| "name": "subscriptionId", |
| "in": "path", |
| "description": "ID of subscription", |
| "required": true, |
| "type": "string" |
| } |
| ], |
| "responses": { |
| "200": { |
| "description": "successful operation", |
| "schema": { |
| "$ref": "#/definitions/subscription" |
| } |
| }, |
| "400": { |
| "description": "Invalid ID supplied" |
| }, |
| "404": { |
| "description": "Subscription not found" |
| } |
| } |
| }, |
| "put": { |
| "summary": "Modify event subscription", |
| "tags": [ |
| "xapp", |
| "subscriptions" |
| ], |
| "operationId": "modifySubscription", |
| "consumes": [ |
| "application/json" |
| ], |
| "produces": [ |
| "application/json" |
| ], |
| "parameters": [ |
| { |
| "name": "subscriptionId", |
| "in": "path", |
| "description": "ID of subscription", |
| "required": true, |
| "type": "string" |
| }, |
| { |
| "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", |
| "tags": [ |
| "xapp", |
| "subscriptions" |
| ], |
| "description": "", |
| "operationId": "deleteSubscription", |
| "parameters": [ |
| { |
| "name": "subscriptionId", |
| "in": "path", |
| "description": "ID of subscription", |
| "required": true, |
| "type": "string" |
| } |
| ], |
| "responses": { |
| "204": { |
| "description": "Successful deletion of subscription" |
| }, |
| "400": { |
| "description": "Invalid subscription supplied" |
| } |
| } |
| } |
| } |
| }, |
| "definitions": { |
| "AllDeployableXapps": { |
| "type": "array", |
| "items": { |
| "type": "string", |
| "example": "xapp-dummy" |
| } |
| }, |
| "AllDeployedXapps": { |
| "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" |
| } |
| } |
| } |
| }, |
| "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": [ |
| "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", |
| "updated", |
| "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", |
| "updated", |
| "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", |
| "updated" |
| ] |
| }, |
| "xApps": { |
| "$ref": "#/definitions/AllDeployedXapps" |
| } |
| } |
| } |
| } |
| } |