add swagger doc 93/65093/1
authorFrank Sandoval <f.sandoval-contractor@cablelabs.com>
Thu, 6 Sep 2018 21:48:37 +0000 (15:48 -0600)
committerFrank Sandoval <frank.sandoval@oamtechnologies.com>
Thu, 6 Sep 2018 22:27:23 +0000 (16:27 -0600)
Issue-ID: OPTFRA-282

Change-Id: I50a760e85f3df9c5861ed1f9aa7275bbb9b231a6
Signed-off-by: Frank Sandoval <f.sandoval-contractor@cablelabs.com>
docs/sections/offeredapis.rst
docs/sections/swaggerdoc/oof-osdf-has-api.json [new file with mode: 0644]

index 5c0f5e6..5151431 100644 (file)
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 
-******************
 Offered APIs
-******************
+=============================================
 
-OOF-HAS Create/Update API
-#########################
+This document describes the OSDF HAS (Homing and Allocation Service) API
 
-+--------------------+-------------------------------------+
-|Interface Definition|Description                          |
-+====================+=====================================+
-|URI                 |{serverRoot}/oof-osdf/v2/placement   |
-+--------------------+-------------------------------------+
-|Operation Type      |POST                                 |
-+--------------------+-------------------------------------+
-|Content-Type        |application/json                     |
-+--------------------+-------------------------------------+
 
+To view API documentation in the interactive swagger UI download the following and
+paste into the swagger tool here: https://editor.swagger.io
 
