[ONOS-4016] Implement Region administration REST API

- Impelent Region management REST API
- Add unit test for Region management REST API
- Add swagger docs for Region management REST API
- Add SCR Component and Service annotation for RegionManager

Change-Id: I042e92ed7144d596659b779a59239afba832ca62
diff --git a/web/api/src/main/resources/definitions/Region.json b/web/api/src/main/resources/definitions/Region.json
new file mode 100644
index 0000000..2f27258
--- /dev/null
+++ b/web/api/src/main/resources/definitions/Region.json
@@ -0,0 +1,42 @@
+{
+  "type": "object",
+  "title": "region",
+  "required": [
+    "id",
+    "name",
+    "type",
+    "masters"
+  ],
+  "properties": {
+    "id": {
+      "type": "string",
+      "example": "1"
+    },
+    "name": {
+      "type": "string",
+      "example": "region"
+    },
+    "type": {
+      "type": "string",
+      "example": "ROOM"
+    },
+    "masters": {
+      "type": "array",
+      "xml": {
+        "name": "masters",
+        "wrapped": true
+      },
+      "items": {
+        "type": "array",
+        "xml": {
+          "name": "masters",
+          "wrapped": true
+        },
+        "items": {
+          "type": "string",
+          "example": "1"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/web/api/src/main/resources/definitions/RegionDeviceIds.json b/web/api/src/main/resources/definitions/RegionDeviceIds.json
new file mode 100644
index 0000000..114e0a6
--- /dev/null
+++ b/web/api/src/main/resources/definitions/RegionDeviceIds.json
@@ -0,0 +1,20 @@
+{
+  "type": "object",
+  "title": "deviceIds",
+  "required": [
+    "deviceIds"
+  ],
+  "properties": {
+    "deviceIds": {
+      "type": "array",
+      "xml": {
+        "name": "deviceIds",
+        "wrapped": true
+      },
+      "items": {
+        "type": "string",
+        "example": "of:0000000000000001"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/web/api/src/main/resources/definitions/RegionPost.json b/web/api/src/main/resources/definitions/RegionPost.json
new file mode 100644
index 0000000..88dc91d
--- /dev/null
+++ b/web/api/src/main/resources/definitions/RegionPost.json
@@ -0,0 +1,42 @@
+{
+  "type": "object",
+  "title": "region",
+  "required": [
+    "id",
+    "name",
+    "type",
+    "masters"
+  ],
+  "properties": {
+    "id": {
+      "type": "string",
+      "example": "1"
+    },
+    "name": {
+      "type": "string",
+      "example": "region"
+    },
+    "type": {
+      "type": "string",
+      "example": "ROOM"
+    },
+    "masters": {
+      "type": "array",
+      "xml": {
+        "name": "masters",
+        "wrapped": true
+      },
+      "items": {
+        "type": "array",
+        "xml": {
+          "name": "masters",
+          "wrapped": true
+        },
+        "items": {
+          "type": "string",
+          "example": "1"
+        }
+      }
+    }
+  }
+}
diff --git a/web/api/src/main/resources/definitions/Regions.json b/web/api/src/main/resources/definitions/Regions.json
new file mode 100644
index 0000000..7ab7a11
--- /dev/null
+++ b/web/api/src/main/resources/definitions/Regions.json
@@ -0,0 +1,58 @@
+{
+  "type": "object",
+  "title": "regions",
+  "required": [
+    "regions"
+  ],
+  "properties": {
+    "regions": {
+      "type": "array",
+      "xml": {
+        "name": "regions",
+        "wrapped": true
+      },
+      "items": {
+        "type": "object",
+        "title": "region",
+        "required": [
+          "id",
+          "name",
+          "type",
+          "masters"
+        ],
+        "properties": {
+          "id": {
+            "type": "string",
+            "example": "1"
+          },
+          "name": {
+            "type": "string",
+            "example": "region"
+          },
+          "type": {
+            "type": "string",
+            "example": "ROOM"
+          },
+          "masters": {
+            "type": "array",
+            "xml": {
+              "name": "masters",
+              "wrapped": true
+            },
+            "items": {
+              "type": "array",
+              "xml": {
+                "name": "masters",
+                "wrapped": true
+              },
+              "items": {
+                "type": "string",
+                "example": "1"
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file