{
  "basePath": "/api/2.0",
  "consumes": [
    "application/json"
  ],
  "definitions": {
    "Error": {
      "properties": {
        "code": {
          "format": "int32",
          "type": "integer"
        },
        "fields": {
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      }
    },
    "ErrorResponse": {
      "properties": {
        "message": {
          "type": "string"
        }
      },
      "required": [
        "message"
      ]
    },
    "VersionsResponse": {
      "properties": {
        "message": {
          "type": "string"
        }
      },
      "required": [
        "message"
      ]
    },
    "Action": {
      "description": "Action object",
      "properties": {
        "command": {
          "description": "Command to execute",
          "enum": [
            "cancel"
          ],
          "type": "string"
        },
        "options": {
          "description": "Command options object",
          "type": "object"
        }
      },
      "required": [
        "command"
      ]
    },
    "GenericObj": {
      "type": "object"
    },
    "PostTasks": {
      "properties": {
        "identifier": {
          "type": "string"
        },
        "tasks": {
          "items": {
            "$ref": "#/definitions/WorkflowTask"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "PostWorkflow": {
      "properties": {
        "name": {
          "type": "string"
        },
        "options": {
          "properties": {
            "default": {
              "properties": {
                "graphOptions": {
                  "type": "object"
                },
                "nodeId": {
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          "type": "object"
        }
      },
      "type": "object"
    },
    "WorkflowGraph": {
      "properties": {
        "friendlyName": {
          "type": "string"
        },
        "injectableName": {
          "type": "string"
        },
        "options": {
          "type": "object"
        },
        "tasks": {
          "items": {
            "$ref": "#/definitions/WorkflowGraphTask"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "generic_obj": {
      "type": "object"
    },
    "get_user_obj": {
      "properties": {
        "role": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "patch_user_obj": {
      "properties": {
        "role": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      }
    },
    "WorkflowGraphTask": {
      "properties": {
        "ignoreFailure": {
          "type": "boolean"
        },
        "label": {
          "type": "string"
        },
        "taskName": {
          "type": "string"
        },
        "waitOn": {
          "type": "object"
        }
      },
      "type": "object"
    },
    "WorkflowTask": {
      "properties": {
        "friendlyName": {
          "type": "string"
        },
        "implementsTask": {
          "type": "string"
        },
        "injectableName": {
          "type": "string"
        },
        "options": {
          "type": "object"
        },
        "properties": {
          "type": "object"
        }
      },
      "type": "object"
    },
    "notification_obj": {
      "properties": {
        "nodeId": {
          "type": "string"
        }
      }
    }
  },
  "info": {
    "title": "onTaskClient",
    "version": "0.0.1"
  },
  "paths": {
    "/tasks/bootstrap.js": {
      "get": {
        "description": "Used internally by the system - get tasks bootstrap.js\n",
        "operationId": "getBootstrap",
        "parameters": [{
          "description": "Query string containing the mac address",
          "in": "query",
          "name": "macAddress",
          "required": false,
          "type": "string"
        }],
        "responses": {
          "200": {
            "description": "Successfully retrieved bootstrap.js",
            "schema": {
              "$ref": "#/definitions/VersionsResponse"
            }
          },
          "default": {
            "description": "Error",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "summary": "Get tasks bootstrap.js\n",
        "tags": [
          "tasks"
        ]
      },
      "x-swagger-router-controller": "tasks"
    },
    "/tasks/{identifier}": {
      "get": {
        "description": "Get the specified task.\n",
        "operationId": "getTasksById",
        "parameters": [{
          "description": "The task identifier\n",
          "in": "path",
          "name": "identifier",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "200": {
            "description": "Successfully retrieved a single task\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "There specified task was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a task\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read"
        ]
      },
      "post": {
        "description": "Start the specified task\n",
        "operationId": "postTaskById",
        "parameters": [{
          "description": "The task identifier\n",
          "in": "path",
          "name": "identifier",
          "required": true,
          "type": "string"
        },
          {
            "description": "The obm settings to apply\n",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PostTasks"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully posted the specified task\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The specified task was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Post a task\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write"
        ]
      },
      "x-swagger-router-controller": "tasks"
    },
    "/workflows": {
      "get": {
        "description": "Get list workflow that have been run, or are currently running.\n",
        "operationId": "workflowsGet",
        "parameters": [{
          "description": "Query string to search for specific workflow properties\n",
          "in": "query",
          "name": "active",
          "required": false,
          "type": "boolean"
        },
          {
            "description": "Query string specifying properties to search for",
            "in": "query",
            "name": "$skip",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Query string specifying properties to search for",
            "in": "query",
            "name": "$top",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfull retrieved workflows\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a list of workflow instances\n",
        "tags": [
          "workflows"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "post": {
        "description": "Run a workflow by specifying a workflow graph injectable name.\nThe workflow is not associated with a node.\n",
        "operationId": "workflowsPost",
        "parameters": [{
          "description": "The body must contain the name property with the\nvalue set to the injectable name of the workflow\ngraph to run\n",
          "in": "body",
          "name": "body",
          "required": false,
          "schema": {
            "$ref": "#/definitions/PostWorkflow"
          }
        },
          {
            "description": "pass node id",
            "in": "query",
            "name": "nodeId",
            "required": false,
            "type": "string"
          },

          {
            "description": "Optionally specify the injectable name of the workflow graph to run",
            "in": "query",
            "name": "name",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully posted the workflow\n",
            "schema": {
              "type": "object"
            }
          },
          "500": {
            "description": "Workflow was not run\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Upload failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Run a workflow\n",
        "tags": [
          "workflows"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsWrite"
        ]
      },
      "x-swagger-router-controller": "workflows"
    },
    "/workflows/graphs": {
      "get": {
        "description": "Get a list of all workflow graphs available to run.\n",
        "operationId": "workflowsGetGraphs",
        "responses": {
          "200": {
            "description": "Successfully retrieved all workflow graphs\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get list of workflow graphs\n",
        "tags": [
          "graphs"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "put": {
        "description": "Create or modify a workflow graph in the graph library.\n",
        "operationId": "workflowsPutGraphs",
        "parameters": [{
          "description": "The workflow graph properties",
          "in": "body",
          "name": "body",
          "required": false,
          "schema": {
            "$ref": "#/definitions/WorkflowGraph"
          }
        }],
        "responses": {
          "201": {
            "description": "Successfully updated workflow graph\n",
            "schema": {
              "type": "object"
            }
          },
          "500": {
            "description": "Workflow graph was not updated\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Upload failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Put a graph\n",
        "tags": [
          "graphs"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsWrite"
        ],
        "x-swagger-schema": "workflowGraphs.2.0.json#/definitions/workflowGraphsPut"
      },
      "x-swagger-router-controller": "workflowGraphs"
    },
    "/workflows/graphs/{injectableName}": {
      "delete": {
        "description": "Delete the workflow graph with the specified value of the injectableName property.\n",
        "operationId": "workflowsDeleteGraphsByName",
        "parameters": [{
          "description": "The workflow graph injectable name\n",
          "in": "path",
          "name": "injectableName",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "204": {
            "description": "Successfully deleted the specified workflow graph\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The graph with the specified injectable name was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Delete a workflow graph\n",
        "tags": [
          "graphs"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsRemove"
        ]
      },
      "get": {
        "description": "Get the workflow graph with the specified value of the injectableName property.\n",
        "operationId": "workflowsGetGraphsByName",
        "parameters": [{
          "description": "The workflow graph injectable name\n",
          "in": "path",
          "name": "injectableName",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "200": {
            "description": "Successfully retrieved the workflow graph with the specified injectable name\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a workflow graph\n",
        "tags": [
          "graphs"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "x-swagger-router-controller": "workflowGraphs"
    },
    "/workflows/tasks": {
      "get": {
        "description": "Get a list of all workflow tasks that can be added to a workflow.\n",
        "operationId": "workflowsGetAllTasks",
        "responses": {
          "200": {
            "description": "Successfully retrieved workflow tasks\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get list of workflow tasks\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "put": {
        "description": "Create or update a workflow task in the library of tasks.\n",
        "operationId": "workflowsPutTask",
        "parameters": [{
          "description": "The workflow task properties",
          "in": "body",
          "name": "body",
          "required": false,
          "schema": {
            "$ref": "#/definitions/WorkflowTask"
          }
        }],
        "responses": {
          "201": {
            "description": "Successfully updated workflow task\n",
            "schema": {
              "type": "object"
            }
          },
          "500": {
            "description": "Put workflow task failed\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Upload failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Put a workflow task\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsWrite"
        ]
      },
      "x-swagger-router-controller": "workflowTasks"
    },
    "/workflows/tasks/{injectableName}": {
      "delete": {
        "description": "Delete the workflow task with the specified value of the injectableName property.\n",
        "operationId": "workflowsDeleteTasksByName",
        "parameters": [{
          "description": "The task injectable name\n",
          "in": "path",
          "name": "injectableName",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "204": {
            "description": "Successfully deleted the specified task\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The task with the specified injectable name was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Delete a workflow task\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsRemove"
        ]
      },
      "get": {
        "description": "Get the task with the specified value of the injectableName property.\n",
        "operationId": "workflowsGetTasksByName",
        "parameters": [{
          "description": "The task injectable name\n",
          "in": "path",
          "name": "injectableName",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "200": {
            "description": "Successfully retrieved the task with the specified injectable name\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a workflow task\n",
        "tags": [
          "tasks"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "x-swagger-router-controller": "workflowTasks"
    },
    "/workflows/{identifier}": {
      "delete": {
        "description": "Delete the workflow with the specified instance identifier.\n",
        "operationId": "workflowsDeleteByInstanceId",
        "parameters": [{
          "description": "The workflow instance identifier\n",
          "in": "path",
          "name": "identifier",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "204": {
            "description": "Successfully deleted the specified workflow\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The specified workflow was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Delete a workflow\n",
        "tags": [
          "workflows"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsRemove"
        ]
      },
      "get": {
        "description": "Get the workflow with the specified instance identifier.\n",
        "operationId": "workflowsGetByInstanceId",
        "parameters": [{
          "description": "The workflow instance identifier\n",
          "in": "path",
          "name": "identifier",
          "required": true,
          "type": "string"
        }],
        "responses": {
          "200": {
            "description": "Successfully retrieved the specified workflow\n",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a workflow\n",
        "tags": [
          "workflows"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "workflowsRead"
        ]
      },
      "x-swagger-router-controller": "workflows"
    },
    "/workflows/{identifier}/action": {
      "put": {
        "description": "Perform the specified action on the workflow with the specified\ninstance identifier. Currently, the cancel action is supported.\n",
        "operationId": "workflowsAction",
        "parameters": [{
          "description": "The workflow instance identifier\n",
          "in": "path",
          "name": "identifier",
          "required": true,
          "type": "string"
        },
          {
            "description": "The action property with the value of the desired action",
            "in": "body",
            "name": "action",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Action"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Successfully performed the action on the specified workflow\n",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The workflow with the identifier was not found\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Perform an action on a workflow\n",
        "tags": [
          "workflows"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "workflowsModify"
        ]
      },
      "x-swagger-router-controller": "workflows"
    },
    "/profiles": {
      "get": {
        "description": "Get the list of currently defined profiles. Profiles are scripts used by RackHD to control how a node PXE boots.\n",
        "operationId": "profilesGet",
        "parameters": [{
          "collectionFormat": "multi",
          "description": "List of valid MAC addresses to lookup",
          "in": "query",
          "items": {
            "type": "string"
          },
          "name": "macs",
          "required": false,
          "type": "array"
        },
          {
            "collectionFormat": "multi",
            "description": "List of IP addresses to lookup",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "ips",
            "required": false,
            "type": "array"
          },
          {
            "description": "When macs parameter is not passed, passed with IP adds MAC address to lookup",
            "in": "query",
            "name": "mac",
            "required": false,
            "type": "string"
          },
          {
            "description": "When macs parameters is not passed, passed with MAC adds IP address to lookup",
            "in": "query",
            "name": "ip",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved a list of profiles for specified mac / ip",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get list of profiles",
        "tags": [
          "southBound"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "profilesRead"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/profiles/library/{name}": {
      "get": {
        "description": "Get the contents of a profile specified by its name.",
        "operationId": "profilesGetLibByName",
        "parameters": [
          {
            "description": "The profile name",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "The profile scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned profile",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The profile with the specified name was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get contents of a profile",
        "tags": [
          "profiles"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "profilesRead"
        ]
      },
      "put": {
        "consumes": [
          "application/octet-stream",
          "application/x-www-form-urlencoded",
          "application/json",
          "text/plain"
        ],
        "description": "Create or modify the specified profile metadata and contents.",
        "operationId": "profilesPutLibByName",
        "parameters": [
          {
            "description": "The profile name",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "The profile scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully created or modified the specified profile",
            "schema": {
              "type": "object"
            }
          },
          "500": {
            "description": "Profile creation failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Put a profile",
        "tags": [
          "profiles"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "profilesWrite"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/profiles/metadata": {
      "get": {
        "description": "Get the list of metadata associated with all known profiles.",
        "operationId": "profilesGetMetadata",
        "responses": {
          "200": {
            "description": "Successfully retrieved the list of profile metadata",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get list of profile metadata",
        "tags": [
          "profiles"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "profilesRead"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/profiles/metadata/{name}": {
      "get": {
        "description": "Get the metadata associated with the specified profile.",
        "operationId": "profilesGetMetadataByName",
        "parameters": [
          {
            "description": "The profile name",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "The profile scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned the profile",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The profile with the specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get the specified profiles metadata from database",
        "tags": [
          "profiles"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "profilesRead"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/profiles/switch/error": {
      "post": {
        "description": "Manually send a switch error to the log, since most switches do not generate errors.",
        "operationId": "profilesPostSwitchError",
        "parameters": [
          {
            "description": "The switch error to send",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/generic_obj"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully posted the switch error",
            "schema": {
              "type": "object"
            }
          },
          "500": {
            "description": "Upload failed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Post a switch error",
        "tags": [
          "profiles"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "profilesWrite"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/profiles/switch/{vendor}": {
      "get": {
        "description": "Get a profile rendered with the switch vendor name.",
        "operationId": "profilesGetSwitchVendor",
        "parameters": [
          {
            "description": "The switch vendor name",
            "in": "path",
            "name": "vendor",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully returned the profile with switch vendor name.",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "Profile not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a profile",
        "tags": [
          "southBound"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "profilesRead"
        ]
      },
      "x-swagger-router-controller": "profiles"
    },
    "/templates/{name}": {
      "get": {
        "description": "Get the template with the specified name.",
        "operationId": "templatesGetByName",
        "parameters": [{
          "description": "The name of the template",
          "in": "path",
          "name": "name",
          "required": true,
          "type": "string"
        },
          {
            "description": "The node identifier",
            "in": "query",
            "name": "nodeId",
            "required": false,
            "type": "string"
          },
          {
            "collectionFormat": "multi",
            "description": "List of valid MAC addresses to lookup",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "macs",
            "required": false,
            "type": "array"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfuly retrieved the specified template",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The template with specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get the specified template",
        "tags": [
          "southBound"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "templatesRead"
        ]
      },
      "head": {
        "description": "Get the template headers with the specified name. Only gets headers and returns no body.",
        "operationId": "templatesHeadByName",
        "parameters": [{
          "description": "The name of the template",
          "in": "path",
          "name": "name",
          "required": true,
          "type": "string"
        },
          {
            "description": "The node identifier",
            "in": "query",
            "name": "nodeId",
            "required": false,
            "type": "string"
          },
          {
            "collectionFormat": "multi",
            "description": "List of valid MAC addresses to lookup",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "macs",
            "required": false,
            "type": "array"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfuly retrieved the specified template headers",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The template with specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get headers of the specified template",
        "tags": [
          "southBound"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read"
        ]
      },
      "x-swagger-router-controller": "templates"
    },
    "/templates/library/{name}": {
      "delete": {
        "description": "Delete the template with the specified name.",
        "operationId": "templatesLibDelete",
        "parameters": [
          {
            "description": "The name of the template",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "default": "global",
            "description": "The template scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Successfully deleted the specified template"
          },
          "404": {
            "description": "The template with specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Delete the specified template",
        "tags": [
          "templates"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "templatesRemove"
        ]
      },
      "get": {
        "description": "Get the contents of the specified template file.",
        "operationId": "templatesLibGet",
        "parameters": [
          {
            "description": "The file name of the template",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "default": "global",
            "description": "The template scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the contents of the specified template",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The template with specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get the specified template",
        "tags": [
          "templates"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "templatesRead"
        ]
    },
      "put": {
        "consumes": [
          "text/plain",
          "application/x-www-form-urlencoded"
        ],
        "description": "Create or update the metadata and the content of the specified template.",
        "operationId": "templatesLibPut",
        "parameters": [
          {
            "description": "The name of the template",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "default": "global",
            "description": "The template scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "201": {
            "description": "Successfully created or updated the specified template.",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "The specified template was not found.",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Create or update the specified template",
        "tags": [
          "templates"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Write",
          "templatesWrite"
        ]
      },
    "x-swagger-router-controller": "templates"
  },
    "/templates/metadata": {
      "get": {
        "description": "Retrieves metadata for each defined template. The metadata includes the template name, and scope, not the actual contents of the template.\n",
        "operationId": "templatesMetaGet",
        "parameters": [
          {
            "name": "sort",
            "in": "query",
            "description": "Query string specifying properties to sort with",
            "required": false,
            "type": "string",
            "pattern": "[- +]{0,1}(name|id)"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved all template metadata",
            "schema": {
              "type": "object"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get a list of metadata for all templates",
        "tags": [
          "templates"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "templatesRead"
        ]
      },
      "x-swagger-router-controller": "templates"
    },
    "/templates/metadata/{name}": {
      "get": {
        "description": "Get metadata for the template with the specified name.",
        "operationId": "templatesMetaGetByName",
        "parameters": [
          {
            "description": "The file name of the template",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "The template scope",
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the metadata of the specified template.",
            "schema": {
              "type": "object"
            }
          },
          "404": {
            "description": "Template with specified identifier was not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "summary": "Get the metadata for the specified template",
        "tags": [
          "templates"
        ],
        "x-authentication-type": [
          "jwt"
        ],
        "x-privileges": [
          "Read",
          "templatesRead"
        ]
      },
      "x-swagger-router-controller": "templates"
    },
    "/notification": {
      "x-swagger-router-controller": "notification",
      "post": {
        "operationId": "notificationPost",
        "summary": "post a notification\n",
        "description": "post a notification\n",
        "parameters": [{
          "name": "nodeId",
          "in": "query",
          "description": "Node instance identifier\n",
          "required": false,
          "type": "string"
        },
          {
            "name": "data",
            "in": "body",
            "description": "notification data\n",
            "required": false,
            "schema": {
              "$ref": "#/definitions/notification_obj"
            }
          }
        ],
        "tags": [
          "southBound"
        ],
        "responses": {
          "201": {
            "description": "Specifics of the notification\n",
            "schema": {
              "type": "object"
            }
          },
          "400": {
            "description": "bad request parameter passed or no active task or taskgraph.\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/notification/progress": {
      "x-swagger-router-controller": "notification",
      "get": {
        "operationId": "notificationProgressPost",
        "summary": "Send progress notification to task\n",
        "description": "This API is used to update the progress information for a task instance\n",
        "parameters": [{
          "name": "taskId",
          "in": "query",
          "description": "The identifier of task instance which the progress applies to\n",
          "required": true,
          "type": "string"
        },
          {
            "name": "maximum",
            "in": "query",
            "description": "The maximum progress value\n",
            "required": true,
            "type": "string"
          },
          {
            "name": "value",
            "in": "query",
            "description": "The current progress value\n",
            "required": true,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "description": "The current progress value\n",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "southBound"
        ],
        "responses": {
          "200": {
            "description": "Specifics of the notification\n",
            "schema": {
              "type": "object"
            }
          },
          "400": {
            "description": "bad request parameter passed or no active task or taskgraph.\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "post": {
        "operationId": "notificationProgressPost",
        "summary": "Send progress notification to task\n",
        "description": "This API is used to update the progress information for a task instance\n",
        "parameters": [{
          "name": "taskId",
          "in": "query",
          "description": "The identifier of task instance which the progress applies to\n",
          "required": false,
          "type": "string"
        },
          {
            "name": "maximum",
            "in": "query",
            "description": "The maximum progress value\n",
            "required": false,
            "type": "integer"
          },
          {
            "name": "value",
            "in": "query",
            "description": "The current progress value\n",
            "required": false,
            "type": "integer"
          }
        ],
        "tags": [
          "southBound"
        ],
        "responses": {
          "201": {
            "description": "Specifics of the notification\n",
            "schema": {
              "type": "object"
            }
          },
          "400": {
            "description": "bad request parameter passed or no active task or taskgraph.\n",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "default": {
            "description": "Unexpected error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    }
  },
  "produces": [
    "application/json"
  ],
  "schemes": [
    "http",
    "https"
  ],
  "swagger": "2.0",
  "tags": [{
    "name": "southBound"
  }]
}