{ "openapi" : "3.0.1", "info" : { "title" : "NTM Element Manager (EM)", "description" : "Network Topology Manager - Open RESTApi protocol description", "contact" : { "name" : "Telescent Support", "url" : "https://www.telescent.com" }, "version" : "1.0" }, "servers" : [ { "url" : "http://{ntmHostname}:{ntmRestServerPort}/rest/v1", "description" : "NTM RESTApi URL", "variables" : { "ntmHostname" : { "description" : "The hostname or IP", "default" : "localhost" }, "ntmRestServerPort" : { "description" : "RESTApi server port, default is 9888", "default" : "9888" } } } ], "security" : [ { "BasicAuth" : [ ] } ], "tags" : [ { "name" : "port", "description" : "NTM port related operations: connect, disconnect, cleanfiber, etc" }, { "name" : "queue", "description" : "Command queue related operations: command status" }, { "name" : "opmon", "description" : "Optical monitoring operations like OPM, OTDR" }, { "name" : "alias", "description" : "Operations to manipulate port aliases" }, { "name" : "alarm", "description" : "View and clear alarms" }, { "name" : "system", "description" : "System related operations like uptime, status" } ], "paths" : { "/alarm/{alarmUUID}" : { "get" : { "tags" : [ "alarm" ], "description" : "Get alarm details based on alarm id", "operationId" : "getAlarm", "parameters" : [ { "name" : "alarmUUID", "in" : "path", "description" : "Alarm id", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } } ], "responses" : { "200" : { "description" : "Returns the alarm details", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AlarmResponse" } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No alarm found for specified alarm id", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } }, "delete" : { "tags" : [ "alarm" ], "description" : "Clears an alarm based on alarm id and returns the alarm details", "operationId" : "clearAlarm", "parameters" : [ { "name" : "alarmUUID", "in" : "path", "description" : "Alarm id", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } } ], "responses" : { "200" : { "description" : "Returns the alarm details after it was cleared", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AlarmResponse" } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No alarm found for specified alarm id", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/alarm" : { "get" : { "tags" : [ "alarm" ], "description" : "Get alarms. Without parameters fetches all active alarms", "operationId" : "getAlarms", "parameters" : [ { "name" : "all", "in" : "query", "schema" : { "type" : "boolean", "default" : false } }, { "name" : "filter", "in" : "query", "schema" : { "type" : "string" } }, { "name" : "filterby", "in" : "query", "schema" : { "type" : "string" } }, { "name" : "tsperiod", "in" : "query", "schema" : { "type" : "string" } }, { "name" : "sortby", "in" : "query", "schema" : { "type" : "string" } }, { "name" : "order", "in" : "query", "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Returns a list of alarm", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/AlarmResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/alias/{port}" : { "get" : { "tags" : [ "alias" ], "description" : "Get all aliases for a given port", "operationId" : "getAliasesForPort", "parameters" : [ { "name" : "port", "in" : "path", "description" : "The port parameter can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] } } ], "responses" : { "200" : { "description" : "Returns a list of aliases for the given port", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/PortAliasResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } }, "delete" : { "tags" : [ "alias" ], "description" : "Deletes all aliases for a given port", "operationId" : "deleteAllAliasesForPort", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Returns the aliases for given port. If delete operation succeeds the returned list will be emtpy ", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/PortAliasResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/alias/{port}/{alias}" : { "post" : { "tags" : [ "alias" ], "description" : "Adds a new alias to the given port", "operationId" : "addAlias", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "alias", "in" : "path", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] } } ], "responses" : { "200" : { "description" : "Returns the new list of aliases", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/PortAliasResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } }, "delete" : { "tags" : [ "alias" ], "description" : "Deletes one alias for a specified port", "operationId" : "deleteAlias", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "alias", "in" : "path", "description" : "The alias to be deleted.", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] } } ], "responses" : { "200" : { "description" : "The list of aliases after the delete. Must be empty", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PortAliasResponse" } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/alias" : { "get" : { "tags" : [ "alias" ], "description" : "Get all aliases for a given port type: INPUT, OUTPUT or DUPLEX", "operationId" : "getAliases", "parameters" : [ { "name" : "direction", "in" : "query", "description" : "Port type. DUPLEX is assumed if the parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] } } ], "responses" : { "200" : { "description" : "Returns a list of aliases. Returns a list of aliases or an empty list if no aliases are defined", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/PortAliasResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/sysuptime" : { "get" : { "tags" : [ "system" ], "description" : "Returns current system uptime", "operationId" : "sysuptime", "responses" : { "200" : { "description" : "System uptime", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SysUptimeResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/appstatus" : { "get" : { "tags" : [ "system" ], "description" : "Returns current NTM status", "operationId" : "appStatus", "responses" : { "200" : { "description" : "Current NTM EM status", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AppStatusResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/cleanfiber/{port}" : { "post" : { "tags" : [ "port" ], "description" : "Triggers a cleanfiber operation for a given INPUT port", "operationId" : "cleanfiber", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number. Always an INPUT port.", "required" : true, "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CleanFiberResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found for supplied input", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/history" : { "get" : { "tags" : [ "queue" ], "description" : "Retrieves commands history", "operationId" : "getCommandHistory", "parameters" : [ { "name" : "user", "in" : "query", "description" : "Optional filtering based on user login", "allowEmptyValue" : true, "schema" : { "type" : "string" }, "example" : "ntm" }, { "name" : "count", "in" : "query", "description" : "Number of records to retrieve.", "schema" : { "type" : "integer", "format" : "int32", "default" : 100 } } ], "responses" : { "200" : { "description" : "Returns a list of aliases. Returns a list of aliases or an empty list if no aliases are defined", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/HistoryRestResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/opower/{port}" : { "get" : { "tags" : [ "opmon" ], "description" : "Retrieves OPM data for a given port", "operationId" : "getOpticalPower", "parameters" : [ { "name" : "port", "in" : "path", "description" : "The port parameter can be an existing alias or a port number. Always an INPUT port.", "required" : true, "schema" : { "type" : "string" } }, { "name" : "wavelength", "in" : "query", "description" : "Wavelength", "schema" : { "type" : "string", "enum" : [ "l1310nm", "l1550nm" ] } }, { "name" : "mw", "in" : "query", "description" : "Signals if milliwatts or dBM. True for milliwatts", "schema" : { "type" : "boolean" } }, { "name" : "count", "in" : "query", "schema" : { "type" : "integer", "format" : "int32", "default" : 100 } } ], "responses" : { "200" : { "description" : "Returns a list of OPM measurements for a given port", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/OPMLookupResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found for supplied input", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "OPM module not installed", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } }, "post" : { "tags" : [ "opmon" ], "description" : "Triggers an optical power measurement for a given INPUT port", "operationId" : "measureOpticalPower", "parameters" : [ { "name" : "port", "in" : "path", "description" : "The port parameter can be an existing alias or a port number. Always an INPUT port.", "required" : true, "schema" : { "type" : "string" } }, { "name" : "wavelength", "in" : "query", "description" : "Wavelength", "schema" : { "type" : "string", "enum" : [ "l1310nm", "l1550nm" ] } }, { "name" : "mw", "in" : "query", "description" : "Signals if milliwatts or dBM. True for milliwatts", "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/OPMMesureResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found for supplied input", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "OPM module not installed", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/otdr/{port}" : { "get" : { "tags" : [ "opmon" ], "description" : "Retrieves OTDR historical data with filtering capabilities", "operationId" : "getOTDRMeasurements", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Measurement direction: INPUT or OUTPUT. If missing both direction are assumed", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT" ] } }, { "name" : "loopback", "in" : "query", "description" : "If true loopback mode will be used. Default is assumed false.", "schema" : { "type" : "string", "default" : "false" } }, { "name" : "limit", "in" : "query", "description" : "Number of records to fetch. Default is 10. To get the last record the limit can be set to 1.", "schema" : { "type" : "integer", "format" : "int32", "default" : 10 } }, { "name" : "start_date", "in" : "query", "description" : "Fetch only records newer than specified start_date. Date is in ISO-8601 Coordinated Universal Time (UTC) format", "schema" : { "type" : "string", "format" : "date-time", "example" : "2007-12-03T10:42:30.00Z" }, "example" : "2007-12-03T10:42:30.00Z" }, { "name" : "end_date", "in" : "query", "description" : "Fetch only records older than specified end_date. Date is in ISO-8601 Coordinated Universal Time (UTC) format", "schema" : { "type" : "string", "format" : "date-time", "example" : "2007-12-05T10:15:42.00Z" }, "example" : "2007-12-05T10:15:42.00Z" }, { "name" : "otdr_port", "in" : "query", "description" : "Data is filtered based on OTDR port used to measure the trace", "schema" : { "type" : "integer", "format" : "int32", "default" : -1 } }, { "name" : "min_total_length", "in" : "query", "description" : "Data is filtered based on trace total length (in meters). Will fetch only traces longer than specified min_total_length", "schema" : { "type" : "number", "format" : "double" } }, { "name" : "max_total_length", "in" : "query", "description" : "Data is filtered based on trace total length (in meters). Will fetch only traces shorter than specified max_total_length", "schema" : { "type" : "number", "format" : "double" } }, { "name" : "computed_loss", "in" : "query", "description" : "Filter values for which total loss was computed internally. For 'true' returns only the traces for which total loss was computed internally. For 'false' returns only the traces for which total loss was reported by OTDR equipment. If missing both typoe of traces are returned.", "schema" : { "type" : "string" } }, { "name" : "min_total_loss", "in" : "query", "description" : "Data is filtered based on trace total loss (in dB). Will fetch only traces with attenuation higher than min_total_loss", "schema" : { "type" : "number", "format" : "double" } }, { "name" : "max_total_loss", "in" : "query", "description" : "Data is filtered based on trace total loss (in dB). Will fetch only traces with attenuation lower than max_total_loss", "schema" : { "type" : "number", "format" : "double" } }, { "name" : "filter_event_min_refl_thold", "in" : "query", "description" : "Events with reflectance lower than 'filter_event_min_refl_thold' (in dB) will be filtered out", "schema" : { "type" : "number", "format" : "double" } }, { "name" : "filter_event_after_fiber_end", "in" : "query", "description" : "Events showing up after 'Fiber End' event are filtered out", "schema" : { "type" : "boolean" } }, { "name" : "filter_event_names", "in" : "query", "description" : "Comma separated list of event names to be filtered out. Event names not in the list will be included in the trace. This does not impact the total length and total loss data", "schema" : { "type" : "string" }, "example" : "Ghost, Slope" } ], "responses" : { "200" : { "description" : "Returns a list of OTDR traces", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/OTDRTraceBean" } } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found for supplied input", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "OTDR module not installed", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } }, "post" : { "tags" : [ "opmon" ], "description" : "Triggers an OTDR measurement for a given port", "operationId" : "otdrMeasurement", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Measurement direction: INPUT or OUTPUT. Parameter is required", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT" ] } }, { "name" : "allocate", "in" : "query", "description" : "Signals whether the port should be allocated after the measurement irrespective of the port state before the measurement", "schema" : { "type" : "string" } }, { "name" : "loopback", "in" : "query", "description" : "Signals whether loopback should be assumed during measurement. In this mode the INPUT and OUTPUT ports are considered connected in LOOPBACK externally. This mode of operation facilitates a single measurement for both INPUT and OUTPUT in a single trace", "schema" : { "type" : "string" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/OTDRMeasureCMDResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found for supplied input", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "OTDR module not installed", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/unalloc/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Unallocates a port. Shorter version for /unallocate", "operationId" : "unalloc", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AllocResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/unallocate/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Unallocates a port", "operationId" : "unallocate", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AllocResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/alloc/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Allocates a port. Shorter version for /allocate", "operationId" : "alloc", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AllocResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/port" : { "get" : { "tags" : [ "port" ], "description" : "Returns the current state for all the ports", "operationId" : "getAllPortsState", "responses" : { "200" : { "description" : "List of port states", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/CrossConnectResponse" } } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/lock/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Locks a port", "operationId" : "lock", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/LockingResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port checks failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/port/{port}" : { "get" : { "tags" : [ "port" ], "description" : "Returns current state for a given port", "operationId" : "port", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "List of port states", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/CrossConnectResponse" } } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/connect/{srcPort}/{dstPort}" : { "post" : { "tags" : [ "port" ], "description" : "Cross connects two ports. SIMPLEX or DUPLEX modes are control via duplex boolean param", "operationId" : "connect", "parameters" : [ { "name" : "srcPort", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "dstPort", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "allocate", "in" : "query", "description" : "If false cross-connect will leave the ports unallocated/disconnected. Another allocate command is required to provision the cross-connects", "schema" : { "type" : "boolean", "default" : true } }, { "name" : "duplex", "in" : "query", "description" : "If false cross-connect will be a simplex connection from INPUT 'srcPort' to OUTPUT 'dstPort' ", "schema" : { "type" : "boolean", "default" : true } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ConnectResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/unlock/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Unlocks a port", "operationId" : "unlock", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/LockingResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/allocate/{port}" : { "put" : { "tags" : [ "port" ], "description" : "Allocates/Provision a port", "operationId" : "allocate", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AllocResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/connect/{port}" : { "delete" : { "tags" : [ "port" ], "description" : "Disconnects a port. Same outcome as /unallocate for the same port", "operationId" : "disconnect", "parameters" : [ { "name" : "port", "in" : "path", "description" : "Can be an existing alias or a port number", "required" : true, "schema" : { "type" : "string" } }, { "name" : "direction", "in" : "query", "description" : "Port type. By default DUPLEX is assumed if the direction parameter is missing", "schema" : { "type" : "string", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ], "default" : "DUPLEX" } } ], "responses" : { "200" : { "description" : "Details for command submitted to execution queue", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/AllocResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "No port found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "412" : { "description" : "Port check failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/queue/{cmdid}" : { "get" : { "tags" : [ "queue" ], "description" : "Get command details for a specific command based on the commandId", "operationId" : "getCommandDetails", "parameters" : [ { "name" : "cmdid", "in" : "path", "description" : "Command UUID", "required" : true, "schema" : { "type" : "string", "format" : "uuid" } }, { "name" : "user", "in" : "query", "description" : "Optional filtering based on user login", "allowEmptyValue" : true, "schema" : { "type" : "string" }, "example" : "ntm" } ], "responses" : { "default" : { "description" : "Retrieve status of a command", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CommandQueryResponse" } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "404" : { "description" : "Command not found", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } }, "/queue" : { "get" : { "tags" : [ "queue" ], "description" : "Get current commands in the queue", "operationId" : "getCommandsQueue", "parameters" : [ { "name" : "user", "in" : "query", "description" : "Optional filtering based on user login", "allowEmptyValue" : true, "schema" : { "type" : "string" }, "example" : "ntm" } ], "responses" : { "200" : { "description" : "Returns a list of all commands in the queue", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/CmdRestResponse" } } } } }, "400" : { "description" : "Errors parsing arguments", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "401" : { "description" : "Authentication or Authorization failure", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } }, "500" : { "description" : "Internal error processing the request", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorResponse" } } } } } } } }, "components" : { "schemas" : { "AlarmExtraInfo" : { "type" : "object", "properties" : { "info" : { "type" : "string", "description" : "Extra details about the alarm" }, "repeatCount" : { "type" : "integer", "description" : "Number of times alarm was rearmed", "format" : "int32" }, "firstAppearance" : { "type" : "string", "description" : "Timestamp when alarm was first raised", "format" : "date-time" }, "lastAppearance" : { "type" : "string", "description" : "Timestamp when alarm triggered last time", "format" : "date-time" } } }, "AlarmResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Unique alarm identifier", "format" : "uuid" }, "source" : { "$ref" : "#/components/schemas/AlarmSource" }, "type" : { "type" : "string", "enum" : [ "GENERIC_ERROR", "GENERIC_AUTHZ_ERROR", "HEAT_SINK_OVER_TEMP_DETECTED", "HEAT_SINK_OVER_TEMP_PERSISTENT", "ROBOT_BOARD_OVER_TEMP_DETECTED", "ROBOT_BOARD_OVER_TEMP_PERSISTENT", "X_AXIS_OVER_TEMP_DETECTED", "X_AXIS_OVER_TEMP_PERSISTENT", "Y_AXIS_OVER_TEMP_DETECTED", "Y_AXIS_OVER_TEMP_PERSISTENT", "GRIPPER_OVER_TEMP_DETECTED", "GRIPPER_OVER_TEMP_PERSISTENT", "OPM_OVER_TEMP_DETECTED", "OPM_OVER_TEMP_PERSISTENT", "INTERLOCK_OPEN", "GENERIC_ENV_ERROR", "POWER_SUPPLY_FAULT", "DC24V_BUS_ON_STATE_INCONSISTENT", "DC24V_BUS_OFF_STATE_INCONSISTENT", "POWER_SUPPLY_LED_CONTROL", "DC_DC_CONVERTER_FAILURE", "SERVER_POWER_SUPPLY_FAULT", "GENERIC_POWER_ERROR", "SOLENOID_OVER_ENERGIZED", "SOLENOID_FAILURE_DETECTED", "SOLENOID_NOT_SENSED_UP", "SOLENOID_NOT_SENSED_DOWN", "GRIPPER_LIFETIME_HIGH", "GRIPPER_LIFETIME_EXCEEDED", "X_AXIS_POSITION_ERROR_DETECTED", "X_AXIS_HOMING_ERROR_DETECTED", "Y_AXIS_POSITION_ERROR_DETECTED", "Y_AXIS_HOMING_ERROR_DETECTED", "UNPLUG_FIBER_FAILURE", "ALLOCATE_FIBER_FAILURE", "UNALLOCATE_FIBER_FAILURE", "PROBE_OUTPUT_FOR_FIBER_FAILURE", "HAS_FIBER_FALSE_POSITIVE", "GENERIC_ROBOTIC_ERROR", "REEL_ENCODER_COUNTS_INCONSISTENT", "REEL_ENCODER_NO_COUNTS", "REEL_ENCODER_SPURIOUS_READING", "GENERIC_REEL_ENCODER_ERROR", "GENERIC_FIBER_ERROR", "CLEANING_FABRIC_LOW", "CLEANING_FABRIC_OUT", "CLEANING_FABRIC_ENCODER_BAD_READING", "CANNOT_ADVANCE_FABRIC", "CANNOT_CLEAN_FIBER", "CLEANING_FABRIC_SENSOR_MISCALIBRATED", "CLEANING_FABRIC_SENSOR_ERROR", "CLEANING_CARTRIDGE_RESET_FAILURE", "GENERIC_HW_ERROR", "ERROR_READING_OPTICAL_POWER", "OPTICAL_POWER_MONITOR_NOT_CALIBRATED", "GENERIC_OPTICAL_POWER_MONITOR", "OTDR_TRACE_ERROR", "OTDR_DEVICE_COMM_ERROR", "GENERIC_OTDR_ERROR", "GENERIC_MONITORING_DEV_ERROR", "HW_TEMP_MONITOR_FAILURE", "INTERLOCK_MONITOR_FAILURE", "POWER_MONITOR_FAILURE", "SOLENOID_MONITOR_FAILURE", "POSITION_ERROR_MONITOR_FAILURE", "STATUS_LED_MONITOR_FAILURE", "SERVER_POWER_MONITOR_FAILURE", "GENERIC_MONITOR_ERROR", "ROW_SHUFFLE_FAILED", "ROW_LIMITS_ON_CHECK_FAILED", "ROW_LIMITS_OFF_CHECK_FAILED", "FAILED_TO_INITIALIZE_ROWS", "GENERIC_ROW_ERROR", "GENERIC_FIBER_MODULE_ERROR", "COMM_ERROR", "SOCKET_TIMEOUT", "TRANSMIT_CHECKSUM", "RECEIVED_CHECKSUM", "GENERIC_NETWORK_ERROR", "HARDWARE_EXECUTOR_STOPPED", "GENERIC_HARDWARE_EXECUTOR_ERROR", "FIBER_NOT_FOUND_IN_OUTPUT", "FIBER_FOUND_IN_EMPTY_OUTPUT", "GENERIC_TSTATE_ERROR", "REST_SERVER_DOWN", "SSH_SERVER_DOWN", "TELNET_SERVER_DOWN", "GENERIC_SERVER_ERROR", "MN_LINKS_CONFIG", "GENERIC_MNODE_ERROR" ] }, "code" : { "type" : "integer", "description" : "Unique numerical code for alarm", "format" : "int32" }, "startTime" : { "type" : "string", "description" : "Timestamp when alarm started", "format" : "date-time" }, "endTime" : { "type" : "string", "description" : "Timestamp when alarm cleared", "format" : "date-time" }, "extraInfoRecords" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/AlarmExtraInfo" } } } }, "AlarmSource" : { "type" : "object", "properties" : { "component" : { "type" : "string", "enum" : [ "AUTH", "CLEAN_CART", "ENV", "FIBER_MODULE", "INPUT", "MONITOR", "NETWORK", "OPM", "OUTPUT", "POWER", "ROBOT", "ROW", "TSTATE", "HARDWARE_EXECUTOR", "CLIENT_SOFTWARE_INTERFACE", "USERCMD", "MNODE", "GENERIC" ] }, "modifier" : { "type" : "string" }, "source" : { "type" : "string" } } }, "ErrorResponse" : { "type" : "object", "properties" : { "cause" : { "type" : "string", "description" : "Root cause in case of error" } } }, "PortAliasResponse" : { "type" : "object", "properties" : { "port" : { "type" : "integer", "description" : "Port number", "format" : "int32" }, "direction" : { "type" : "string", "description" : "Signals whether the port type is INPUT or OUTPUT", "enum" : [ "INPUT", "OUTPUT" ] }, "aliases" : { "type" : "array", "description" : "All the aliases defined for specified port", "items" : { "type" : "string", "description" : "All the aliases defined for specified port" } } } }, "SysUptimeResponse" : { "type" : "object", "properties" : { "uptime" : { "type" : "string", "description" : "System uptime in human readable format" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "AppStatusResponse" : { "type" : "object", "properties" : { "appStatus" : { "type" : "string", "description" : "Current status", "enum" : [ "STARTING", "LOADING_CONFIG", "INIT_SOFTWARE_SERVICES", "RECOVERING", "INITIALIZING_HARDWARE", "UP_AND_RUNNING", "SHUTTING_DOWN" ] }, "date" : { "type" : "string", "description" : "Timestamp when current status became active", "format" : "date-time" }, "secondsSinceEpoch" : { "type" : "integer", "description" : "Seconds since Epoch when current status became active", "format" : "int64" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "CleanFiberResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "port" : { "type" : "string", "description" : "Human readable port identifier" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "HistoryRestResponse" : { "type" : "object", "properties" : { "cmdID" : { "type" : "string", "description" : "Command identifier", "format" : "uuid" }, "user" : { "type" : "string", "description" : "Login name of the user who issued the command" }, "command" : { "type" : "string", "description" : "Text representation of the command" } } }, "OPMMesureResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "port" : { "type" : "string", "description" : "Human readable port identifier. Note: This is always an INPUT port." }, "lambda" : { "type" : "string" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" }, "mw" : { "type" : "boolean" } } }, "OPMLookupResponse" : { "type" : "object", "properties" : { "fiber" : { "type" : "integer", "description" : "Input port (fiber) number", "format" : "int32" }, "value" : { "type" : "number", "description" : "Optical power (in milliwatts or dBm)", "format" : "double" }, "lambda" : { "type" : "string", "description" : "Wavelength used for measurement", "enum" : [ "l1310nm", "l1550nm" ] }, "timestamp" : { "type" : "string", "description" : "Timestamp for the measurement", "format" : "date-time" }, "mw" : { "type" : "boolean" } } }, "OTDRMeasureCMDResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "port" : { "type" : "string", "description" : "Human readable port identifier" }, "direction" : { "type" : "string", "description" : "Signals whether the port used for measurement is an INPUT or an OUTPUT port", "enum" : [ "INPUT", "OUTPUT" ] }, "forcedAllocate" : { "type" : "boolean", "description" : "Signals whether the port should be allocated after the measurement irrespective of the port state before the measurement" }, "forcedUnallocate" : { "type" : "boolean", "description" : "Signals whether the port should be unallocated/disconnected after the measurement irrespective of the port state before the measurement" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" }, "loopback" : { "type" : "boolean" } } }, "OTDREventBean" : { "type" : "object", "properties" : { "eventNumber" : { "type" : "integer", "description" : "Event number within a trace", "format" : "int32" }, "eventName" : { "type" : "string", "description" : "Event name - OTDR vendor specific" }, "distanceMeters" : { "type" : "number", "description" : "Distance in meters from launch where the event occured", "format" : "double" }, "lossDb" : { "type" : "number", "description" : "Attenuation in Db for this event", "format" : "double" }, "reflectanceDb" : { "type" : "number", "description" : "Reflectance in Db for this event", "format" : "double" } }, "description" : "Events along the trace" }, "OTDRTraceBean" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Unique trace identifier.", "format" : "uuid" }, "events" : { "type" : "array", "description" : "Events along the trace", "items" : { "$ref" : "#/components/schemas/OTDREventBean" } }, "ntmInputPort" : { "type" : "integer", "description" : "Input port involved in trace. If direction parameter is INPUT represents the port for which the trace was performed. If direction is OUTPUT it represents the port used to launch the trace.", "format" : "int32" }, "ntmOutputPort" : { "type" : "integer", "description" : "Output port involved in trace. If direction parameter is OUTPUT represents the port for which the trace was performed. If direction is INPUT it represents the port used to launch the trace.", "format" : "int32" }, "direction" : { "type" : "string", "description" : "Signals whether the measurement was for an INPUT or an OUTPUT port", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] }, "otdrPort" : { "type" : "integer", "description" : "OTDR port used to launch the trace", "format" : "int32" }, "totalLossDb" : { "type" : "number", "description" : "Total attenuation in Db along the path. This value is computed as the sum of all losses along the path in case the OTDR device is unable to provide this information", "format" : "double" }, "totalLengthMeters" : { "type" : "number", "description" : "Total length in meters of the trace", "format" : "double" }, "timestamp" : { "type" : "string", "description" : "Timestamp when the trace was performed", "format" : "date-time" }, "sorContentLink" : { "type" : "string", "description" : "Link to the trace SOR file. Vendor specific. Partial availability. ", "format" : "uri" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" }, "totalLossComputed" : { "type" : "boolean" }, "loopback" : { "type" : "boolean" } } }, "AllocResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "port" : { "type" : "string", "description" : "Human readable port identifier" }, "direction" : { "type" : "string", "description" : "Port type: INPUT, OUTPUT or DUPLEX", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] }, "allocate" : { "type" : "boolean", "description" : "Allocate operation if true or disconnect/unallocate if false" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "CrossConnectResponse" : { "type" : "object", "properties" : { "inputPort" : { "type" : "integer", "description" : "Input port for simplex. Source port for duplex", "format" : "int32" }, "outputPort" : { "type" : "integer", "description" : "Output port for simplex. Destination port for duplex", "format" : "int32" }, "allocated" : { "type" : "boolean", "description" : "Signals if the cross-connect fully provisioned. If false then another allocate command is required to fully provision the cross-connect." }, "locked" : { "type" : "boolean", "description" : "Signals if the cross-connect is locked" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "LockingResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "port" : { "type" : "string", "description" : "Human readable port identifier" }, "direction" : { "type" : "string", "description" : "Port type: INPUT, OUTPUT or DUPLEX", "enum" : [ "INPUT", "OUTPUT", "DUPLEX" ] }, "lock" : { "type" : "boolean", "description" : "Signals whether the port should be locked or unlocked" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "ConnectResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "inputPort" : { "type" : "string", "description" : "Human readable port identifier. Input port for simplex. Source port for duplex." }, "outputPort" : { "type" : "string", "description" : "Human readable port identifier. Output port for simplex. Destination port for duplex." }, "duplex" : { "type" : "boolean", "description" : "Signals whether the connect operation was SIMPLEX or DUPLEX" }, "allocate" : { "type" : "boolean", "description" : "Signals if the cross-connect fully provisioned. If false then another allocate command is required to fully provision the cross-connect." }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "CommandQueryResponse" : { "type" : "object", "properties" : { "id" : { "type" : "string", "description" : "Command Id", "format" : "uuid" }, "userId" : { "type" : "string", "description" : "User Id of the user who submitted the command", "format" : "uuid" }, "cmdText" : { "type" : "string", "description" : "Text representation of the command" }, "status" : { "type" : "string", "enum" : [ "QUEUED", "EXECUTING", "FINISHED", "ERROR", "UNKNOWN" ] }, "enqueued" : { "type" : "string", "description" : "Timestamp when command was submitted to queue", "format" : "date-time" }, "start" : { "type" : "string", "description" : "Timestamp when command started execution", "format" : "date-time" }, "end" : { "type" : "string", "description" : "Timestamp when command finished execution", "format" : "date-time" }, "cause" : { "type" : "string", "description" : "Error description when command fails" }, "activeAlarms" : { "type" : "integer", "description" : "Current count of active alarms", "format" : "int32" } } }, "CmdRestResponse" : { "type" : "object", "properties" : { "time" : { "type" : "string", "description" : "Timestamp when command was created", "format" : "date-time" }, "cmdID" : { "type" : "string", "description" : "Command identifier. Can be used to poll command queue for status.", "format" : "uuid" }, "userID" : { "type" : "string", "description" : "User Id of the user who submitted the command", "format" : "uuid" }, "command" : { "type" : "string", "description" : "Text representation of the command" }, "percentageLeft" : { "type" : "string", "description" : "Percentage left from the command being executed" } } } }, "securitySchemes" : { "BasicAuth" : { "type" : "http", "scheme" : "basic" } } } }