[SEBA-823] REST APIs initial implementation (legacy+new)

Change-Id: Ia8480b72540ff08d35003534d39aff984e31120c
diff --git a/docs/swagger/legacy/bbsim.swagger.json b/docs/swagger/legacy/bbsim.swagger.json
new file mode 100644
index 0000000..2873efd
--- /dev/null
+++ b/docs/swagger/legacy/bbsim.swagger.json
@@ -0,0 +1,1648 @@
+{
+  "swagger": "2.0",
+  "info": {
+    "title": "BBSim API",
+    "version": "1.0",
+    "contact": {
+      "url": "http://opencord.org"
+    }
+  },
+  "schemes": [
+    "http"
+  ],
+  "consumes": [
+    "application/json"
+  ],
+  "produces": [
+    "application/json"
+  ],
+  "paths": {
+    "/v0/olt": {
+      "get": {
+        "summary": "Get current status of OLT",
+        "operationId": "OLTStatus",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyOLTStatusResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/flows": {
+      "get": {
+        "summary": "Get flows",
+        "operationId": "GetFlows",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyFlows"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "pon_port_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/onu/{onu_serial}/flows": {
+      "get": {
+        "summary": "Get flows",
+        "operationId": "GetFlows2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyFlows"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu_serial",
+            "description": "ONU serial number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "pon_port_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/onus": {
+      "get": {
+        "summary": "Get status of all or specific ONUs",
+        "operationId": "ONUStatus",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.pon_port_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "delete": {
+        "summary": "Deactivate ONU(s) for specific PON port(s) specified by\na given onu_serial, onu_id, or pon_port_id",
+        "operationId": "ONUDeactivate",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "body",
+            "in": "body",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "post": {
+        "summary": "Single/bulk activate ONU(s) for specific PON port(s)",
+        "operationId": "ONUActivate",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "body",
+            "in": "body",
+            "required": true,
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/onus/{onu.onu_serial}": {
+      "get": {
+        "summary": "Get status of all or specific ONUs",
+        "operationId": "ONUStatus2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.pon_port_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "delete": {
+        "summary": "Deactivate ONU(s) for specific PON port(s) specified by\na given onu_serial, onu_id, or pon_port_id",
+        "operationId": "ONUDeactivate2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.pon_port_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/onus/{onu_serial}/alarms/{alarm_type}/{status}": {
+      "post": {
+        "summary": "Generate ONU related alarms",
+        "operationId": "GenerateONUAlarm",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu_serial",
+            "description": "ONU serial number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "alarm_type",
+            "description": "Alarm types are:\n  \"signaldegrade\"\n  \"lossofomcichannel\"\n  \"lossofploam\"",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "status",
+            "description": "\"on\"/\"off\" indicates raised or cleared alarm",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/ports/{onu.pon_port_id}/onus": {
+      "get": {
+        "summary": "Get status of all or specific ONUs",
+        "operationId": "ONUStatus4",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "delete": {
+        "summary": "Deactivate ONU(s) for specific PON port(s) specified by\na given onu_serial, onu_id, or pon_port_id",
+        "operationId": "ONUDeactivate3",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "post": {
+        "summary": "Single/bulk activate ONU(s) for specific PON port(s)",
+        "operationId": "ONUActivate2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/ports/{onu.pon_port_id}/onus/{onu.onu_id}": {
+      "get": {
+        "summary": "Get status of all or specific ONUs",
+        "operationId": "ONUStatus3",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyONUs"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      },
+      "delete": {
+        "summary": "Deactivate ONU(s) for specific PON port(s) specified by\na given onu_serial, onu_id, or pon_port_id",
+        "operationId": "ONUDeactivate4",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.oper_state",
+            "description": "ONU oper state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.onu_state",
+            "description": "ONU internal state.",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "onu.gemports",
+            "in": "query",
+            "required": false,
+            "type": "array",
+            "items": {
+              "type": "integer",
+              "format": "int64"
+            },
+            "collectionFormat": "multi"
+          },
+          {
+            "name": "onu.tconts.uni_id",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.tconts.port_no",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/ports/{onu.pon_port_id}/onus/{onu.onu_serial}": {
+      "post": {
+        "summary": "Single/bulk activate ONU(s) for specific PON port(s)",
+        "operationId": "ONUActivate3",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "onu.pon_port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "onu.onu_serial",
+            "description": "ONU serial number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/ports/{port_type}/{port_id}/alarms/los/{status}": {
+      "post": {
+        "summary": "Generate OLT related alarms",
+        "operationId": "GenerateOLTAlarm",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "port_type",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "status",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/ports/{port_type}/{port_id}/status": {
+      "get": {
+        "summary": "Get status of a PON/NNI port",
+        "operationId": "PortStatus",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyPorts"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "port_type",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "port_id",
+            "in": "path",
+            "required": true,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "pon_port_max_onus",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "pon_port_active_onus",
+            "in": "query",
+            "required": false,
+            "type": "integer",
+            "format": "int64"
+          },
+          {
+            "name": "port_state",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          },
+          {
+            "name": "alarm_state",
+            "in": "query",
+            "required": false,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/status": {
+      "get": {
+        "summary": "Get current status of OLT",
+        "operationId": "OLTStatus2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyOLTStatusResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/olt/{device_type}/{serial_number}/action/{action}": {
+      "patch": {
+        "summary": "Perform actions on OLT/ONU devices (e.g. reboot)",
+        "operationId": "PerformDeviceAction2",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "device_type",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "serial_number",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "action",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    },
+    "/v0/{device_type}/action/{action}": {
+      "patch": {
+        "summary": "Perform actions on OLT/ONU devices (e.g. reboot)",
+        "operationId": "PerformDeviceAction",
+        "responses": {
+          "200": {
+            "description": "A successful response.",
+            "schema": {
+              "$ref": "#/definitions/legacyBBSimResponse"
+            }
+          },
+          "404": {
+            "description": "Returned when the resource does not exist.",
+            "schema": {
+              "type": "string",
+              "format": "string"
+            }
+          }
+        },
+        "parameters": [
+          {
+            "name": "device_type",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "name": "action",
+            "in": "path",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "tags": [
+          "BBSimService"
+        ]
+      }
+    }
+  },
+  "definitions": {
+    "legacyBBSimResponse": {
+      "type": "object",
+      "properties": {
+        "status_msg": {
+          "type": "string"
+        }
+      },
+      "title": "BBSim response message"
+    },
+    "legacyFlows": {
+      "type": "object",
+      "properties": {
+        "flows": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/openoltFlow"
+          }
+        }
+      }
+    },
+    "legacyOLTInfo": {
+      "type": "object",
+      "properties": {
+        "olt_id": {
+          "type": "string",
+          "format": "int64"
+        },
+        "olt_serial": {
+          "type": "string"
+        },
+        "olt_ip": {
+          "type": "string"
+        },
+        "olt_state": {
+          "type": "string"
+        },
+        "olt_vendor": {
+          "type": "string"
+        }
+      },
+      "title": "OLT information"
+    },
+    "legacyOLTStatusResponse": {
+      "type": "object",
+      "properties": {
+        "olt": {
+          "$ref": "#/definitions/legacyOLTInfo"
+        },
+        "ports": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/legacyPortInfo"
+          }
+        }
+      },
+      "title": "BBSim status"
+    },
+    "legacyONUInfo": {
+      "type": "object",
+      "properties": {
+        "onu_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pon_port_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "onu_serial": {
+          "type": "string",
+          "title": "ONU serial number"
+        },
+        "oper_state": {
+          "type": "string",
+          "title": "ONU oper state"
+        },
+        "onu_state": {
+          "type": "string",
+          "title": "ONU internal state"
+        },
+        "gemports": {
+          "type": "array",
+          "items": {
+            "type": "integer",
+            "format": "int64"
+          }
+        },
+        "tconts": {
+          "$ref": "#/definitions/legacyTconts"
+        }
+      },
+      "title": "ONU information"
+    },
+    "legacyONUs": {
+      "type": "object",
+      "properties": {
+        "onus": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/legacyONUInfo"
+          }
+        }
+      },
+      "title": "Bulk ONU operations"
+    },
+    "legacyPortInfo": {
+      "type": "object",
+      "properties": {
+        "port_type": {
+          "type": "string"
+        },
+        "port_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pon_port_max_onus": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pon_port_active_onus": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "port_state": {
+          "type": "string"
+        },
+        "alarm_state": {
+          "type": "string"
+        }
+      },
+      "title": "Port information"
+    },
+    "legacyPorts": {
+      "type": "object",
+      "properties": {
+        "ports": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/legacyPortInfo"
+          }
+        }
+      },
+      "title": "Bulk port information"
+    },
+    "legacyTconts": {
+      "type": "object",
+      "properties": {
+        "uni_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "port_no": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "tconts": {
+          "type": "array",
+          "items": {
+            "$ref": "#/definitions/tech_profileTrafficScheduler"
+          }
+        }
+      }
+    },
+    "openoltAction": {
+      "type": "object",
+      "properties": {
+        "cmd": {
+          "$ref": "#/definitions/openoltActionCmd"
+        },
+        "o_vid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "o_pbits": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "o_tpid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_vid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_pbits": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_tpid": {
+          "type": "integer",
+          "format": "int64"
+        }
+      }
+    },
+    "openoltActionCmd": {
+      "type": "object",
+      "properties": {
+        "add_outer_tag": {
+          "type": "boolean",
+          "format": "boolean"
+        },
+        "remove_outer_tag": {
+          "type": "boolean",
+          "format": "boolean"
+        },
+        "trap_to_host": {
+          "type": "boolean",
+          "format": "boolean"
+        }
+      }
+    },
+    "openoltClassifier": {
+      "type": "object",
+      "properties": {
+        "o_tpid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "o_vid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_tpid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_vid": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "o_pbits": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "i_pbits": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "eth_type": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "dst_mac": {
+          "type": "string",
+          "format": "byte"
+        },
+        "src_mac": {
+          "type": "string",
+          "format": "byte"
+        },
+        "ip_proto": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "dst_ip": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "src_ip": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "src_port": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "dst_port": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pkt_tag_type": {
+          "type": "string"
+        }
+      }
+    },
+    "openoltFlow": {
+      "type": "object",
+      "properties": {
+        "access_intf_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "onu_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "uni_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "flow_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "flow_type": {
+          "type": "string"
+        },
+        "alloc_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "network_intf_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "gemport_id": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "classifier": {
+          "$ref": "#/definitions/openoltClassifier"
+        },
+        "action": {
+          "$ref": "#/definitions/openoltAction"
+        },
+        "priority": {
+          "type": "integer",
+          "format": "int32"
+        },
+        "cookie": {
+          "type": "string",
+          "format": "uint64"
+        },
+        "port_no": {
+          "type": "integer",
+          "format": "int64"
+        }
+      }
+    },
+    "tech_profileAdditionalBW": {
+      "type": "string",
+      "enum": [
+        "AdditionalBW_None",
+        "AdditionalBW_NA",
+        "AdditionalBW_BestEffort",
+        "AdditionalBW_Auto"
+      ],
+      "default": "AdditionalBW_None"
+    },
+    "tech_profileDirection": {
+      "type": "string",
+      "enum": [
+        "UPSTREAM",
+        "DOWNSTREAM",
+        "BIDIRECTIONAL"
+      ],
+      "default": "UPSTREAM"
+    },
+    "tech_profileInferredAdditionBWIndication": {
+      "type": "string",
+      "enum": [
+        "InferredAdditionBWIndication_None",
+        "InferredAdditionBWIndication_Assured",
+        "InferredAdditionBWIndication_BestEffort"
+      ],
+      "default": "InferredAdditionBWIndication_None"
+    },
+    "tech_profileSchedulerConfig": {
+      "type": "object",
+      "properties": {
+        "direction": {
+          "$ref": "#/definitions/tech_profileDirection"
+        },
+        "additional_bw": {
+          "$ref": "#/definitions/tech_profileAdditionalBW"
+        },
+        "priority": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "weight": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "sched_policy": {
+          "$ref": "#/definitions/tech_profileSchedulingPolicy"
+        }
+      }
+    },
+    "tech_profileSchedulingPolicy": {
+      "type": "string",
+      "enum": [
+        "WRR",
+        "StrictPriority",
+        "Hybrid"
+      ],
+      "default": "WRR"
+    },
+    "tech_profileTrafficScheduler": {
+      "type": "object",
+      "properties": {
+        "direction": {
+          "$ref": "#/definitions/tech_profileDirection"
+        },
+        "alloc_id": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "scheduler": {
+          "$ref": "#/definitions/tech_profileSchedulerConfig"
+        },
+        "traffic_shaping_info": {
+          "$ref": "#/definitions/tech_profileTrafficShapingInfo"
+        }
+      }
+    },
+    "tech_profileTrafficShapingInfo": {
+      "type": "object",
+      "properties": {
+        "cir": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "cbs": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pir": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "pbs": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "gir": {
+          "type": "integer",
+          "format": "int64"
+        },
+        "add_bw_ind": {
+          "$ref": "#/definitions/tech_profileInferredAdditionBWIndication"
+        }
+      }
+    }
+  }
+}