Add policy design api documentation

Adding swagger and global api table to api rst documentation

Issue-ID: POLICY-1680
Change-Id: Iae966917b73a8762172e708fe207c4fc6e52615f
Signed-off-by: Chenfei Gao <cgao@research.att.com>
diff --git a/.gitignore b/.gitignore
index 01eaa82..e7637a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,7 @@
 /bin/
 .idea
 **/*.iml
+docs/conf.py
+docs/conf.pyc
+docs/html/
+docs/_static/
diff --git a/docs/api/api.rst b/docs/api/api.rst
index 7df880c..fb42e3e 100644
--- a/docs/api/api.rst
+++ b/docs/api/api.rst
@@ -1,14 +1,38 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. This work is licensed under a
+.. Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
 
 .. _api-label:
 
 Policy Lifecycle API
 --------------------
 .. toctree::
-   :maxdepth: 1
+   :maxdepth: 1 
 
+Global API Table
+--------------------
+.. csv-table::
+   :header: "API name", "Swagger JSON"
+   :widths: 10,5
 
+   "Healthcheck API", ":download:`link <healthcheck-api.json>`"
+   "Statistics API", ":download:`link <statistics-api.json>`"
+   "Tosca Policy Type API", ":download:`link <policytype-api.json>`"
+   "Tosca Policy API", ":download:`link <policy-api.json>`"
+   "Legacy Guard Policy API", ":download:`link <guard-policy-api.json>`"
+   "Legacy Operational Policy API", ":download:`link <operational-policy-api.json>`"
 
+API Swagger
+--------------------
 
+.. swaggerv2doc:: healthcheck-api.json
 
-End of Document
+.. swaggerv2doc:: statistics-api.json
+
+.. swaggerv2doc:: policytype-api.json
+
+.. swaggerv2doc:: policy-api.json
+
+.. swaggerv2doc:: guard-policy-api.json
+
+.. swaggerv2doc:: operational-policy-api.json
diff --git a/docs/api/guard-policy-api.json b/docs/api/guard-policy-api.json
new file mode 100644
index 0000000..18a4258
--- /dev/null
+++ b/docs/api/guard-policy-api.json
@@ -0,0 +1,405 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [ {
+    "name" : "Legacy Guard Policy"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}" : {
+      "get" : {
+        "tags" : [ "Legacy Guard Policy" ],
+        "summary" : "Retrieve all versions of a particular guard policy",
+        "description" : "Returns a list of all versions of the specified guard policy",
+        "operationId" : "getAllVersionsOfGuardPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All versions of specified guard policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "type" : "object",
+              "additionalProperties" : {
+                "$ref" : "#/definitions/LegacyGuardPolicyOutput"
+              }
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}" : {
+      "get" : {
+        "tags" : [ "Legacy Guard Policy" ],
+        "summary" : "Retrieve one version of a particular guard policy",
+        "description" : "Returns a particular version of a specified guard policy",
+        "operationId" : "getSpecificVersionOfGuardPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Specified version of guard policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "type" : "object",
+              "additionalProperties" : {
+                "$ref" : "#/definitions/LegacyGuardPolicyOutput"
+              }
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "delete" : {
+        "tags" : [ "Legacy Guard Policy" ],
+        "summary" : "Delete a particular version of a guard policy",
+        "description" : "Delete a particular version of a guard policy. It must follow one rule. Rule: the version that has been deployed in PDP group(s) cannot be deleted",
+        "operationId" : "deleteSpecificVersionOfGuardPolicy",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly deleted guard policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "type" : "object",
+              "additionalProperties" : {
+                "$ref" : "#/definitions/LegacyGuardPolicyOutput"
+              }
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "409" : {
+            "description" : "Delete Conflict, Rule Violation"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies" : {
+      "post" : {
+        "tags" : [ "Legacy Guard Policy" ],
+        "summary" : "Create a new guard policy",
+        "description" : "Create a new guard policy. Client should provide entity body of the new guard policy",
+        "operationId" : "createGuardPolicy",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "Entity body of policy",
+          "required" : true,
+          "type" : "ToscaServiceTemplate",
+          "schema" : {
+            "$ref" : "#/definitions/LegacyGuardPolicyInput"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly created guard policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "type" : "object",
+              "additionalProperties" : {
+                "$ref" : "#/definitions/LegacyGuardPolicyOutput"
+              }
+            }
+          },
+          "400" : {
+            "description" : "Invalid Body"
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  },
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : {
+    "LegacyGuardPolicyContent" : {
+      "type" : "object",
+      "properties" : {
+        "actor" : {
+          "type" : "string"
+        },
+        "recipe" : {
+          "type" : "string"
+        },
+        "targets" : {
+          "type" : "string"
+        },
+        "clname" : {
+          "type" : "string"
+        },
+        "limit" : {
+          "type" : "string"
+        },
+        "timeWindow" : {
+          "type" : "string"
+        },
+        "timeUnits" : {
+          "type" : "string"
+        },
+        "min" : {
+          "type" : "string"
+        },
+        "max" : {
+          "type" : "string"
+        },
+        "guardActiveStart" : {
+          "type" : "string"
+        },
+        "guardActiveEnd" : {
+          "type" : "string"
+        },
+        "asPropertyMap" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        }
+      }
+    },
+    "LegacyGuardPolicyOutput" : {
+      "type" : "object",
+      "properties" : {
+        "type" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "object"
+          }
+        },
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/LegacyGuardPolicyContent"
+          }
+        }
+      }
+    },
+    "LegacyGuardPolicyInput" : {
+      "type" : "object",
+      "properties" : {
+        "policy-id" : {
+          "type" : "string"
+        },
+        "policy-version" : {
+          "type" : "string"
+        },
+        "content" : {
+          "$ref" : "#/definitions/LegacyGuardPolicyContent"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/docs/api/healthcheck-api.json b/docs/api/healthcheck-api.json
new file mode 100644
index 0000000..6605ee5
--- /dev/null
+++ b/docs/api/healthcheck-api.json
@@ -0,0 +1,99 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [{
+    "name" : "HealthCheck"
+  }],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/policy/api/v1/healthcheck" : {
+      "get" : {
+        "tags" : [ "HealthCheck" ],
+        "summary" : "Perform a system healthcheck",
+        "description" : "Returns healthy status of the Policy API component",
+        "operationId" : "getHealthCheck",
+        "produces" : [ "application/json" ],
+        "parameters" : [{
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Healthcheck report will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/HealthCheckReport"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  },
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : {
+    "HealthCheckReport" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "url" : {
+          "type" : "string"
+        },
+        "healthy" : {
+          "type" : "boolean"
+        },
+        "code" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "message" : {
+          "type" : "string"
+        }
+      }
+    }
+  }
+}
diff --git a/docs/api/operational-policy-api.json b/docs/api/operational-policy-api.json
new file mode 100644
index 0000000..ffa460b
--- /dev/null
+++ b/docs/api/operational-policy-api.json
@@ -0,0 +1,325 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [ {
+    "name" : "Legacy Operational Policy"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{policyId}" : {
+      "get" : {
+        "tags" : [ "Legacy Operational Policy" ],
+        "summary" : "Retrieve all versions of a particular operational policy",
+        "description" : "Returns a list of all versions of the specified operational policy",
+        "operationId" : "getAllVersionsOfOperationalPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All versions of specified operational policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/LegacyOperationalPolicy"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{policyId}/versions/{policyVersion}" : {
+      "get" : {
+        "tags" : [ "Legacy Operational Policy" ],
+        "summary" : "Retrieve one version of a particular operational policy",
+        "description" : "Returns a particular version of a specified operational policy",
+        "operationId" : "getSpecificVersionOfOperationalPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Specified version of specified operational policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/LegacyOperationalPolicy"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "delete" : {
+        "tags" : [ "Legacy Operational Policy" ],
+        "summary" : "Delete a particular version of a specified operational policy",
+        "description" : "Delete a particular version of an operational policy. It must follow one rule. Rule: the version that has been deployed in PDP group(s) cannot be deleted",
+        "operationId" : "deleteSpecificVersionOfOperationalPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly deleted operational policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/LegacyOperationalPolicy"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "409" : {
+            "description" : "Delete Conflict, Rule Violation"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies" : {
+      "post" : {
+        "tags" : [ "Legacy Operational Policy" ],
+        "summary" : "Create a new operational policy",
+        "description" : "Create a new operational policy. Client should provide entity body of the new operational policy",
+        "operationId" : "createOperationalPolicy",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "Entity body of policy",
+          "required" : true,
+          "type" : "ToscaServiceTemplate",
+          "schema" : {
+            "$ref" : "#/definitions/LegacyOperationalPolicy"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly created operational policy will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/LegacyOperationalPolicy"
+            }
+          },
+          "400" : {
+            "description" : "Invalid Body"
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  },
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : {
+    "LegacyOperationalPolicy" : {
+      "type" : "object",
+      "properties" : {
+        "policy-id" : {
+          "type" : "string"
+        },
+        "policy-version" : {
+          "type" : "string"
+        },
+        "content" : {
+          "type" : "string"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/docs/api/policy-api.json b/docs/api/policy-api.json
new file mode 100644
index 0000000..0037fd5
--- /dev/null
+++ b/docs/api/policy-api.json
@@ -0,0 +1,824 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [ {
+    "name" : "Policy"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies" : {
+      "get" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Retrieve all versions of a policy created for a particular policy type version",
+        "description" : "Returns a list of all versions of specified policy created for the specified policy type version",
+        "operationId" : "getAllPolicies",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All policies matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "post" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Create a new policy for a policy type version",
+        "description" : "Create a new policy for a policy type. Client should provide TOSCA body of the new policy",
+        "operationId" : "createPolicy",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        }, {
+          "in" : "body",
+          "name" : "body",
+          "description" : "Entity body of policy",
+          "required" : true,
+          "type" : "ToscaServiceTemplate",
+          "schema" : {
+            "$ref" : "#/definitions/ToscaServiceTemplate"
+          }
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly created policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "400" : {
+            "description" : "Invalid Body"
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}" : {
+      "get" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Retrieve all version details of a policy created for a particular policy type version",
+        "description" : "Returns a list of all version details of the specified policy",
+        "operationId" : "getAllVersionsOfPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All versions of specified policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/{policyVersion}" : {
+      "get" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Retrieve one version of a policy created for a particular policy type version",
+        "description" : "Returns a particular version of specified policy created for the specified policy type version",
+        "operationId" : "getSpecificVersionOfPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; The specified policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "delete" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Delete a particular version of a policy",
+        "description" : "Delete a particular version of a policy. It must follow one rule. Rule: the version that has been deployed in PDP group(s) cannot be deleted",
+        "operationId" : "deleteSpecificVersionOfPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "PolicyType ID",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyVersion",
+          "in" : "path",
+          "description" : "Version of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly deleted policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "409" : {
+            "description" : "Delete Conflict, Rule Violation"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/latest" : {
+      "get" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Retrieve the latest version of a particular policy",
+        "description" : "Returns the latest version of specified policy",
+        "operationId" : "getLatestVersionOfPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Latest version of specified policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{policyTypeVersion}/policies/{policyId}/versions/deployed" : {
+      "get" : {
+        "tags" : [ "Policy" ],
+        "summary" : "Retrieve deployed versions of a particular policy in pdp groups",
+        "description" : "Returns deployed versions of specified policy in pdp groups",
+        "operationId" : "getDeployedVersionsOfPolicy",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyTypeVersion",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "policyId",
+          "in" : "path",
+          "description" : "ID of policy",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Deployed versions of specified policy matching specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : "#/definitions/ToscaPolicy"
+              }
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  }, 
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : {
+    "ToscaConstraint" : {
+      "type" : "object",
+      "properties" : {
+        "valid_values" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string"
+          }
+        },
+        "equal" : {
+          "type" : "string"
+        },
+        "greater_than" : {
+          "type" : "string"
+        },
+        "greater_or_equal" : {
+          "type" : "string"
+        },
+        "less_than" : {
+          "type" : "string"
+        },
+        "less_or_equal" : {
+          "type" : "string"
+        }
+      }
+    },
+    "ToscaDataType" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        },
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/ToscaProperty"
+          }
+        }
+      }
+    },
+    "ToscaEntrySchema" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "type" : {
+          "type" : "string"
+        },
+        "typeVersion" : {
+          "type" : "string"
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        }
+      }
+    },
+    "ToscaPolicyType" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/ToscaProperty"
+          }
+        }
+      }
+    },
+    "ToscaPolicyTypeIdentifier" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        }
+      }
+    },
+    "ToscaProperty" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "type" : {
+          "type" : "string"
+        },
+        "typeVersion" : {
+          "type" : "string"
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "default" : {
+          "type" : "string"
+        },
+        "required" : {
+          "type" : "boolean"
+        },
+        "status" : {
+          "type" : "string",
+          "enum" : [ "SUPPORTED", "UNSUPPORTED", "EXPERIMENTAL", "DEPRECATED" ]
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        },
+        "entry_schema" : {
+          "$ref" : "#/definitions/ToscaEntrySchema"
+        }
+      }
+    },
+    "ToscaServiceTemplate" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "tosca_definitions_version" : {
+          "type" : "string"
+        },
+        "topology_template" : {
+          "$ref" : "#/definitions/ToscaTopologyTemplate"
+        },
+        "policy_types" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaPolicyType"
+            }
+          }
+        },
+        "data_types" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaDataType"
+            }
+          }
+        }
+      }
+    },
+    "ToscaTopologyTemplate" : {
+      "type" : "object",
+      "properties" : {
+        "description" : {
+          "type" : "string"
+        },
+        "policies" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaPolicy"
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/docs/api/policytype-api.json b/docs/api/policytype-api.json
new file mode 100644
index 0000000..2215164
--- /dev/null
+++ b/docs/api/policytype-api.json
@@ -0,0 +1,662 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [ {
+    "name" : "PolicyType"
+  } ],
+  "schemes" : [ "http", "https" ],
+  "paths" : {
+    "/policy/api/v1/policytypes" : {
+      "get" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Retrieve existing policy types",
+        "description" : "Returns a list of existing policy types stored in Policy Framework",
+        "operationId" : "getAllPolicyTypes",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All policy types will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "post" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Create a new policy type",
+        "description" : "Create a new policy type. Client should provide TOSCA body of the new policy type",
+        "operationId" : "createPolicyType",
+        "consumes" : [ "application/json" ],
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "in" : "body",
+          "name" : "body",
+          "description" : "Entity body of policy type",
+          "required" : true,
+          "type" : "ToscaServiceTemplate",
+          "schema" : {
+            "$ref" : "#/definitions/ToscaServiceTemplate"
+          }
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; The newly created policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "400" : {
+            "description" : "Invalid Body"
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}" : {
+      "get" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Retrieve all available versions of a policy type",
+        "description" : "Returns a list of all available versions for the specified policy type",
+        "operationId" : "getAllVersionsOfPolicyType",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All versions of specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/{versionId}" : {
+      "get" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Retrieve one particular version of a policy type",
+        "description" : "Returns a particular version for the specified policy type",
+        "operationId" : "getSpecificVersionOfPolicyType",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "versionId",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; One specified version of specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      },
+      "delete" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Delete one version of a policy type",
+        "description" : "Delete one version of a policy type. It must follow two rules. Rule 1: pre-defined policy types cannot be deleted; Rule 2: policy types that are in use (parameterized by a TOSCA policy) cannot be deleted. The parameterizing TOSCA policies must be deleted first.",
+        "operationId" : "deleteSpecificVersionOfPolicyType",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "versionId",
+          "in" : "path",
+          "description" : "Version of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Newly deleted policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "409" : {
+            "description" : "Delete Conflict, Rule Violation"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    },
+    "/policy/api/v1/policytypes/{policyTypeId}/versions/latest" : {
+      "get" : {
+        "tags" : [ "PolicyType" ],
+        "summary" : "Retrieve latest version of a policy type",
+        "description" : "Returns latest version for the specified policy type",
+        "operationId" : "getLatestVersionOfPolicyType",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "policyTypeId",
+          "in" : "path",
+          "description" : "ID of policy type",
+          "required" : true,
+          "type" : "string"
+        }, {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; Latest version of specified policy type will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/ToscaServiceTemplate"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "404" : {
+            "description" : "Resource Not Found"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  }, 
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : {
+    "ToscaConstraint" : {
+      "type" : "object",
+      "properties" : {
+        "valid_values" : {
+          "type" : "array",
+          "items" : {
+            "type" : "string"
+          }
+        },
+        "equal" : {
+          "type" : "string"
+        },
+        "greater_than" : {
+          "type" : "string"
+        },
+        "greater_or_equal" : {
+          "type" : "string"
+        },
+        "less_than" : {
+          "type" : "string"
+        },
+        "less_or_equal" : {
+          "type" : "string"
+        }
+      }
+    },
+    "ToscaDataType" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        },
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/ToscaProperty"
+          }
+        }
+      }
+    },
+    "ToscaEntrySchema" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "type" : {
+          "type" : "string"
+        },
+        "typeVersion" : {
+          "type" : "string"
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        }
+      }
+    },
+    "ToscaPolicyType" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "properties" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "$ref" : "#/definitions/ToscaProperty"
+          }
+        }
+      }
+    },
+    "ToscaPolicyTypeIdentifier" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        }
+      }
+    },
+    "ToscaProperty" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "type" : {
+          "type" : "string"
+        },
+        "typeVersion" : {
+          "type" : "string"
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "default" : {
+          "type" : "string"
+        },
+        "required" : {
+          "type" : "boolean"
+        },
+        "status" : {
+          "type" : "string",
+          "enum" : [ "SUPPORTED", "UNSUPPORTED", "EXPERIMENTAL", "DEPRECATED" ]
+        },
+        "constraints" : {
+          "type" : "array",
+          "items" : {
+            "$ref" : "#/definitions/ToscaConstraint"
+          }
+        },
+        "entry_schema" : {
+          "$ref" : "#/definitions/ToscaEntrySchema"
+        }
+      }
+    },
+    "ToscaServiceTemplate" : {
+      "type" : "object",
+      "properties" : {
+        "name" : {
+          "type" : "string"
+        },
+        "version" : {
+          "type" : "string"
+        },
+        "derived_from" : {
+          "type" : "string"
+        },
+        "metadata" : {
+          "type" : "object",
+          "additionalProperties" : {
+            "type" : "string"
+          }
+        },
+        "description" : {
+          "type" : "string"
+        },
+        "tosca_definitions_version" : {
+          "type" : "string"
+        },
+        "topology_template" : {
+          "$ref" : "#/definitions/ToscaTopologyTemplate"
+        },
+        "policy_types" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaPolicyType"
+            }
+          }
+        },
+        "data_types" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaDataType"
+            }
+          }
+        }
+      }
+    },
+    "ToscaTopologyTemplate" : {
+      "type" : "object",
+      "properties" : {
+        "description" : {
+          "type" : "string"
+        },
+        "policies" : {
+          "type" : "array",
+          "items" : {
+            "type" : "object",
+            "additionalProperties" : {
+              "$ref" : "#/definitions/ToscaPolicy"
+            }
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/docs/api/statistics-api.json b/docs/api/statistics-api.json
new file mode 100644
index 0000000..a55f03c
--- /dev/null
+++ b/docs/api/statistics-api.json
@@ -0,0 +1,147 @@
+{
+  "swagger" : "2.0",
+  "basePath" : "/",
+  "tags" : [{
+    "name" : "Statistics"
+  }],
+  "schemes" : [ "http", "https" ],
+  "paths" : { 
+    "/policy/api/v1/statistics" : {
+      "get" : {
+        "tags" : [ "Statistics" ],
+        "summary" : "Retrieve current statistics",
+        "description" : "Returns current statistics including the counters of API invocation",
+        "operationId" : "getStatistics",
+        "produces" : [ "application/json" ],
+        "parameters" : [ {
+          "name" : "X-ONAP-RequestID",
+          "in" : "header",
+          "description" : "RequestID for http transaction",
+          "required" : false,
+          "type" : "string",
+          "format" : "uuid"
+        } ],
+        "responses" : {
+          "200" : {
+            "description" : "successful operation; All statistics counters of API invocation will be returned.",
+            "headers" : {
+              "X-MinorVersion" : {
+                "type" : "string",
+                "description" : "Used to request or communicate a MINOR version back from the client to the server, and from the server back to the client"
+              },
+              "X-PatchVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate a PATCH version in a response for troubleshooting purposes only, and will not be provided by the client on request"
+              },
+              "X-LatestVersion" : {
+                "type" : "string",
+                "description" : "Used only to communicate an API's latest version"
+              },
+              "X-ONAP-RequestID" : {
+                "type" : "string",
+                "format" : "uuid",
+                "description" : "Used to track REST transactions for logging purpose"
+              }
+            },
+            "schema" : {
+              "$ref" : "#/definitions/StatisticsReport"
+            }
+          },
+          "401" : {
+            "description" : "Authentication Error"
+          },
+          "403" : {
+            "description" : "Authorization Error"
+          },
+          "500" : {
+            "description" : "Internal Server Error"
+          }
+        },
+        "security" : [ {
+          "basicAuth" : [ ]
+        } ],
+        "x-interface info" : {
+          "api-version" : "1.0.0",
+          "last-mod-release" : "Dublin"
+        }
+      }
+    }
+  },
+  "securityDefinitions" : {
+    "basicAuth" : {
+      "description" : "",
+      "type" : "basic"
+    }
+  },
+  "definitions" : { 
+    "StatisticsReport" : {
+      "type" : "object",
+      "properties" : {
+        "code" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "totalApiCallCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "apiCallSuccessCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "apiCallFailureCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "totalPolicyGetCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "totalPolicyPostCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "totalPolicyTypeGetCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "totalPolicyTypePostCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyGetSuccessCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyGetFailureCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyPostSuccessCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyPostFailureCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyTypeGetSuccessCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyTypeGetFailureCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyTypePostSuccessCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        },
+        "policyTypePostFailureCount" : {
+          "type" : "integer",
+          "format" : "int64"
+        }
+      }
+    }
+  }
+}