add support for common swagger style
[optf/osdf.git] / docs / api / swagger / oof-osdf-has-api.json
diff --git a/docs/api/swagger/oof-osdf-has-api.json b/docs/api/swagger/oof-osdf-has-api.json
new file mode 100644 (file)
index 0000000..a2fa43f
--- /dev/null
@@ -0,0 +1,2155 @@
+{
+  "swagger": "2.0",
+  "info": {
+    "description": "This is the ONAP OOF OSDF (Optimization Service Design Framework) API",
+    "version": "1.0.0",
+    "title": "OSDF API",
+    "contact": {
+      "email": "frank.sandoval@oamtechnologies.com"
+    },
+    "license": {
+      "name": "Apache 2.0",
+      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
+    }
+  },
+  "securityDefinitions": {
+    "basicAuth": {
+      "type": "basic",
+      "description": "HTTP Basic Auth"
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ],
+  "paths": {
+    "/v2/placement": {
+      "post": {
+        "tags": [
+          "Placement Optimization"
+        ],
+        "summary": "create/update a placement",
+        "operationId": "createPlacement",
+        "description": "create/update a placement",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "placementRequest",
+            "description": "placement request",
+            "schema": {
+              "$ref": "#/definitions/PlacementRequest"
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "An optimization solution is found."
+          },
+          "202": {
+            "description": "An optimization request is accepted"
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/placement/v1": {
+      "post": {
+        "tags": [
+          "Placement Optimization"
+        ],
+        "summary": "create/update a placement",
+        "operationId": "createPlacementv1",
+        "description": "create/update a placement",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "placementRequest",
+            "description": "placement request",
+            "schema": {
+              "$ref": "#/definitions/PlacementRequest"
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "An optimization solution is found."
+          },
+          "202": {
+            "description": "An optimization request is accepted"
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/v1/pci": {
+      "post": {
+        "tags": [
+          "PCI/ANR Optimization"
+        ],
+        "summary": "Initiate PCI/ANR Optimization",
+        "operationId": "initiatePCIOptRequest",
+        "description": "Initiate PCI/ANR Optimization",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "PCIOptimizationRequest",
+            "description": "PCI request",
+            "schema": {
+              "$ref": "#/definitions/PCIOptRequest"
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "An optimization solution is found."
+          },
+          "202": {
+            "description": "An optimization request is accepted"
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/pci/v1": {
+      "post": {
+        "tags": [
+          "PCI/ANR Optimization"
+        ],
+        "summary": "Initiate PCI/ANR Optimization",
+        "operationId": "initiatePCIOptRequestv1",
+        "description": "Initiate PCI/ANR Optimization",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "PCIOptimizationRequest",
+            "description": "PCI request",
+            "schema": {
+              "$ref": "#/definitions/PCIOptRequest"
+            }
+          }
+        ],
+        "responses": {
+          "201": {
+            "description": "An optimization solution is found."
+          },
+          "202": {
+            "description": "An optimization request is accepted"
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/selection/nst/v1": {
+      "post": {
+        "tags": [
+          "NST Selection"
+        ],
+        "summary": "NST selection",
+        "operationId": "selectNstRequest",
+        "description": "Request for NST selection",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "NSTSelectionRequest",
+            "description": "nst selection request",
+            "schema": {
+              "$ref": "#/definitions/NSTSelectionRequest"
+            }
+          }
+        ],
+        "responses": {
+          "202": {
+            "description": "An optimization request is accepted",
+            "schema": {
+              "$ref": "#/definitions/SynchronousResponse"
+            }
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/selection/nsi/v1": {
+      "post": {
+        "tags": [
+          "NSI Selection"
+        ],
+        "summary": "NSI selection",
+        "operationId": "selectNsiRequest",
+        "description": "Request for NSI selection",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "NSISelectionRequest",
+            "description": "NSI selection request",
+            "schema": {
+              "$ref": "#/definitions/NSISelectionRequest"
+            }
+          }
+        ],
+        "responses": {
+          "202": {
+            "description": "An optimization request is accepted",
+            "schema": {
+              "$ref": "#/definitions/SynchronousResponse"
+            }
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/selection/nssi/v1": {
+      "post": {
+        "tags": [
+          "NSSI Selection"
+        ],
+        "summary": "NSSI selection",
+        "operationId": "selectNssiRequest",
+        "description": "Request for NSSI selection",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "NSSISelectionRequest",
+            "description": "NSSI selection request",
+            "schema": {
+              "$ref": "#/definitions/NSSISelectionRequest"
+            }
+          }
+        ],
+        "responses": {
+          "202": {
+            "description": "An optimization request is accepted",
+            "schema": {
+              "$ref": "#/definitions/SynchronousResponse"
+            }
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/terminate/nxi/v1": {
+      "post": {
+        "tags": [
+          "NSSI/NSI Termination"
+        ],
+        "summary": "NSSI/NSI Termination",
+        "operationId": "terminateNxiRequest",
+        "description": "Request for NSSI/NSI Termination",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "NxITerminationRequest",
+            "description": "NSSI/NSI termination request",
+            "schema": {
+              "$ref": "#/definitions/NxITerminationRequest"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "request has succeeded",
+            "schema": {
+              "$ref": "#/definitions/SynchronousTerminationResponse"
+            }
+          },
+          "400": {
+            "description": "bad request"
+          },
+          "401": {
+            "description": "Request body is not compliant with the API definition"
+          },
+          "404": {
+            "description": "The server cannot find the requested URI"
+          },
+          "405": {
+            "description": "The requested method is not supported by a server."
+          },
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
+          }
+        }
+      }
+    },
+    "/api/oof/route/v1": {
+      "post": {
+        "tags": [
+          "Route Select"
+        ],
+        "summary": "Find the optimistic route between OTN domains",
+        "description": "",
+        "operationId": "getRoute",
+        "consumes": [
+          "application/json"
+        ],
+        "produces": [
+          "application/json"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "description": "Source and Destination nodes across which optmistic route have to be obtained.",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/RouteRequest"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "successful operation",
+            "schema": {
+              "type": "array",
+              "items": {
+                "$ref": "#/definitions/routeResponseBody"
+              }
+            }
+          },
+          "405": {
+            "description": "Invalid input"
+          }
+        }
+      }
+    },
+    "/api/oof/mdons/route/v1": {
+      "post": {
+        "tags": [
+         "Inter Domain Route Select"
+        ],
+        "summary":"Find the optimistic inter domain route for multi domain optical system",
+        "description":"",
+        "operationId":"getInterDomainRoute",
+        "consumes": [
+          "application/json"
+        ],
+        "produces":[
+          "application/json"
+        ],
+        "parameters":[
+          {
+            "in":"body",
+            "name":"body",
+            "description":"Source and Destination interfaces across which optmistic route have to be obtained.",
+            "required":true,
+            "schema":{
+             "$ref":"#/definitions/InterDomainRouteRequest"
+            }
+          }
+        ],
+        "responses":{
+         "200":{
+          "description":"successful operation",
+          "schema":{
+            "$ref":"#/definitions/InterDomainRouteResponseBody"
+          }
+         },
+        "400":{
+         "description":"bad request"
+       },
+        "401":{
+          "description":"Request body is not compliant with the API definition"
+        },
+       "404":{
+          "description":"The server cannot find the requested URI"
+       },
+       "405":{
+         "description":"The requested method is not supported by a server."
+       },
+       "500":{
+          "description":"The server encountered an internal server error or timed out"
+       }
+      }
+     }
+   }
+  },
+  "definitions": {
+   "InterDomainRouteRequest":{
+     "type":"object",
+     "properties":{
+       "requestInfo":{
+         "$ref":"#/definitions/requestInfo"
+       },
+       "routeInfo":{
+         "$ref":"#/definitions/interDomainRouteInfo"
+       }
+     }
+   },
+   "interDomainRouteInfo":{
+     "type":"object",
+     "properties":{
+       "routeRequest":{
+         "$ref":"#/definitions/interDomainRouteRequest"
+       }
+     }
+   },
+   "interDomainRouteRequest":{
+     "type":"object",
+     "properties":{
+       "srcDetails":{
+         "$ref":"#/definitions/interDomainPortDetails"
+       },
+       "dstDetails":{
+         "$ref":"#/definitions/interDomainPortDetails"
+       },
+       "serviceRate":{
+         "type":"string",
+         "description":"The rate of the service."
+       }
+     }
+   },
+   "interDomainPortDetails":{
+     "type":"object",
+     "properties":{
+       "interfaceId":{
+         "type":"string",
+         "description":"The port id."
+       },
+       "nodeId":{
+         "type":"string",
+         "description":"The node id."
+       },
+       "controllerId":{
+         "type":"string",
+         "description":"The controller id to which the node belongs to."
+       }
+     }
+   },
+   "InterDomainRouteResponseBody":{
+     "type":"object",
+     "properties":{
+       "requestId":{
+         "type":"string",
+         "description":"A unique Id for an ONAP transaction."
+       },
+       "transactionId":{
+         "type":"string",
+         "description":"A unique ID to track multiple requests associated with a transaction."
+       },
+       "statusMessage":{
+         "type":"string",
+         "description":"Reasoning if a requestStatus is failure."
+       },
+       "requestStatus":{
+         "type":"string",
+         "description":"The status of a request."
+       },
+       "solutions":{
+         "$ref":"#/definitions/InterDomainRouteSolutionInfo"
+       }
+     }
+   },
+   "InterDomainRouteSolutionInfo":{
+     "type":"object",
+     "properties":{
+       "routeInfo":{
+         "$ref":"#/definitions/interDomainResponseRouteinfo"
+       }
+     }
+   },
+   "interDomainResponseRouteinfo":{
+     "type":"object",
+     "properties":{
+       "serviceRoute":{
+         "type":"array",
+         "items":{
+           "$ref":"#/definitions/serviceRouteDetails"
+         }
+       },
+       "linkList":{
+         "type":"array",
+         "items":{
+           "type":"string"
+         },
+         "description":"A list of link names of the route.",
+         "example":[
+           "link1",
+           "link2"
+         ]
+       }
+     }
+   },
+   "serviceRouteDetails":{
+     "type":"object",
+     "properties":{
+       "srcInterfaceId":{
+         "type":"string",
+         "description":"Source port Id of the domain Service."
+       },
+       "dstInterfaceId":{
+         "type":"string",
+         "description":"Destination Port Id of the domain Service."
+       },
+       "controllerId":{
+         "type":"string",
+         "description":"Controller Id of the domain."
+       }
+     }
+    },
+    "RouteRequest": {
+      "type": "object",
+      "properties": {
+        "requestInfo": {
+          "$ref": "#/definitions/requestInfo"
+        },
+        "routeInfo": {
+          "$ref": "#/definitions/routeInfo"
+        }
+      }
+    },
+    "requestInfo": {
+      "type": "object",
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "description": "A unique ID to track an ONAP transaction."
+        },
+        "requestId": {
+          "type": "string",
+          "description": "A unique ID to track multiple requests associated with a transaction."
+        },
+        "callbackUrl": {
+          "type": "string",
+          "description": "The end point of a callback service where recommendations are posted."
+        },
+        "callbackHeader": {
+          "type": "string",
+          "description": "The header information a client expecting in a async callback."
+        },
+        "sourceId": {
+          "type": "string",
+          "description": "The unique ID of a client making an optimization call."
+        },
+        "requestType": {
+          "type": "string",
+          "format": "string",
+          "description": "The type of request being placed.",
+          "enum": [
+            "create",
+            "update",
+            "delete"
+          ]
+        },
+        "numSolutions": {
+          "type": "integer",
+          "format": "int32",
+          "description": "Expected number of solutions. numSolution can also be specified using an optimization query policies, where the default configured value is 1. The value from a request gets higher precedence over the value defined in a policy."
+        },
+        "optimizers": {
+          "description": "A list of optimization services that can be used to resolve the route",
+          "type": "array",
+          "items": {
+            "type": "string"
+          }
+        },
+        "timeout": {
+          "type": "integer",
+          "format": "int32",
+          "description": "A tolerance window (in secs) for expecting solutions. Default is 600 secs."
+        }
+      }
+    },
+    "routeInfo": {
+      "type": "object",
+      "properties": {
+        "routeRequest": {
+          "$ref": "#/definitions/routeRequest"
+        }
+      }
+    },
+    "routeRequest": {
+      "type": "object",
+      "properties": {
+        "srcPort": {
+          "$ref": "#/definitions/routePortInfo"
+        },
+        "destPort": {
+          "$ref": "#/definitions/routePortInfo"
+        }
+      }
+    },
+    "routePortInfo": {
+      "type": "object",
+      "properties": {
+        "accessTopologyId": {
+          "type": "string",
+          "description": "A unique ID of the Access Topology."
+        },
+        "accessClientId": {
+          "type": "string",
+          "format": "string",
+          "description": "A unique ID of the client which provides the access."
+        },
+        "accessProviderId": {
+          "type": "string",
+          "format": "string",
+          "description": "A unique ID of the access provider"
+        },
+        "accessNodeId": {
+          "type": "string",
+          "format": "string",
+          "description": "A unique ID of the node to/from which the route has to be established."
+        },
+        "accessLtpId": {
+          "type": "integer",
+          "format": "int32",
+          "description": "A unique ID of the Termination Point to/from which the route has to be established."
+        }
+      }
+    },
+    "routeResponseBody": {
+      "type": "object",
+      "properties": {
+        "requestId": {
+          "type": "string",
+          "description": "A unique Id for an ONAP transaction."
+        },
+        "transactionId": {
+          "type": "string",
+          "description": "A unique ID to track multiple requests associated with a transaction."
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failure."
+        },
+        "requestStatus": {
+          "type": "string",
+          "description": "The status of a request."
+        },
+        "solutions": {
+          "$ref": "#/definitions/RouteSolutionInfo"
+        }
+      }
+    },
+    "RouteSolutionInfo": {
+      "type": "object",
+      "properties": {
+        "startTime": {
+          "type": "string",
+          "format": "date-time",
+          "description": "start time of the operation in  RFC 3339 notation for example, 2017-07-21T17:32:28Z."
+        },
+        "finishTime": {
+          "type": "string",
+          "format": "date-time",
+          "description": "end time of the operation in  RFC 3339 notation for example, 2017-07-21T17:32:28Z."
+        },
+        "links": {
+          "description": "A list of vpn info that can be used to establish the route between source and destination port/node.",
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/link"
+          }
+        }
+      }
+    },
+    "link": {
+      "type": "object",
+      "properties": {
+        "linkId": {
+          "type": "string",
+          "description": "Id or name identifies a link uniquely."
+        }
+      }
+    },
+    "PlacementRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "placementInfo",
+        "licenseInfo",
+        "serviceInfo"
+      ],
+      "properties": {
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo"
+        },
+        "placementInfo": {
+          "$ref": "#/definitions/PlacementInfo"
+        },
+        "licenseInfo": {
+          "$ref": "#/definitions/LicenseInfo"
+        },
+        "serviceInfo": {
+          "$ref": "#/definitions/ServiceInfo"
+        }
+      }
+    },
+    "RequestInfo": {
+      "type": "object",
+      "required": [
+        "transactionId",
+        "requestId",
+        "callbackUrl",
+        "sourceId",
+        "requestType",
+        "optimizers",
+        "timeout"
+      ],
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "unique ID to track an ONAP transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "callbackUrl": {
+          "type": "string",
+          "format": "url",
+          "description": "The end point of a callback service where recommendations are posted.",
+          "example": "myDomain.com/myCallback"
+        },
+        "callbackHeader": {
+          "type": "string",
+          "description": "JSON blob. The header information a client expecting in a async callback.",
+          "example": {
+            "blob": "content"
+          }
+        },
+        "sourceId": {
+          "type": "string",
+          "description": "The unique ID of a client making an optimization call.",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestType": {
+          "type": "string",
+          "enum": [
+            "create",
+            "update",
+            "delete"
+          ],
+          "description": "The type of a request",
+          "example": "create"
+        },
+        "numSolutions": {
+          "type": "integer",
+          "description": "Expected number of solutions.",
+          "example": 1
+        },
+        "optimizers": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "enum": [
+              "placement",
+              "pci",
+              "pci-anr"
+            ]
+          },
+          "description": "A list of optimization services.",
+          "example": [
+            "placement"
+          ]
+        },
+        "timeout": {
+          "type": "integer",
+          "description": "A tolerance window (in second) for expecting solutions.",
+          "example": 5
+        }
+      }
+    },
+    "PlacementInfo": {
+      "type": "object",
+      "required": [
+        "requestParameters",
+        "placementDemands"
+      ],
+      "properties": {
+        "requestParameters": {
+          "type": "string",
+          "description": "JSON blob. A service ordering information",
+          "example": {
+            "blob": "content"
+          }
+        },
+        "placementDemands": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/PlacementDemand"
+          },
+          "description": "The resource information for a placement service"
+        },
+        "subscriberInfo": {
+          "type": "object",
+          "items": {
+            "$ref": "#/definitions/SubscriberInfo"
+          },
+          "description": "The information of a service subscriber."
+        }
+      }
+    },
+    "PlacementDemand": {
+      "type": "object",
+      "required": [
+        "resourceModuleName",
+        "serviceResourceId",
+        "resourceModelInfo"
+      ],
+      "properties": {
+        "resourceModuleName": {
+          "type": "string",
+          "description": "A resource name as defined in a service mode",
+          "example": "myResourceName"
+        },
+        "serviceResourceId": {
+          "type": "string",
+          "description": "A unique resource Id with a local scope between client and OOF.",
+          "example": "myResourceId"
+        },
+        "givenPlacement": {
+          "type": "object",
+          "additionalProperties": {
+            "type": "object",
+            "properties": {
+              "key": {
+                "type": "string"
+              },
+              "value": {
+                "type": "string"
+              }
+            }
+          },
+          "description": "placement parameters defined in the ordering system, keyname include tenantId",
+          "example": {
+            "tenantId": "1"
+          }
+        },
+        "resourceModelInfo": {
+          "$ref": "#/definitions/ModelMetaData"
+        },
+        "existingCandidates": {
+          "$ref": "#/definitions/Candidates"
+        },
+        "excludedCandidates": {
+          "$ref": "#/definitions/Candidates"
+        },
+        "requiredCandidates": {
+          "$ref": "#/definitions/Candidates"
+        }
+      }
+    },
+    "ModelMetaData": {
+      "type": "object",
+      "required": [
+        "modelInvariantId",
+        "modelVersionId"
+      ],
+      "properties": {
+        "modelInvariantId": {
+          "type": "string",
+          "description": "A model invariant Id as defined in a service model.",
+          "example": "my model invariant Id"
+        },
+        "modelVersionId": {
+          "type": "string",
+          "description": "A unique model Id as defined in a service model.",
+          "example": "my unique model Id"
+        },
+        "modelName": {
+          "type": "string",
+          "description": "A model name as defined in a service model",
+          "example": "my model name"
+        },
+        "modelType": {
+          "type": "string",
+          "description": "A model type as defined in a service model.",
+          "example": "my model type"
+        },
+        "modelVersion": {
+          "type": "string",
+          "description": "A model version as defined in a service model.",
+          "example": "my model version"
+        },
+        "modelCustomizationName": {
+          "type": "string",
+          "description": "A model customization name as defined in a service model.",
+          "example": "my model customization"
+        }
+      }
+    },
+    "Candidates": {
+      "type": "object",
+      "required": [
+        "identifierType",
+        "identifiers"
+      ],
+      "properties": {
+        "identifierType": {
+          "type": "string",
+          "enum": [
+            "service_instance_id",
+            "vnf_name",
+            "cloud_region_id"
+          ],
+          "description": "The type of a candidate.",
+          "example": "service_instance_id"
+        },
+        "identifiers": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "A list of identifiers.",
+          "example": "candidateId"
+        },
+        "cloudOwner": {
+          "type": "string",
+          "description": "The name of a cloud owner. Only required if identifierType is cloud_region_id",
+          "example": "cloud_owner"
+        }
+      }
+    },
+    "SubscriberInfo": {
+      "type": "object",
+      "required": [
+        "globalSubscriberId",
+        "subscriberName",
+        "subscriberCommonSiteId"
+      ],
+      "properties": {
+        "globalSubscriberId": {
+          "type": "string",
+          "description": "An ID of a subscriber.",
+          "example": "subscriber_id"
+        },
+        "subscriberName": {
+          "type": "string",
+          "description": "The name of a subscriber. If the name is not known, the value must be 'unknown'",
+          "example": "subscriber_name"
+        },
+        "subscriberCommonSiteId": {
+          "type": "string",
+          "description": "Id representing a subscriber location",
+          "example": "subscriber_location_id"
+        }
+      }
+    },
+    "LicenseInfo": {
+      "type": "object",
+      "required": [
+        "licenseDemands"
+      ],
+      "properties": {
+        "licenseDemands": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/LicenseDemands"
+          },
+          "description": "A list of resources for license selection"
+        }
+      }
+    },
+    "LicenseDemands": {
+      "type": "object",
+      "required": [
+        "resourceModuleName",
+        "serviceResourceId",
+        "resourceModelInfo"
+      ],
+      "properties": {
+        "resourceModuleName": {
+          "type": "string",
+          "description": "A resource name as defined in a service model.",
+          "example": "service_instance_id"
+        },
+        "serviceResourceId": {
+          "type": "string",
+          "description": "A unique resource Id with a local scope between client and OOF.",
+          "example": "service_instance_id"
+        },
+        "resourceModelInfo": {
+          "$ref": "#/definitions/ModelMetaData"
+        },
+        "existingLicenses": {
+          "$ref": "#/definitions/LicenseModel"
+        }
+      }
+    },
+    "LicenseModel": {
+      "type": "object",
+      "required": [
+        "entitlementPoolUUID",
+        "licenseKeyGroupUUID"
+      ],
+      "properties": {
+        "entitlementPoolUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "Entitlement pool UUIDs associated with a resource.",
+          "example": "candidateId"
+        },
+        "licenseKeyGroupUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "License key groups associated with a resource",
+          "example": "candidateId"
+        }
+      }
+    },
+    "SynchronousResponse": {
+      "type": "object",
+      "required": [
+        "requestId",
+        "transactionId",
+        "requestStatus"
+      ],
+      "properties": {
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique Id for an ONAP transaction",
+          "example": "ONAP transaction id"
+        },
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction.",
+          "example": "requests id"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failure.",
+          "example": "requestStatus"
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "success",
+            "failure"
+          ],
+          "description": "The status of a request.",
+          "example": "success"
+        }
+      }
+    },
+    "SynchronousTerminationResponse": {
+      "type": "object",
+      "required": [
+        "requestId",
+        "transactionId",
+        "requestStatus",
+        "terminateResponse"
+      ],
+      "properties": {
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique Id for an ONAP transaction",
+          "example": "ONAP transaction id"
+        },
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction.",
+          "example": "requests id"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failure.",
+          "example": "requestStatus"
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "success",
+            "failure"
+          ],
+          "description": "The status of a request.",
+          "example": "success"
+        },
+        "terminateResponse": {
+          "type": "boolean"
+        },
+        "reason": {
+          "type": "string",
+          "description": "Reason if terminateResponse is false",
+          "example": "Restricted by Policy"
+        }
+      }
+    },
+    "PlacementAsynchronousResponse": {
+      "type": "object",
+      "required": [
+        "requestId",
+        "transactionId",
+        "requestStatus",
+        "solutions"
+      ],
+      "properties": {
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique Id for an ONAP transaction",
+          "example": "ONAP transaction id"
+        },
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction.",
+          "example": "requests id"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failure.",
+          "example": "requestStatus"
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "success",
+            "failure"
+          ],
+          "description": "The status of a request.",
+          "example": "success"
+        },
+        "solutions": {
+          "$ref": "#/definitions/Solutions"
+        }
+      }
+    },
+    "Solutions": {
+      "type": "object",
+      "required": [
+        "placementSolutions",
+        "licenseSolutions"
+      ],
+      "properties": {
+        "placementSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/ComprehensiveSolution"
+          },
+          "description": "A list of placement solutions."
+        },
+        "licenseSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/LicenseSolution"
+          },
+          "description": "A list of license solutions."
+        }
+      }
+    },
+    "ComprehensiveSolution": {
+      "type": "object",
+      "required": [
+        "placementSolutions"
+      ],
+      "properties": {
+        "placementSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/PlacementSolution"
+          },
+          "description": "A list of placement solutions."
+        }
+      }
+    },
+    "PlacementSolution": {
+      "type": "object",
+      "required": [
+        "resourceModuleName",
+        "serviceResourceId",
+        "identifierType",
+        "identifier"
+      ],
+      "properties": {
+        "resourceModuleName": {
+          "type": "string",
+          "description": "The name of a resource as defined in the service model",
+          "example": "resource name"
+        },
+        "serviceResourceId": {
+          "type": "string",
+          "description": "A resource Id as defined in a service model.",
+          "example": "resource id"
+        },
+        "identifierType": {
+          "type": "string",
+          "enum": [
+            "service_instance_id"
+          ],
+          "description": "The type of a candidate.",
+          "example": "candidate type"
+        },
+        "identifier": {
+          "type": "string",
+          "description": "The id of a candidate.",
+          "example": "candidate id"
+        },
+        "assignmentInfo": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/AssignmentInfo"
+          },
+          "description": "Additional information related to a candidate."
+        }
+      }
+    },
+    "AssignmentInfo": {
+      "type": "object",
+      "required": [
+        "key",
+        "value"
+      ],
+      "properties": {
+        "key": {
+          "type": "string",
+          "description": "An attribute name",
+          "example": "attribute name"
+        },
+        "value": {
+          "type": "string",
+          "description": "An attribute value.",
+          "example": "attribute value"
+        }
+      }
+    },
+    "LicenseSolution": {
+      "type": "object",
+      "required": [
+        "resourceModuleName",
+        "serviceResourceId",
+        "entitlementPoolUUID",
+        "licenseKeyGroupUUID",
+        "entitlementPoolInvariantUUID",
+        "licenseKeyGroupInvariantUUID"
+      ],
+      "properties": {
+        "resourceModuleName": {
+          "type": "string",
+          "description": "A resource name as defined in a service",
+          "example": "resource name"
+        },
+        "serviceResourceId": {
+          "type": "string",
+          "description": "A resource Id as defined in a service.",
+          "example": "resource Id"
+        },
+        "entitlementPoolUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "A list of entitlementPoolUUIDs",
+          "example": "entitlementPoolUUID"
+        },
+        "licenseKeyGroupUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "A list of licenseKeyGroupUUID.",
+          "example": "licenseKeyGroupUUID"
+        },
+        "entitlementPoolInvariantUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "A list of entitlementPoolInvariantUUID",
+          "example": "entitlementPoolInvariantUUID"
+        },
+        "licenseKeyGroupInvariantUUID": {
+          "type": "array",
+          "items": {
+            "type": "string",
+            "format": "uuid"
+          },
+          "description": "A list of licenseKeyGroupInvariantUUID",
+          "example": "licenseKeyGroupInvariantUUID"
+        }
+      }
+    },
+    "ServiceInfo": {
+      "type": "object",
+      "required": [
+        "serviceInstanceId",
+        "modelInfo",
+        "serviceName"
+      ],
+      "properties": {
+        "serviceInstanceId": {
+          "type": "string",
+          "description": "A service instance id associated with a request.",
+          "example": "service_instance_id"
+        },
+        "modelInfo": {
+          "$ref": "#/definitions/ModelMetaData"
+        },
+        "serviceName": {
+          "type": "string",
+          "description": "The name of a service",
+          "example": "service_name"
+        }
+      }
+    },
+    "PCIOptRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "cellInfo"
+      ],
+      "properties": {
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo"
+        },
+        "cellInfo": {
+          "$ref": "#/definitions/CellInfo"
+        }
+      }
+    },
+    "CellInfo": {
+      "type": "object",
+      "required": [
+        "networkId",
+        "cellIdList",
+        "anrInputList",
+        "trigger"
+      ],
+      "properties": {
+        "networkId": {
+          "type": "string",
+          "description": "Id of network requiring PCI optimization",
+          "example": 100
+        },
+        "cellIdList": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "List of cellIds triggering need for PCI optimization (eg.potential confusion)",
+          "example": [
+            "cell0001",
+            "cell0002"
+          ]
+        },
+        "anrInputList": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/ANRInfo"
+          },
+          "description": "A list of ANR Input."
+        },
+        "fixedPCICells": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "List of blacklisted cells whose PCI values should not be changed",
+          "example": [
+            "cell0007",
+            "cell0009"
+          ]
+        },
+        "priorityTreatmentCells": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "List of cells which should be given special treatment during optimization",
+          "example": [
+            "cell0010",
+            "cell0003"
+          ]
+        },
+        "trigger": {
+          "type": "string",
+          "description": "Type of trigger causing need for PCI optimization",
+          "example": "NbrListChange"
+        }
+      }
+    },
+    "PCIAsynchronousResponse": {
+      "type": "object",
+      "required": [
+        "requestId",
+        "transactionId",
+        "requestStatus",
+        "solutions"
+      ],
+      "properties": {
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique Id for an ONAP transaction",
+          "example": "ONAP transaction id"
+        },
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction.",
+          "example": "requests id"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failure.",
+          "example": "requestStatus"
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "success",
+            "failure"
+          ],
+          "description": "The status of a request.",
+          "example": "success"
+        },
+        "solutions": {
+          "$ref": "#/definitions/PCIANRSolutions"
+        }
+      }
+    },
+    "PCIANRSolutions": {
+      "type": "object",
+      "required": [
+        "networkId",
+        "pciSolutions",
+        "anrSolutions"
+      ],
+      "properties": {
+        "networkId": {
+          "type": "string",
+          "description": "Id of network requiring PCI optimization",
+          "example": 100
+        },
+        "pciSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/PCISolution"
+          },
+          "description": "A list of PCI solutions."
+        },
+        "anrSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/ANRInfo"
+          },
+          "description": "A list of ANR solutions."
+        }
+      }
+    },
+    "PCISolution": {
+      "type": "object",
+      "required": [
+        "cellId",
+        "pci"
+      ],
+      "properties": {
+        "cellId": {
+          "type": "string",
+          "description": "cellId with modified PCI value",
+          "example": "cell0001"
+        },
+        "pci": {
+          "type": "integer",
+          "description": "New PCI value for cellId",
+          "example": 1
+        }
+      }
+    },
+    "ANRInfo": {
+      "type": "object",
+      "required": [
+        "cellId",
+        "removeableNeighbors"
+      ],
+      "properties": {
+        "cellId": {
+          "type": "string",
+          "description": "cellId with modified PCI value",
+          "example": "cell0001"
+        },
+        "removeableNeighbors": {
+          "type": "array",
+          "items": {
+            "type": "string"
+          },
+          "description": "List of neighbors to be removed",
+          "example": [
+            "cell0002",
+            "cell0003"
+          ]
+        }
+      }
+    },
+    "NSTSelectionRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "serviceProfile"
+      ],
+      "properties": {
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo2"
+        },
+        "serviceProfile": {
+          "$ref": "#/definitions/ServiceProfile"
+        }
+      }
+    },
+    "NSISelectionRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "serviceProfile",
+        "NSTInfo",
+        "NSSTInfo",
+        "subnetCapabilities"
+      ],
+      "properties": {
+        "serviceProfile": {
+          "$ref": "#/definitions/ServiceProfile"
+        },
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo2"
+        },
+        "NSTInfo": {
+          "$ref": "#/definitions/NSTInfo"
+        },
+        "NSSTInfo": {
+          "type": "array",
+          "description": "List of constituent NSST(s) of the NST",
+          "items": {
+            "$ref": "#/definitions/NSSTInfo"
+          }
+        },
+        "preferReuse": {
+          "type": "boolean",
+      "description": "true if reusing an existing NSI is preferred/false if creating a new NSI is preferred "
+        },
+        "subnetCapabilities": {
+          "type": "array",
+          "description": "List of subnet capabilities",
+          "items": {
+            "$ref": "#/definitions/SubnetCapability"
+          }
+        }
+      }
+    },
+    "NSSISelectionRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "NSSTInfo",
+        "sliceProfile"
+      ],
+      "properties": {
+        "sliceProfile": {
+          "$ref": "#/definitions/SliceProfile"
+        },
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo2"
+        },
+        "NSSTInfo": {
+          "$ref": "#/definitions/NSSTInfo"
+        }
+      }
+    },
+    "NxITerminationRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "type",
+        "NxIId"
+      ],
+      "properties": {
+        "type": {
+          "type": "string",
+      "enum": [
+         "NSI", 
+         "NSSI"      
+           ],
+          "description": "indicates if the request is for NSI/NSSI termination"
+        },
+        "NxIId": {
+          "type": "string",
+          "format": "UUID",
+          "description": "Id of NSI / NSSI"
+        },
+        "UUID": {
+          "type": "string",
+          "format": "UUID",
+          "description": "UUID of NST/NSST model"
+        },
+        "invariantUUID": {
+          "type": "string",
+          "format": "UUID",
+          "description": "invariant UUID of NST/NSST model"
+        },
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo2"
+        }
+      }
+    },
+    "SubnetCapability": {
+      "type": "object",
+      "required": [
+        "domainType",
+        "capabilityDetails"
+      ],
+      "properties": {
+        "domainType": {
+          "type": "string",
+          "description": "type of the subnet"
+        },
+        "capabilityDetails": {
+          "type": "string",
+          "description": "A JSON object containing capability parameters",
+          "example": {
+            "blob": "content"
+          }
+        }
+      }
+    },
+    "NSTInfo": {
+      "type": "object",
+      "required": [
+        "UUID",
+        "invariantUUID",
+        "name"
+      ],
+      "properties": {
+        "UUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "UUID of NST"
+        },
+        "invariantUUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Invariant UUID"
+        },
+        "name": {
+          "type": "string",
+          "description": "name of the NST model"
+        }
+      }
+    },
+    "NSSTInfo": {
+      "type": "object",
+      "required": [
+        "UUID",
+        "invariantUUID",
+        "name"
+      ],
+      "properties": {
+        "UUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "UUID of NSST"
+        },
+        "invariantUUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Invariant UUID"
+        },
+        "name": {
+          "type": "string",
+          "description": "name of the NSST model"
+        }
+      }
+    },
+    "ServiceProfile": {
+      "type": "string",
+      "description": "JSON blob. Containing service profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.",
+      "example": {
+        "blob": "content"
+      }
+    },
+    "SliceProfile": {
+      "type": "string",
+      "description": "JSON blob. Containing slice profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.",
+      "example": {
+        "blob": "content"
+      }
+    },
+    "RequestInfo2": {
+      "type": "object",
+      "required": [
+        "transactionId",
+        "requestId",
+        "callbackUrl",
+        "sourceId"
+      ],
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "unique ID to track an ONAP transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "callbackUrl": {
+          "type": "string",
+          "format": "url",
+          "description": "The end point of a callback service where recommendations are posted.",
+          "example": "myDomain.com/myCallback"
+        },
+        "callbackHeader": {
+          "type": "string",
+          "description": "JSON blob. The header information a client expecting in a async callback.",
+          "example": {
+            "blob": "content"
+          }
+        },
+        "sourceId": {
+          "type": "string",
+          "description": "The unique ID of a client making an optimization call.",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "timeout": {
+          "type": "integer",
+          "description": "A tolerance window (in second) for expecting solutions.",
+          "example": 5
+        },
+        "numSolutions": {
+          "type": "integer",
+          "description": "Expected number of solutions.",
+          "example": 1
+        },
+        "addtnlArgs": {
+          "type": "string",
+          "description": "Any additional parameters that have to be considered during selection",
+          "example": {
+            "blob": "content"
+          }
+        }
+      }
+    },
+    "NSTAsynchronousResponse": {
+      "type": "object",
+      "required": [
+        "transactionId",
+        "requestId",
+        "requestStatus",
+        "solutions"
+      ],
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "unique ID to track an ONAP transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failed."
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "completed",
+            "failed",
+            "pending"
+          ],
+          "description": "The status of a request."
+        },
+        "solutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/NSTSolution"
+          },
+          "description": "A list of NST solutions"
+        }
+      }
+    },
+    "NSTSolution": {
+      "type": "object",
+      "required": [
+        "UUID",
+        "NSTName",
+        "invariantUUID",
+        "matchLevel"
+      ],
+      "properties": {
+        "invariantUUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Invariant UUID of NST"
+        },
+        "UUID": {
+          "type": "string",
+          "format": "UUID of NST"
+        },
+        "NSTName": {
+          "type": "string",
+          "description": "NST name"
+        },
+        "matchLevel": {
+          "type": "string",
+          "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
+        }
+      }
+    },
+    "NSIAsynchronousResponse": {
+      "type": "object",
+      "required": [
+        "transactionId",
+        "requestId",
+        "requestStatus",
+        "solutions"
+      ],
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "unique ID to track an ONAP transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failed."
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "completed",
+            "failed",
+            "pending"
+          ],
+          "description": "The status of a request."
+        },
+        "solutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/NSISolution"
+          },
+          "description": "A list of NSI solutions"
+        }
+      }
+    },
+    "NSISolution": {
+      "type": "object",
+      "required": [
+        "existingNSI"
+      ],
+      "properties": {
+        "existingNSI": {
+          "type": "boolean",
+      "description": "true if NSISolution object has shareNSISolution/false if NSISolution object has newNSISolution"
+        },
+        "sharedNSISolution": {
+          "$ref": "#/definitions/SharedNSISolution"
+        },
+        "newNSISolution": {
+          "$ref": "#/definitions/NewNSISolution"
+        }
+      }
+    },
+    "SharedNSISolution": {
+      "type": "object",
+      "required": [
+        "invariantUUID",
+        "UUID",
+        "NSIName",
+        "NSIId",
+        "matchLevel"
+      ],
+      "properties": {
+        "invariantUUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Invariant UUID of NST"
+        },
+        "UUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "UUID of NST"
+        },
+        "NSIName": {
+          "type": "string",
+          "description": "Name of NSI"
+        },
+        "NSIId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Instance Id of NSI"
+        },
+        "matchLevel": {
+          "type": "string",
+          "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank"
+        }
+      }
+    },
+    "NewNSISolution": {
+      "type": "object",
+      "required": [
+        "sliceProfiles",
+        "matchLevel"
+      ],
+      "properties": {
+        "sliceProfiles": {
+          "type": "array",
+          "description": "List of slice profiles",
+          "items": {
+            "$ref": "#/definitions/SliceProfile"
+          }
+        },
+        "matchLevel": {
+          "type": "string",
+          "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank"
+        }
+      }
+    },
+    "NSSIAsynchronousResponse": {
+      "type": "object",
+      "required": [
+        "transactionId",
+        "requestId",
+        "requestStatus",
+        "solutions"
+      ],
+      "properties": {
+        "transactionId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "unique ID to track an ONAP transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "requestId": {
+          "type": "string",
+          "format": "uuid",
+          "description": "A unique ID to track multiple requests associated with a transaction",
+          "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
+        },
+        "statusMessage": {
+          "type": "string",
+          "description": "Reasoning if a requestStatus is failed."
+        },
+        "requestStatus": {
+          "type": "string",
+          "enum": [
+            "completed",
+            "failed",
+            "pending"
+          ],
+          "description": "The status of a request."
+        },
+        "solutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/SharedNSSISolution"
+          },
+          "description": "A list of NSSI solutions, empty list will be returned if no solution is found"
+        }
+      }
+    },
+    "SharedNSSISolution": {
+      "type": "object",
+      "required": [
+        "invariantUUID",
+        "UUID",
+        "NSSIName",
+        "NSSIId",
+        "matchLevel"
+      ],
+      "properties": {
+        "invariantUUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "Invariant UUID of NSST"
+        },
+        "UUID": {
+          "type": "string",
+          "format": "uuid",
+          "description": "UUID of NSST"
+        },
+        "NSSIName": {
+          "type": "string",
+          "description": "Name of NSSI"
+        },
+        "NSSIId": {
+          "type": "string",
+          "description": "Instance Id of NSSI"
+        },
+        "matchLevel": {
+          "type": "string",
+          "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
+        }
+      }
+    }
+  },
+  "schemes": [
+    "https"
+  ],
+  "host": "virtserver.swaggerhub.com",
+  "basePath": "/oof-osdf/v1"
+}