Initial model changes and api changes for pci-opt
[optf/osdf.git] / docs / sections / swaggerdoc / oof-osdf-has-api.json
index 2fe2b97..16e9ab1 100644 (file)
 {
-  "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"
+  "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"
+    "license": {
+      "name": "Apache 2.0",
+      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
     }
   },
-  "securityDefinitions" : {
-    "basicAuth" : {
-      "type" : "basic",
-      "description" : "HTTP Basic Auth"
+  "securityDefinitions": {
+    "basicAuth": {
+      "type": "basic",
+      "description": "HTTP Basic Auth"
     }
   },
-  "security" : [ {
-    "basicAuth" : [ ]
-  } ],
-  "paths" : {
-    "/v2/placement" : {
-      "post" : {
-        "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"
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ],
+  "paths": {
+    "/v2/placement": {
+      "post": {
+        "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": {
+      "$ref": "#/paths/~1v2~1placement"
+    },
+    "/api/oof/v1/pci": {
+      "post": {
+        "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."
+        ],
+        "responses": {
+          "201": {
+            "description": "An optimization solution is found."
           },
-          "202" : {
-            "description" : "An optimization request is accepted"
+          "202": {
+            "description": "An optimization request is accepted"
           },
-          "400" : {
-            "description" : "bad request"
+          "400": {
+            "description": "bad request"
           },
-          "401" : {
-            "description" : "Request body is not compliant with the API definition"
+          "401": {
+            "description": "Request body is not compliant with the API definition"
           },
-          "404" : {
-            "description" : "The server cannot find the requested URI"
+          "404": {
+            "description": "The server cannot find the requested URI"
           },
-          "405" : {
-            "description" : "The requested method is not supported by a server."
+          "405": {
+            "description": "The requested method is not supported by a server."
           },
-          "500" : {
-            "description" : "The server encountered an internal server error or timed out"
+          "500": {
+            "description": "The server encountered an internal server error or timed out"
           }
         }
       }
+    },
+    "/api/oof/pci/v1": {
+      "$ref": "#/paths/~1api~1oof~1v1~1pci"
     }
   },
-  "definitions" : {
-    "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"
+  "definitions": {
+    "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"
+    "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" ]
-          },
-          "description" : "A list of optimization services.",
-          "example" : "placement"
-        },
-        "timeout" : {
-          "type" : "integer",
-          "description" : "A tolerance window (in second) for expecting solutions.",
-          "example" : 5
+        "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"
+    "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"
+        "placementDemands": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/PlacementDemand"
           },
-          "description" : "The resource information for a placement service"
+          "description": "The resource information for a placement service"
         },
-        "subscriberInfo" : {
-          "type" : "object",
-          "items" : {
-            "$ref" : "#/definitions/SubscriberInfo"
+        "subscriberInfo": {
+          "type": "object",
+          "items": {
+            "$ref": "#/definitions/SubscriberInfo"
           },
-          "description" : "The information of a service subscriber."
+          "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"
+    "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"
+              "value": {
+                "type": "string"
               }
             }
           },
-          "description" : "placement parameters defined in the ordering system, keyname include tenantId",
-          "example" : {
-            "tenantId" : "1"
+          "description": "placement parameters defined in the ordering system, keyname include tenantId",
+          "example": {
+            "tenantId": "1"
           }
         },
-        "resourceModelInfo" : {
-          "$ref" : "#/definitions/ModelMetaData",
-          "description" : "Resource model information as defined in SDC"
+        "resourceModelInfo": {
+          "$ref": "#/definitions/ModelMetaData"
+        },
+        "existingCandidates": {
+          "$ref": "#/definitions/Candidates"
         },
-        "existingCandidates" : {
-          "$ref" : "#/definitions/Candidates",
-          "description" : "The existing placement information of a resource."
+        "excludedCandidates": {
+          "$ref": "#/definitions/Candidates"
         },
-        "excludedCandidates" : {
-          "$ref" : "#/definitions/Candidates",
-          "description" : "Candidates that need to be excluded from solutions."
+        "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"
         },
-        "requiredCandidates" : {
-          "$ref" : "#/definitions/Candidates",
-          "description" : "Candidates that must be included in solutions."
+        "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"
         }
       }
     },
-    "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"
+    "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"
         }
       }
     },
-    "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"
+    "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"
         }
       }
     },
-    "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"
+    "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."
         }
       }
     },
-    "LicenseInfo" : {
-      "type" : "object",
-      "required" : [ "licenseDemands" ],
-      "properties" : {
-        "licenseDemands" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/LicenseDemands"
-          },
-          "description" : "A list of resources for license selection"
+    "ComprehensiveSolution": {
+      "type": "object",
+      "required": [
+        "placementSolutions"
+      ],
+      "properties": {
+        "placementSolutions": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/PlacementSolution"
+          },
+          "description": "A list of placement solutions."
         }
       }
     },
-    "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",
-          "description" : "Resource model information as defined in a service model."
-        },
-        "existingLicenses" : {
-          "$ref" : "#/definitions/LicenseModel",
-          "description" : "Existing license information assigned to a resource."
+    "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."
         }
       }
     },
-    "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"
+    "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"
         }
       }
     },
-    "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"
+    "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"
         }
       }
     },
-    "AsynchronousResponse" : {
-      "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",
-          "description" : "Solutions related to a request."
+    "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"
         }
       }
     },
-    "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."
+    "PCIOptRequest": {
+      "type": "object",
+      "required": [
+        "requestInfo",
+        "cellInfo"
+      ],
+      "properties": {
+        "requestInfo": {
+          "$ref": "#/definitions/RequestInfo"
+        },
+        "cellInfo": {
+          "$ref": "#/definitions/CellInfo"
         }
       }
     },
-    "ComprehensiveSolution" : {
-      "type" : "object",
-      "required" : [ "placementSolutions" ],
-      "properties" : {
-        "placementSolutions" : {
-          "type" : "array",
-          "items" : {
-            "$ref" : "#/definitions/PlacementSolution"
-          },
-          "description" : "A list of placement solutions."
+    "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."
+        },
+        "trigger": {
+          "type": "string",
+          "description": "Type of trigger causing need for PCI optimization",
+          "example": "NbrListChange"
         }
       }
     },
-    "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."
+    "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"
         }
       }
     },
-    "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"
+    "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."
         }
       }
     },
-    "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"
+    "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
         }
       }
     },
-    "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",
-          "description" : "A list of identifiers."
-        },
-        "serviceName" : {
-          "type" : "string",
-          "description" : "The name of a service",
-          "example" : "service_name"
+    "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"
+          ]
         }
       }
     }
   },
-  "schemes" : [ "https" ],
-  "host" : "virtserver.swaggerhub.com",
-  "basePath" : "/oof-osdf/v1"
+  "schemes": [
+    "https"
+  ],
+  "host": "virtserver.swaggerhub.com",
+  "basePath": "/oof-osdf/v1"
 }
\ No newline at end of file