-Request Header
-**************
-
-+----------------+-----------+-------------------------------------------------------------------------------------------+
-| Header Name    | Required  | Description                                                                               |
-+================+===========+===========================================================================================+
-| Accept         | N         | Determines the format of the body of the response. Valid value is “application/json”      |
-+----------------+-----------+-------------------------------------------------------------------------------------------+
-| Authorization  | Y         | Supplies Basic Authentication credentials for the request. If the Authorization header is |
-|                |           | missing, then an HTTP 400 Invalid Request response is returned. If the string supplied is |
-|                |           | invalid, then an HTTP 401 Unauthorized response is returned.                              |
-+----------------+-----------+-------------------------------------------------------------------------------------------+
-| Content-Type   | Y         | Determines the format of the request content. Only application/json is supported.         |
-+----------------+-----------+-------------------------------------------------------------------------------------------+
-| Content-Length | N         | Number of bytes in the body of the request. Note that content length is limited to 1 MB.  |
-+----------------+-----------+-------------------------------------------------------------------------------------------+
-
-
-Request Body
-************
-
-+---------------+-----------+-------------+----------------------+---------------+------------------------------------------+
-| Attribute     | Qualifier | Cardinality | Content              | Domain Values | Description                              |
-+===============+===========+=============+======================+===============+==========================================+
-| requestInfo   | M         | 1           | RequestInfo Object   | -             | The content of the RequestInfo object.   |
-+---------------+-----------+-------------+----------------------+---------------+------------------------------------------+
-| placementInfo | M         | 1           | PlacementInfo Object | -             | The Content of the PlacementInfo object. |
-+---------------+-----------+-------------+----------------------+---------------+------------------------------------------+
-| licenseInfo   | M         | 1           | LicenseInfo Object   | -             | The Content of the LicenseInfo object.   |
-+---------------+-----------+-------------+----------------------+---------------+------------------------------------------+
-| serviceInfo   | M         | 1           | ServiceInfo Object   | -             | The Content of the ServiceInfo object.   |
-+---------------+-----------+-------------+----------------------+---------------+------------------------------------------+
-
-
-RequestInfo Object:
-
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| Attribute     | Qualifier | Cardinality | Content         | Domain Values | Description                                                           |
-+===============+===========+=============+=================+===============+=======================================================================+
-| transactionId | M         | 1           | UUID/String     | -             | A unique ID to track an ONAP transaction.                             |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| requestId     | M         | 1           | UUID/String     | -             | A unique ID to track multiple requests associated with a transaction. |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| callbackUrl   | M         | 1           | URL             | -             | The end point of a callback service where recommendations are posted. |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| sourceId      | M         | 1           | String          | -             | The unique ID of a client making an optimization call.                |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| requestType   | M         | 1           | String          | create,       | The type of a request                                                 |
-|               |           |             |                 | update,       |                                                                       |
-|               |           |             |                 | delete        |                                                                       |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| numSolutions  | O         | 1           | Integer         | -             | Expected number of solutions.                                         |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| optimizers    | M         | 1..N        | List of Strings | placement     | A list of optimization services.                                      |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-| timeout       | M         | 1           | Integer         | -             | A tolerance window (in second) for expecting solutions.               |
-+---------------+-----------+-------------+-----------------+---------------+-----------------------------------------------------------------------+
-
-
-PlacementInfo Object:
-
-+-------------------+-----------+-------------+--------------------------------+---------------+---------------------------------------------------+
-| Attribute         | Qualifier | Cardinality | Content                        | Domain Values | Description                                       |
-+===================+===========+=============+================================+===============+===================================================+
-| requestParameters | M         | 1           | JSON BLOB                      | -             | A service ordering information.                   |
-+-------------------+-----------+-------------+--------------------------------+---------------+---------------------------------------------------+
-| placementDemands  | M         | 1..N        | List of PlacementDemand Object | -             | The resource information for a placement service. |
-+-------------------+-----------+-------------+--------------------------------+---------------+---------------------------------------------------+
-
-
-PlacementDemand Object:
-
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| Attribute          | Qualifier | Cardinality | Content              | Domain Values | Description                                                     |
-+====================+===========+=============+======================+===============+=================================================================+
-| resourceModuleName | M         | 1           | String               | -             | A resource name as defined in a service model.                  |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| serviceResourceId  | M         | 1           | String               | -             | A unique resource Id with a local scope between client and OOF. |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| givenPlacement     | O         | 1           | KeyValuePairs        | -             | placement parameters defined in the ordering system,            |
-|                    |           |             |                      |               | keyname include tenantId.                                       |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| resourceModelInfo  | M         | 1           | ModelMetaData Object | -             | Resource model information as defined in SDC.                   |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| existingCandidates | O         | 1           | Candidates Object    | -             | The existing placement information of a resource.               |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| excludedCandidates | O         | 1           | Candidates Object    | -             | Candidates that need to be excluded from solutions.             |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| requiredCandidates | O         | 1           | Candidates Object    | -             | Candidates that must be included in solutions.                  |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-
-
-ModelMetaData Object:
-
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| Attribute              | Qualifier | Cardinality | Content | Domain Values | Description                                               |
-+========================+===========+=============+=========+===============+===========================================================+
-| modelInvariantId       | M         | 1           | String  | -             | A model invariant Id as defined in a service model.       |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| modelVersionId         | M         | 1           | String  | -             | A unique model Id as defined in a service model.          |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| modelName              | O         | 1           | String  | -             | A model name as defined in a service model.               |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| modelType              | O         | 1           | String  | -             | A model type as defined in a service model.               |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| modelVersion           | O         | 1           | String  | -             | A model version as defined in a service model.            |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-| modelCustomizationName | O         | 1           | String  | -             | A model customization name as defined in a service model. |
-+------------------------+-----------+-------------+---------+---------------+-----------------------------------------------------------+
-
-
-Candidates Object:
-
-+----------------+-----------+-------------+-----------------+----------------------+--------------------------+
-| Attribute      | Qualifier | Cardinality | Content         | Domain Values        | Description              |
-+================+===========+=============+=================+======================+==========================+
-| identifierType | M         | 1           | String          | service_instance_id, | The type of a candidate. |
-|                |           |             |                 | vnf_name,            |                          |
-|                |           |             |                 | cloud_region_id      |                          |
-+----------------+-----------+-------------+-----------------+----------------------+--------------------------+
-| identifiers    | M         | 1..N        | List of Strings | -                    | A list of identifiers.   |
-+----------------+-----------+-------------+-----------------+----------------------+--------------------------+
-
-
-ServiceInfo Object:
-
-+-------------------+-----------+-------------+----------------------+---------------+--------------------------------------------------+
-| Attribute         | Qualifier | Cardinality | Content              | Domain Values | Description                                      |
-+===================+===========+=============+======================+===============+==================================================+
-| serviceInstanceId | M         | 1           | String               | -             | A service instance id associated with a request. |
-+-------------------+-----------+-------------+----------------------+---------------+--------------------------------------------------+
-| serviceModelInfo  | M         | 1           | ModelMetaData Object | -             | A list of identifiers.                           |
-+-------------------+-----------+-------------+----------------------+---------------+--------------------------------------------------+
-
-
-LicenseInfo Object:
-
-+----------------+-----------+-------------+-------------------------------+---------------+--------------------------------------------+
-| Attribute      | Qualifier | Cardinality | Content                       | Domain Values | Description                                |
-+================+===========+=============+===============================+===============+============================================+
-| licenseDemands | M         | 1..N        | List of LicenseDemands Object | -             | A list of resources for license selection. |
-+----------------+-----------+-------------+-------------------------------+---------------+--------------------------------------------+
-
-
-LicenseDemands Object:
-
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| Attribute          | Qualifier | Cardinality | Content              | Domain Values | Description                                                     |
-+====================+===========+=============+======================+===============+=================================================================+
-| resourceModuleName | M         | 1           | String               | -             | A resource name as defined in a service model.                  |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| serviceResourceId  | M         | 1           | String               | -             | A unique resource Id with a local scope between client and OOF. |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| resourceModelInfo  | M         | 1           | ModelMetaData Object | -             | Resource model information as defined in a service model.       |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-| existingLicenses   | O         | 1           | LicenseModel Object  | -             | Existing license information assigned to a resource.            |
-+--------------------+-----------+-------------+----------------------+---------------+-----------------------------------------------------------------+
-
-
-LicenseModel Object:
-
-+---------------------+-----------+-------------+-----------------+---------------+----------------------------------------------------+
-| Attribute           | Qualifier | Cardinality | Content         | Domain Values | Description                                        |
-+=====================+===========+=============+=================+===============+====================================================+
-| entitlementPoolUUID | M         | 1..N        | List of Strings | -             | Entitlement pool UUIDs associated with a resource. |
-+---------------------+-----------+-------------+-----------------+---------------+----------------------------------------------------+
-| licenseKeyGroupUUID | M         | 1..N        | List of Strings | -             | License key groups associated with a resource      |
-+---------------------+-----------+-------------+-----------------+---------------+----------------------------------------------------+
-
-
-Synchronous Response Body:
-
-+---------------+-----------+-------------+-------------+------------------+------------------------------------------------------------------------+
-| Attribute     | Qualifier | Cardinality | Content     | Domain Values    | Description                                                            |
-+===============+===========+=============+=============+==================+========================================================================+
-| requestId     | M         | 1           | UUID/String | -                | A unique Id for an ONAP transaction.                                   |
-+---------------+-----------+-------------+-------------+------------------+------------------------------------------------------------------------+
-| transactionId | M         | 1           | UUID/String | -                | A unique ID to track multiple requests associated with a transaction.  |
-+---------------+-----------+-------------+-------------+------------------+------------------------------------------------------------------------+
-| statusMessage | O         | 1           | String      | -                | Reasoning if a requestStatus is failure.                               |
-+---------------+-----------+-------------+-------------+------------------+------------------------------------------------------------------------+
-| requestStatus | M         | 1           | String      | success, failure | The status of a request.                                               |
-+---------------+-----------+-------------+-------------+------------------+------------------------------------------------------------------------+
-
-
-Asynchronous Response Body:
-
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-| Attribute     | Qualifier | Cardinality | Content         | Domain Values | Description                                                            |
-+===============+===========+=============+=================+===============+========================================================================+
-| requestId     | M         | 1           | UUID/String     | -             | A unique Id for an ONAP transaction.                                   |
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-| transactionId | M         | 1           | UUID/String     | -             | A unique ID to track multiple requests associated with a transaction.  |
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-| statusMessage | O         | 1           | String          | -             | Reasoning if requestStatus is failure.                                 |
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-| requestStatus | M         | 1           | String          | success,      | The status of a request.                                               |
-|               |           |             |                 | failure,      |                                                                        |
-|               |           |             |                 | pending       |                                                                        |
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-| solutions     | M         | 1           | Solutions Object| -             | Solutions related to a request.                                        |
-+---------------+-----------+-------------+-----------------+---------------+------------------------------------------------------------------------+
-
-
-Solutions Object:
-
-+--------------------+-----------+-------------+--------------------------------------+---------------+--------------------------------+
-| Attribute          | Qualifier | Cardinality | Content                              | Domain Values | Description                    |
-+====================+===========+=============+======================================+===============+================================+
-| placementSolutions | M         | 1..N        | List of ComprehensiveSolution Object | -             | A list of placement solutions. |
-+--------------------+-----------+-------------+--------------------------------------+---------------+--------------------------------+
-| licenseSolutions   | M         | 1..N        | List of LicenseSolution Object       | -             | A list of license solutions    |
-+--------------------+-----------+-------------+--------------------------------------+---------------+--------------------------------+
-
-
-
-ComprehensiveSolution Object:
-
-+-----------+-----------+-------------+----------------------------------+---------------+--------------------------------+
-| Attribute | Qualifier | Cardinality | Content                          | Domain Values | Description                    |
-+===========+===========+=============+==================================+===============+================================+
-| -         | M         | 1..N        | List of PlacementSolution Object | -             | A list of placement solutions. |
-+-----------+-----------+-------------+----------------------------------+---------------+--------------------------------+
-
-
-PlacementSolution Object:
-
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-| Attribute          | Qualifier | Cardinality | Content                | Domain Values       | Description                                             |
-+====================+===========+=============+========================+=====================+=========================================================+
-| resourceModuleName | M         | 1           | String                 | -                   | The name of a resource as defined in the service model. |
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-| serviceResourceId  | M         | 1           | String                 | -                   | A resource Id as defined in a service model.            |
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-| identifierType     | M         | 1           | String                 | service_instance_id | The type of a candidate.                                |
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-| identifier         | M         | 1           | String                 | -                   | The id of a candidate.                                  |
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-| assignmentInfo     | O         | 1..N        | List of AssignmentInfo | -                   | Additional information related to a candidate.          |
-|                    |           |             | object                 |                     |                                                         |
-+--------------------+-----------+-------------+------------------------+---------------------+---------------------------------------------------------+
-
-
-AssignmentInfo Object:
-
-+-----------+-----------+-------------+---------+---------------+---------------------+
-| Attribute | Qualifier | Cardinality | Content | Domain Values | Description         |
-+===========+===========+=============+=========+===============+=====================+
-| key       | M         | 1           | String  | -             | An attribute name.  |
-+-----------+-----------+-------------+---------+---------------+---------------------+
-| value     | M         | 1           | String  | -             | An attribute value. |
-+-----------+-----------+-------------+---------+---------------+---------------------+
-
-
-LicenseSolutions Object:
-
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| Attribute                    | Qualifier | Cardinality | Content        | Domain Values | Description                              |
-+==============================+===========+=============+================+===============+==========================================+
-| resourceModuleName           | M         | 1           | String         | -             | A resource name as defined in a service. |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| serviceResourceId            | M         | 1           | String         | -             | A resource Id as defined in a service.   |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| entitlementPoolUUID          | M         | 1..N        | List of String | -             | A list of entitlementPoolUUIDs.          |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| licenseKeyGroupUUID          | M         | 1..N        | List of String | -             | A list of licenseKeyGroupUUID.           |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| entitlementPoolInvariantUUID | M         | 1..N        | List of String | -             | A list of entitlementPoolInvariantUUID . |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-| licenseKeyGroupInvariantUUID | M         | 1..N        | List of String | -             | A list of licenseKeyGroupInvariantUUID . |
-+------------------------------+-----------+-------------+----------------+---------------+------------------------------------------+
-
-
-HTTP Response Code
-++++++++++++++++++
-
-+-----------+-----------------------+---------------------------------------------------------------+
-| HTTP Code | Response Phrase       | Description                                                   |
-+===========+=======================+===============================================================+
-| 201       | Created               | An optimization solution is found.                            |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 202       | Accepted              | An optimization request is accepted.                          |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 400       | Bad request           | Bad request.                                                  |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 401       | Unauthorized          | Request body is not compliant with the API definition.        |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 404       | Not found             | The server cannot find the requested URI.                     |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 405       | Method not found      | The requested method is not supported by a server.            |
-+-----------+-----------------------+---------------------------------------------------------------+
-| 500       | Internal server error | The server encountered an internal server error or timed out. |
-+-----------+-----------------------+---------------------------------------------------------------+
+:download:`oof-osdf-has-api.json <./swaggerdoc/oof-osdf-has-api.json>`
 
