--- /dev/null
+#
+#==================================================================================
+# Copyright (c) 2019 AT&T Intellectual Property.
+# Copyright (c) 2019 Nokia
+#
+# 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.
+#==================================================================================
+#
+#
+# Abstract: Routing Manager's RESTful API definition
+# Date: 29 March 2019
+#
+swagger: "2.0"
+info:
+ title: Routing Manager
+ description: "This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API."
+ version: "0.2.2"
+ license:
+ name: "Apache 2.0"
+ url: "http://www.apache.org/licenses/LICENSE-2.0.html"
+host: "rtmgr"
+basePath: "/v1"
+tags:
+- name: "handle"
+ description: "Available handles"
+# externalDocs:
+# description: "Find out more"
+# url: "http://127.0.0.1"
+- name: "route"
+ description: "Available routes"
+- name: "health"
+ description: "Health of the system"
+schemes:
+- "https"
+- "http"
+paths:
+ /health:
+ get:
+ tags:
+ - "health"
+ summary: "Retrive the health of Routing Manager"
+ description: "By performing a GET method on the health resource, the API caller is able to retrieve the health of Routing Manager"
+ operationId: "get_health"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ responses:
+ 200:
+ description: "The health of the system"
+ schema:
+ "$ref": "#/definitions/health-status"
+ /handles:
+ get:
+ tags:
+ - "handle"
+ summary: "Placeholder for further usage"
+ description: "Placeholder for further usage."
+ operationId: "get_handles"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ responses:
+ 200:
+ description: "Dummy response"
+ /handles/xapp-handle:
+ post:
+ tags:
+ - "handle"
+ summary: "Provide callback"
+ description: "By performing a POST method on the xapp-handle resource, the API caller is able to perform a callback on Routing Manager."
+ operationId: "provide_xapp_handle"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ parameters:
+ - in: "body"
+ name: "xapp-callback-data"
+ description: "xApp related callback data"
+ required: true
+ schema:
+ $ref: "#/definitions/xapp-callback-data"
+ responses:
+ 400:
+ description: "Invalid data"
+ 201:
+ description: "Callback received"
+ /routes:
+ post:
+ tags:
+ - "route"
+ summary: "Add new route"
+ description: "By performing a POST method on the routes resource, the API caller is able to create a new route."
+ operationId: "add_route"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ parameters:
+ - in: "body"
+ name: "route"
+ description: "Route object that needs to be created"
+ required: true
+ schema:
+ $ref: "#/definitions/route"
+ responses:
+ 400:
+ description: "Invalid route"
+ 201:
+ description: "Route created"
+ put:
+ tags:
+ - "route"
+ summary: "Update an existing route"
+ description: "By performing a PUT method on the routes resource, the API caller is able to update an already existing route."
+ operationId: "update_route"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ parameters:
+ - in: "body"
+ name: "route"
+ description: "Route object that needs to be updated or created"
+ required: true
+ schema:
+ $ref: "#/definitions/route"
+ responses:
+ 400:
+ description: "Invalid route ID supplied"
+ 404:
+ description: "Route not found"
+ 204:
+ description: "Route updated"
+ get:
+ tags:
+ - "route"
+ summary: "Retrieve the list of routes"
+ description: "By performing a GET method on the routes resource, the API caller is able to retrieve all routes"
+ operationId: "get_routes"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ responses:
+ 200:
+ description: "All the routes"
+ schema:
+ $ref: "#/definitions/routes"
+
+ /routes/{route-id}:
+ get:
+ tags:
+ - "route"
+ summary: "Find route by ID"
+ description: "Returns a single route"
+ operationId: "get_route_by_id"
+ produces:
+ - "application/json"
+ parameters:
+ - name: "route-id"
+ in: "path"
+ description: "ID of route to return"
+ required: true
+ type: "integer"
+ format: "int64"
+ responses:
+ 200:
+ description: "successful operation"
+ schema:
+ $ref: "#/definitions/route"
+ 400:
+ description: "Invalid route ID supplied"
+ 404:
+ description: "Route not found"
+ put:
+ tags:
+ - "route"
+ summary: "Updates a route by explicitly referencing it by route-id"
+ description: "By performing a PUT method on a specific route referenced by the route-id the API caller is able to update that specific route"
+ operationId: "update-route-by-id"
+ consumes:
+ - "application/json"
+# - "application/yaml"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ parameters:
+ - name: "route-id"
+ in: "path"
+ description: "ID of route that needs to be updated"
+ required: true
+ type: "integer"
+ format: "int64"
+ - name: "route"
+ in: "body"
+ description: "The updated route instance"
+ required: false
+ schema:
+ $ref: "#/definitions/route"
+ responses:
+ 400:
+ description: "Invalid route ID supplied"
+ 204:
+ description: "Route updated"
+ delete:
+ tags:
+ - "route"
+ summary: "Deletes a route"
+ description: "By performing a DELETE method on a specific route referenced by the route-id, the API caller is able to delete that specific route"
+ operationId: "delete_route_by_id"
+ produces:
+ - "application/json"
+# - "application/yaml"
+ parameters:
+ - name: "route-id"
+ in: "path"
+ description: "ID of the route that needs to be deleted"
+ required: true
+ type: "integer"
+ format: "int64"
+ responses:
+ 400:
+ description: "Invalid route ID supplied"
+ 404:
+ description: "Route not found"
+ 204:
+ description: "Route deleted"
+definitions:
+ health-status:
+ type: "object"
+ properties:
+ status:
+ type: string
+ enum:
+ - healthy
+ - unhealthy
+ routes:
+ type: "array"
+ items:
+ $ref: "#/definitions/route"
+ route:
+ type: "object"
+ required:
+ - "id" # not so sure about that
+ properties:
+ id:
+ type: "integer"
+ format: "int64"
+ senders:
+ type: "array"
+ items:
+ "$ref": "#/definitions/xapp-instance"
+ message-type:
+ type: "integer"
+ format: "int64"
+ receiver-groups:
+ type: "array"
+ items:
+ "$ref": "#/definitions/xapp-group"
+ xapp-instance:
+ type: "object"
+ required:
+ - "address"
+ - "port"
+ properties:
+ address:
+ type: "string" # I know...
+ port:
+ type: "integer"
+ format: "int32"
+ minimum: 0
+ maximum: 65535
+ xapp-group:
+ type: "array"
+ items:
+ "$ref": "#/definitions/xapp-instance"
+ xapp-callback-data:
+ type: "object"
+ properties:
+ id:
+ type: "integer"
+ format: "int64"
+ event:
+ type: "string"
+ data-version:
+ type: "integer"
+ format: "int64"
+ data:
+ type: "string" #This should be a JSON object, array of xapps
+externalDocs:
+ description: "Routing Manager"
+ url: "http://placeholder"