+.. swaggerv2doc:: ./swaggerdoc/oof-osdf-has-api.json
 
 
diff --git a/docs/sections/swaggerdoc/oof-osdf-has-api.json b/docs/sections/swaggerdoc/oof-osdf-has-api.json
new file mode 100644 (file)
index 0000000..2fe2b97
--- /dev/null
@@ -0,0 +1,587 @@
+{
+  "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" : {
+        "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"
+          }
+        }
+      }
+    }
+  },
+  "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"
+          }
+        },
+        "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
+        }
+      }
+    },
+    "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",
+          "description" : "Resource model information as defined in SDC"
+        },
+        "existingCandidates" : {
+          "$ref" : "#/definitions/Candidates",
+          "description" : "The existing placement information of a resource."
+        },
+        "excludedCandidates" : {
+          "$ref" : "#/definitions/Candidates",
+          "description" : "Candidates that need to be excluded from solutions."
+        },
+        "requiredCandidates" : {
+          "$ref" : "#/definitions/Candidates",
+          "description" : "Candidates that must be included in solutions."
+        }
+      }
+    },
+    "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",
+          "description" : "Resource model information as defined in a service model."
+        },
+        "existingLicenses" : {
+          "$ref" : "#/definitions/LicenseModel",
+          "description" : "Existing license information assigned to a resource."
+        }
+      }
+    },
+    "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"
+        }
+      }
+    },
+    "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."
+        }
+      }
+    },
+    "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",
+          "description" : "A list of identifiers."
+        },
+        "serviceName" : {
+          "type" : "string",
+          "description" : "The name of a service",
+          "example" : "service_name"
+        }
+      }
+    }
+  },
+  "schemes" : [ "https" ],
+  "host" : "virtserver.swaggerhub.com",
+  "basePath" : "/oof-osdf/v1"
+}
\ No newline at end of file