{
  "id": "@itentialopensource/adapter-glds_customerexperiencegateway",
  "type": "Adapter",
  "export": "GLDSCustomerExperienceGateway",
  "title": "GLDSCustomerExperienceGateway",
  "src": "adapter.js",
  "roles": [
    "admin"
  ],
  "methods": [
    {
      "name": "iapUpdateAdapterConfiguration",
      "summary": "Updates the adapter configuration",
      "description": "Updates the adapter configuration file with the provided changes",
      "input": [
        {
          "name": "configFile",
          "type": "string",
          "info": "The name of the file to change",
          "required": true,
          "schema": {
            "title": "configFile",
            "type": "string"
          }
        },
        {
          "name": "changes",
          "type": "object",
          "info": "JSON object containing the configuration changes",
          "required": true,
          "schema": {
            "title": "changes",
            "type": "object"
          }
        },
        {
          "name": "entity",
          "type": "string",
          "info": "The entity in which the changes are being made",
          "required": false,
          "schema": {
            "title": "entity",
            "type": "string"
          }
        },
        {
          "name": "type",
          "type": "string",
          "info": "The type of file to change - action, schema, or mock",
          "required": false,
          "schema": {
            "title": "type",
            "type": "string"
          }
        },
        {
          "name": "action",
          "type": "string",
          "info": "The action to be changed",
          "required": false,
          "schema": {
            "title": "action",
            "type": "string"
          }
        },
        {
          "name": "replace",
          "type": "boolean",
          "info": "True to replace entire mock data, false to merge/append",
          "required": false,
          "schema": {
            "title": "replace",
            "type": "boolean"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapUpdateAdapterConfiguration"
      },
      "task": true
    },
    {
      "name": "iapSuspendAdapter",
      "summary": "Suspends the adapter",
      "description": "Suspends the adapter",
      "input": [
        {
          "name": "mode",
          "type": "enum",
          "enumerals": [
            "pause",
            "error"
          ],
          "info": "How incoming requests are handled. Defaults to 'pause'",
          "description": "How incoming requests are handled. Defaults to 'pause'",
          "schema": {
            "title": "mode",
            "type": "string"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter suspended status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapSuspendAdapter"
      },
      "task": true
    },
    {
      "name": "iapUnsuspendAdapter",
      "summary": "Unsuspends the adapter",
      "description": "Unsuspends the adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter suspended status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapUnsuspendAdapter"
      },
      "task": true
    },
    {
      "name": "iapGetAdapterQueue",
      "summary": "Return the requests that are waiting in the queue if throttling is enabled",
      "description": "Return the requests that are waiting in the queue if throttling is enabled",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the adapter queue",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapGetAdapterQueue"
      },
      "task": true
    },
    {
      "name": "iapFindAdapterPath",
      "summary": "Provides the ability to see if a particular API path is supported by the adapter",
      "description": "Provides the ability to see if a particular API path is supported by the adapter",
      "input": [
        {
          "name": "apiPath",
          "type": "string",
          "info": "The API Path you want to check - make sure to not include base path and version",
          "description": "The API Path you want to check - make sure to not include base path and version",
          "schema": {
            "title": "apiPath",
            "type": "string"
          },
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapFindAdapterPath"
      },
      "task": true
    },
    {
      "name": "iapTroubleshootAdapter",
      "summary": "Runs troubleshoot script for adapter",
      "description": "Runs troubleshoot script for adapter",
      "input": [
        {
          "name": "props",
          "type": "object",
          "info": "Object containing configuration, healthcheck and auth properties {'connProps':{'host': 'api.service.com', 'base_path': '/', 'protocol': 'http', 'port': 443, 'version': 'v1'},'healthCheckEndpoint': '/healthcheck', 'auth': {'auth_method': 'no authentication', 'username': 'username', 'password': 'password'}}",
          "required": true,
          "schema": {
            "title": "props",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapTroubleshootAdapter"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterHealthcheck",
      "summary": "Runs healthcheck script for adapter",
      "description": "Runs healthcheck script for adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "boolean",
        "description": "Whether healthcheck passed or failed",
        "schema": {
          "title": "result",
          "type": "boolean"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterHealthcheck"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterConnectivity",
      "summary": "Runs connectivity check script for adapter",
      "description": "Runs connectivity check script for adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterConnectivity"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterBasicGet",
      "summary": "Runs basicGet script for adapter",
      "description": "Runs basicGet script for adapter",
      "input": [
        {
          "name": "maxCalls",
          "required": false,
          "type": "number",
          "info": "How many GET endpoints to test (defaults to 5)",
          "schema": {
            "title": "maxCalls",
            "type": "number",
            "default": 5
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing the test results",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRunAdapterBasicGet"
      },
      "task": true
    },
    {
      "name": "iapMoveAdapterEntitiesToDB",
      "summary": "Moves entities from an adapter into the Itential Platform database",
      "description": "Moves entities from an adapter into the Itential Platform database",
      "input": [],
      "output": {
        "name": "res",
        "type": "object",
        "description": "A JSON Object containing status, code and the response from the mongo transaction",
        "schema": {
          "title": "res",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapMoveAdapterEntitiesToDB"
      },
      "task": true
    },
    {
      "name": "iapDeactivateTasks",
      "summary": "Deactivate the inputted tasks",
      "description": "Deactivate the inputted tasks",
      "input": [
        {
          "name": "tasks",
          "type": "array",
          "description": "Tasks to deactivate",
          "schema": {
            "title": "tasks",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing success status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapDeactivateTasks"
      },
      "task": true
    },
    {
      "name": "iapActivateTasks",
      "summary": "Activate the inputted tasks",
      "description": "activate the inputted tasks",
      "input": [
        {
          "name": "tasks",
          "type": "array",
          "description": "Tasks to activate",
          "schema": {
            "title": "tasks",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing success status",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapActivateTasks"
      },
      "task": true
    },
    {
      "name": "iapPopulateEntityCache",
      "summary": "Populate the cache for the given entities",
      "description": "Populate the cache for the given entities",
      "input": [
        {
          "name": "entityTypes",
          "type": "array",
          "info": "the entity type(s) to populate",
          "required": true,
          "schema": {
            "title": "entityTypes",
            "type": "array"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapPopulateEntityCache"
      },
      "task": true
    },
    {
      "name": "iapRetrieveEntitiesCache",
      "summary": "Retrieves data from cache for specified entity type",
      "description": "Retrieves data from cache for specified entity type",
      "input": [
        {
          "name": "entityType",
          "type": "string",
          "info": "entity of which to retrieve",
          "required": true,
          "schema": {
            "title": "entityType",
            "type": "string"
          }
        },
        {
          "name": "options",
          "type": "object",
          "info": "settings of which data to return and how to return it",
          "required": false,
          "schema": {
            "title": "options",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapRetrieveEntitiesCache"
      },
      "task": true
    },
    {
      "name": "getDevice",
      "summary": "Get the Appliance",
      "description": "Get the Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getDevice"
      },
      "task": false
    },
    {
      "name": "getDevicesFiltered",
      "summary": "Get Appliances that match the filter",
      "description": "Get Appliances that match the filter",
      "input": [
        {
          "name": "options",
          "type": "object",
          "info": "options - e.g. { 'start': 1, 'limit': 20, 'filter': { 'name': 'abc123' } }",
          "required": true,
          "schema": {
            "title": "options",
            "type": "object"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "array",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "array"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getDevicesFiltered"
      },
      "task": false
    },
    {
      "name": "isAlive",
      "summary": "Checks the status for the provided Appliance",
      "description": "Checks the status for the provided Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "boolean",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "boolean"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/isAlive"
      },
      "task": false
    },
    {
      "name": "getConfig",
      "summary": "Gets a config for the provided Appliance",
      "description": "Gets a config for the provided Appliance",
      "input": [
        {
          "name": "deviceName",
          "type": "string",
          "info": "An Appliance Device Name",
          "required": true,
          "schema": {
            "title": "deviceName",
            "type": "string"
          }
        },
        {
          "name": "format",
          "type": "string",
          "info": "The format to be returned - this is ignored as we always return json",
          "required": false,
          "schema": {
            "title": "format",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getConfig"
      },
      "task": false
    },
    {
      "name": "iapGetDeviceCount",
      "summary": "Gets a device count from the system",
      "description": "Gets a device count from the system",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapGetDeviceCount"
      },
      "task": false
    },
    {
      "name": "iapExpandedGenericAdapterRequest",
      "summary": "Makes the requested generic call with additional options",
      "description": "Makes the requested generic call with additional options via metadata",
      "input": [
        {
          "name": "metadata",
          "type": "object",
          "info": "metadata for the call (optional)",
          "description": "metadata for the call - allows for many enhancements (optional)",
          "schema": {
            "title": "metadata",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": false
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": false
        },
        {
          "name": "pathVars",
          "type": "object",
          "info": "the parameters to be put within the url path (optional)",
          "description": "the parameters to be put within the url path (optional)",
          "schema": {
            "title": "pathVars",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/iapExpandedGenericAdapterRequest"
      },
      "task": true
    },
    {
      "name": "genericAdapterRequest",
      "summary": "Makes the requested generic call",
      "description": "Makes the requested generic call",
      "input": [
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/genericAdapterRequest"
      },
      "task": true
    },
    {
      "name": "genericAdapterRequestNoBasePath",
      "summary": "Makes the requested generic call",
      "description": "Makes the requested generic call",
      "input": [
        {
          "name": "uriPath",
          "type": "string",
          "info": "the path of the api call - do not include the host, port, base path or version",
          "description": "the path of the api call",
          "schema": {
            "title": "uriPath",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "restMethod",
          "type": "string",
          "info": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "description": "the rest method (GET, POST, PUT, PATCH, DELETE)",
          "schema": {
            "title": "restMethod",
            "type": "string"
          },
          "required": true
        },
        {
          "name": "queryData",
          "type": "object",
          "info": "the query parameters to be put on the url (optional)",
          "description": "the query parameters to be put on the url (optional)",
          "schema": {
            "title": "queryData",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "requestBody",
          "type": "object",
          "info": "the payload to be sent with the request (optional)",
          "description": "the payload to be sent with the request (optional)",
          "schema": {
            "title": "requestBody",
            "type": "object"
          },
          "required": false
        },
        {
          "name": "addlHeaders",
          "type": "object",
          "info": "additional headers to be put on the call (optional)",
          "description": "additional headers to be put on the call (optional)",
          "schema": {
            "title": "addlHeaders",
            "type": "object"
          },
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/genericAdapterRequestNoBasePath"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterLint",
      "summary": "Run the adapter lint script to return the results",
      "description": "Run the adapter lint script to return the results",
      "input": [],
      "output": {
        "name": "result",
        "type": "string",
        "description": "A string containing the run results",
        "schema": {
          "title": "result",
          "type": "string"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapRunAdapterLint"
      },
      "task": true
    },
    {
      "name": "iapRunAdapterTests",
      "summary": "Run the adapter test scripts (baseunit and unit) to return the results",
      "description": "Run the adapter test scripts (baseunit and unit) to return the results",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapRunAdapterTests"
      },
      "task": true
    },
    {
      "name": "iapGetAdapterInventory",
      "summary": "Provide inventory information abbout the adapter",
      "description": "Provide inventory information abbout the adapter",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/iapGetAdapterInventory"
      },
      "task": true
    },
    {
      "name": "subscriberLookup",
      "summary": "Lookup subscriber",
      "description": "Lookup subscriber",
      "input": [
        {
          "name": "externalID",
          "type": "string",
          "info": "External ID: string",
          "required": false,
          "schema": {
            "title": "externalID",
            "type": "string"
          }
        },
        {
          "name": "phoneNumber",
          "type": "string",
          "info": "Unformated phone number without country code: string",
          "required": false,
          "schema": {
            "title": "phoneNumber",
            "type": "string"
          }
        },
        {
          "name": "dL",
          "type": "string",
          "info": "Driver's license: string",
          "required": false,
          "schema": {
            "title": "dL",
            "type": "string"
          }
        },
        {
          "name": "sSN",
          "type": "string",
          "info": "Social security number: string",
          "required": false,
          "schema": {
            "title": "sSN",
            "type": "string"
          }
        },
        {
          "name": "lookupCode",
          "type": "string",
          "info": "PPV Lookup Code, unique per subscriber record: string",
          "required": false,
          "schema": {
            "title": "lookupCode",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Account": {
                "type": "string",
                "maxLength": 9,
                "minLength": 6,
                "description": "Subscriber Account #",
                "example": "123456203",
                "pattern": "^[0-9]+"
              },
              "AccountName": {
                "maxLength": 255,
                "type": "string",
                "description": "Account Name (first and last name when residential/the business name when commercial)",
                "example": "Roxanne Hunn"
              },
              "ServiceAddress": {
                "maxLength": 765,
                "type": "string",
                "description": "Service Address",
                "example": "721 Kimball Terrace San Ysidro CA 94636-9101"
              }
            },
            "required": [
              "Account",
              "AccountName",
              "ServiceAddress"
            ]
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/subscriberLookup"
      },
      "task": true
    },
    {
      "name": "getSubscriber",
      "summary": "Get subscriber",
      "description": "Get subscriber",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "object",
          "properties": {
            "Account": {
              "maxLength": 9,
              "minLength": 6,
              "type": "string",
              "description": "Subscriber Account #",
              "example": "123456203"
            },
            "SubscriberStatus": {
              "type": "object",
              "description": "Subscriber Status",
              "required": [
                "Code",
                "Name",
                "BaseCustStatus"
              ],
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "ACT"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Active"
                },
                "BaseCustStatus": {
                  "type": "integer",
                  "description": "Value | Description \n ---------|---------- \n173 | Active\n174 | Inactive\n177 | Inactive Written Off\n237 | Inactive Collections",
                  "enum": [
                    173,
                    174,
                    177,
                    237
                  ]
                }
              }
            },
            "SubscriberType": {
              "type": "object",
              "description": "Type (residential/commercial)",
              "required": [
                "Code",
                "Name"
              ],
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "RES"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Residential"
                }
              }
            },
            "AccountName": {
              "maxLength": 255,
              "type": "string",
              "description": "Account Name (first and last name when residential/the business name when commercial)",
              "example": "Roxanne Hunn"
            },
            "FirstName": {
              "type": "string",
              "maxLength": 40,
              "description": "Empty for commercial account type. Field is populated starting from BH v2.5.93.0",
              "example": "Roxanne"
            },
            "SecondName": {
              "type": "string",
              "description": "Empty for commercial account type. Field is populated starting from BH v2.5.93.0",
              "maxLength": 20
            },
            "LastName": {
              "type": "string",
              "maxLength": 80,
              "description": "Required for residential account type subscriber, empty for commercial type. Field is populated starting from BH v2.5.93.0",
              "example": "Hunn"
            },
            "PhoneNumbers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "PhoneNumber": {
                    "maxLength": 20,
                    "type": "string",
                    "description": "Phone Number",
                    "example": "(760) 385-4792"
                  },
                  "PhoneNumberType": {
                    "required": [
                      "Code",
                      "Name"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "maxLength": 3,
                        "minLength": 3,
                        "type": "string",
                        "example": "HOM"
                      },
                      "Name": {
                        "maxLength": 40,
                        "type": "string",
                        "example": "Home"
                      }
                    },
                    "description": "Phone Number Type"
                  }
                }
              }
            },
            "BillingEmail": {
              "maxLength": 255,
              "type": "string",
              "description": "Billing email",
              "example": "name@provider.com"
            },
            "ServiceAddress": {
              "required": [
                "DropConnected",
                "Franchise",
                "HeadEnd",
                "Hub",
                "PropertyType",
                "TechRegion",
                "VoIPRateCenter",
                "Wired"
              ],
              "type": "object",
              "properties": {
                "FullAddress": {
                  "maxLength": 765,
                  "type": "string",
                  "example": "721 Kimball Terrace San Ysidro CA 94636-9101"
                },
                "City": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "San Ysidro"
                },
                "State": {
                  "maxLength": 3,
                  "type": "string",
                  "example": "CA"
                },
                "ZIP": {
                  "maxLength": 20,
                  "type": "string",
                  "description": "Zip Code",
                  "example": "94636"
                },
                "ZIPPlus4": {
                  "maxLength": 20,
                  "type": "string",
                  "description": "Zip Plus 4",
                  "example": "94636-9101"
                },
                "BlockFIPS": {
                  "maxLength": 15,
                  "type": "string",
                  "description": "15-digit census block FIPS code",
                  "example": "060730176041014"
                },
                "Franchise": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "001"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "South Park1"
                    }
                  },
                  "description": "Franchise"
                },
                "PropertyType": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "RES"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Residential"
                    }
                  },
                  "description": "Property Type"
                },
                "HeadEnd": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "HTS"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Hits"
                    }
                  },
                  "description": "Head End"
                },
                "Hub": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "HTS"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Hits"
                    }
                  },
                  "description": "Hub"
                },
                "Node": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "005"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "005"
                    }
                  },
                  "description": "Node"
                },
                "VoIPRateCenter": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "DRC"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Default"
                    }
                  },
                  "description": "VoIP Rate Center"
                },
                "DropTag": {
                  "maxLength": 10,
                  "type": "string",
                  "description": "Drop Tag",
                  "example": "LM89546"
                },
                "Wired": {
                  "type": "boolean",
                  "description": "Wired"
                },
                "DropConnected": {
                  "type": "boolean",
                  "description": "Drop Connected"
                },
                "TechRegion": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "TRD"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Default Tech Region"
                    }
                  },
                  "description": "Tech Region"
                },
                "SalesArea": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "DFT"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Default Sales Area"
                    }
                  },
                  "description": "Sales Area"
                },
                "ManagementArea": {
                  "required": [
                    "Code",
                    "Name"
                  ],
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "DFT"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Default Management Area"
                    }
                  },
                  "description": "Management Area"
                }
              },
              "description": "Service Address"
            },
            "Franchise": {
              "type": "object",
              "description": "Franchise",
              "required": [
                "Code",
                "Name"
              ],
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "001"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "South Park1"
                }
              }
            },
            "TimeZone": {
              "type": "object",
              "description": "Subscriber Time Zone",
              "properties": {
                "ID": {
                  "type": "integer",
                  "description": "Time zone ID",
                  "example": 75
                },
                "BIAS": {
                  "type": "integer",
                  "description": "Time zone BIAS",
                  "example": 480
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "description": "Time zone name",
                  "example": "Pacific Standard Time (Mexico)"
                },
                "Description": {
                  "maxLength": 40,
                  "type": "string",
                  "description": "Time zone description",
                  "example": "(UTC-08:00) Baja California"
                }
              },
              "required": [
                "ID",
                "BIAS",
                "Name",
                "Description"
              ]
            },
            "PaymentPlan": {
              "type": "string",
              "enum": [
                "Pre-paid",
                "Post-paid"
              ]
            },
            "PaymentTypes": {
              "type": "array",
              "description": "Supported Payment Types. Field is populated starting from BH v2.5.93.0",
              "items": {
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "integer"
                  },
                  "Code": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 3
                  },
                  "Name": {
                    "type": "string",
                    "maxLength": 30,
                    "minLength": 1
                  }
                },
                "required": [
                  "ID",
                  "Code",
                  "Name"
                ]
              }
            },
            "DOB": {
              "type": "string",
              "description": "DOB of the Subscriber",
              "format": "date",
              "example": "1975-03-09"
            },
            "WinScoreRiskFactor": {
              "type": "string",
              "description": "WinScore risk factor",
              "example": "RiskFactor"
            },
            "ParentAccounts": {
              "type": "array",
              "description": "Parent accounts",
              "items": {
                "type": "object",
                "properties": {
                  "Account": {
                    "maxLength": 9,
                    "minLength": 6,
                    "type": "string",
                    "description": "Subscriber Account #",
                    "example": "123456201"
                  },
                  "AccountName": {
                    "maxLength": 255,
                    "type": "string",
                    "description": "Account Name (first and last name when residential/the business name when commercial)",
                    "example": "Parent Account Name"
                  }
                },
                "required": [
                  "Account",
                  "AccountName"
                ]
              }
            },
            "ChildAccounts": {
              "type": "array",
              "description": "Child accounts",
              "items": {
                "type": "object",
                "properties": {
                  "Account": {
                    "maxLength": 9,
                    "minLength": 6,
                    "type": "string",
                    "description": "Subscriber Account #",
                    "example": "123456204"
                  },
                  "AccountName": {
                    "maxLength": 255,
                    "type": "string",
                    "description": "Account Name (first and last name when residential/the business name when commercial)",
                    "example": "Child Account Name"
                  }
                },
                "required": [
                  "Account",
                  "AccountName"
                ]
              }
            },
            "SoftDisconnect": {
              "type": "object",
              "description": "Soft-Disconnect information",
              "properties": {
                "SDStatus": {
                  "type": "string",
                  "description": "Soft-Disconnect Status",
                  "enum": [
                    "Active",
                    "Pending"
                  ]
                },
                "SDDate": {
                  "type": "string",
                  "description": "Soft-Disconnect Date",
                  "format": "date",
                  "example": "2020-12-12"
                }
              },
              "required": [
                "SDStatus",
                "SDDate"
              ]
            },
            "PINisSet": {
              "type": "boolean",
              "description": "Subscriber has PIN set for IVR access. Use ValidateSubPIN to validate"
            },
            "CanOrderPPV": {
              "type": "boolean",
              "description": "Can order PPV"
            },
            "PPVDenyReason": {
              "type": "object",
              "properties": {
                "Value": {
                  "type": "integer",
                  "example": 20
                },
                "Text": {
                  "type": "string",
                  "example": "Subscriber's PPV is Temporary disabled"
                }
              },
              "required": [
                "Value",
                "Text"
              ]
            },
            "InOutageArea": {
              "type": "boolean",
              "description": "In Outage Area"
            },
            "ActiveOutages": {
              "type": "array",
              "description": "Details on each active outage",
              "items": {
                "type": "object",
                "properties": {
                  "ID": {
                    "type": "integer",
                    "description": "Outage ID",
                    "example": 1
                  },
                  "OutageStatus": {
                    "type": "string",
                    "description": "Outage Status",
                    "enum": [
                      "Open",
                      "Closed"
                    ]
                  },
                  "OutageType": {
                    "type": "string",
                    "description": "Outage Type",
                    "enum": [
                      "Planned",
                      "Unplanned"
                    ]
                  },
                  "Description": {
                    "maxLength": 80,
                    "type": "string",
                    "description": "Description"
                  },
                  "StartTime": {
                    "type": "string",
                    "description": "Start Date/Time",
                    "format": "date-time"
                  },
                  "EstCloseTime": {
                    "type": "string",
                    "description": "Estimated Close Date/Time",
                    "format": "date-time"
                  },
                  "ActualEndDate": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "Resolutions": {
                    "type": "array",
                    "description": "Resolution (if status is closed)",
                    "items": {
                      "type": "object",
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "001"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Resolution 1"
                        }
                      },
                      "required": [
                        "Code",
                        "Name"
                      ]
                    }
                  }
                },
                "required": [
                  "ID",
                  "OutageStatus",
                  "OutageType",
                  "StartTime"
                ]
              }
            }
          },
          "required": [
            "Account",
            "SubscriberStatus",
            "SubscriberType",
            "AccountName",
            "Franchise"
          ]
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriber"
      },
      "task": true
    },
    {
      "name": "getBalance",
      "summary": "Get subscriber balance",
      "description": "Get subscriber balance",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "object",
          "properties": {
            "PaymentPlan": {
              "type": "string",
              "enum": [
                "Pre-paid",
                "Post-paid"
              ]
            },
            "LastBillAfterPayments": {
              "type": "number",
              "description": "Last bill amount after payments, a.k.a balance forward",
              "example": 13062.13
            },
            "CurrentBalance": {
              "type": "number",
              "description": "Current balance, equals to LastBillAfterPayments + NewActivity",
              "example": 19991.3
            },
            "NewActivity": {
              "type": "number",
              "description": "New activity in open cycle",
              "example": 6929.17
            },
            "CurrentAging30": {
              "type": "number",
              "description": "Current aging 30+",
              "example": 256.37
            },
            "CurrentAging60": {
              "type": "number",
              "description": "Current aging 60+",
              "example": 249.72
            },
            "CurrentAging90": {
              "type": "number",
              "description": "Current aging 90+",
              "example": 236.37
            },
            "CurrentAging120": {
              "type": "number",
              "description": "Current aging 120+",
              "example": 12319.67
            },
            "PastDueAmt": {
              "type": "number",
              "description": "Past Due Amount - a sum of  '31-60' + '61-90' +'>90' aging categories. Amount to pay to avoid NPD or Soft Disconnect aka Minimum Payment",
              "example": 12319.67
            },
            "CurrentBillDueDate": {
              "type": "string",
              "format": "date",
              "description": "Current Bill Due Date",
              "example": "2020-11-01"
            },
            "LastBillAmount": {
              "type": "number",
              "description": "Last Bill Amount",
              "example": 14690.5
            },
            "LastBillDate": {
              "type": "string",
              "description": "Last Bill Date",
              "format": "date",
              "example": "2020-10-30"
            },
            "BillFormIsSet": {
              "type": "boolean",
              "description": "Subscriber billing form is set"
            },
            "LastCycleCloseDate": {
              "type": "string",
              "description": "Last Cycle Close Date",
              "format": "date",
              "example": "2020-10-30"
            },
            "LastPaymentAmount": {
              "type": "number",
              "description": "Last Payment Amount",
              "example": 99.99
            },
            "LastPaymentDate": {
              "type": "string",
              "description": "Last Payment Date",
              "format": "date",
              "example": "2020-10-30"
            },
            "LatePaymentAmount": {
              "type": "number",
              "description": "Late Payment Amount",
              "example": 1628.37
            },
            "MonthlyPPVCreditLimit": {
              "type": "number",
              "description": "Monthly PPV credit limit",
              "example": 100
            },
            "AvailPPVCreditLimit": {
              "type": "number",
              "description": "Available PPV credit limit",
              "example": 10.1
            },
            "PTP": {
              "type": "object",
              "description": "Promise-to-Pay (PTP) Information",
              "properties": {
                "PTPDate": {
                  "type": "string",
                  "description": "PTP Date",
                  "format": "date",
                  "example": "2020-12-12"
                },
                "PTPAgingCategory": {
                  "maxLength": 40,
                  "type": "string",
                  "description": "PTP Aging Category",
                  "example": "31-60"
                },
                "PTPAmount": {
                  "type": "number",
                  "description": "PTP Amount",
                  "example": 10
                }
              },
              "required": [
                "PTPDate",
                "PTPAgingCategory",
                "PTPAmount"
              ]
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getBalance"
      },
      "task": true
    },
    {
      "name": "getSubBucketBalances",
      "summary": "Get subscriber buckets",
      "description": "Used to get pre-pay subscriber buckets. It will return single post-pay bucket for post-pay subscriber.",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Code": {
                "maxLength": 3,
                "minLength": 3,
                "type": "string",
                "example": "TVD"
              },
              "Description": {
                "maxLength": 40,
                "type": "string",
                "example": "TV AND DATA"
              },
              "Balance": {
                "type": "number",
                "description": "Negative value means credit (prepay subscribers/buckets should have enough credit to get services), positive value means debit (that is usual for post-paid subscribers/buckets)",
                "format": "currency",
                "example": -2.34
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubBucketBalances"
      },
      "task": true
    },
    {
      "name": "getSubscriberPackages",
      "summary": "Get subscriber packages",
      "description": "Get subscriber packages",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "description": "Packages",
          "items": {
            "required": [
              "PackageCode",
              "PackageName"
            ],
            "type": "object",
            "properties": {
              "PackageCode": {
                "maxLength": 3,
                "minLength": 3,
                "type": "string",
                "description": "Package Code",
                "example": "015"
              },
              "PackageName": {
                "type": "string",
                "description": "Package Name",
                "example": "HBO"
              },
              "Price": {
                "type": "number",
                "description": "Price Including Discount",
                "example": 10
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriberPackages"
      },
      "task": true
    },
    {
      "name": "getSIS",
      "summary": "Get subscriber service information summary",
      "description": "Get subscriber service information summary",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "object",
          "properties": {
            "Packages": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ServiceClass": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "maxLength": 3,
                        "minLength": 3,
                        "type": "string",
                        "description": "Service Class Code",
                        "example": "VID"
                      },
                      "Name": {
                        "maxLength": 40,
                        "type": "string",
                        "description": "Service Class Name",
                        "example": "Video"
                      }
                    }
                  },
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "description": "Package Code",
                    "example": "015"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "description": "Package Name",
                    "example": "HBO"
                  },
                  "Quantity": {
                    "type": "number",
                    "description": "Quantity",
                    "example": 1
                  },
                  "Price": {
                    "type": "number",
                    "description": "Price",
                    "example": 10
                  },
                  "Taxes": {
                    "type": "number",
                    "description": "Tax/Fee Amount",
                    "example": 2.25
                  },
                  "ContractNumber": {
                    "type": "string",
                    "maxLength": 20,
                    "example": "2020-450-11",
                    "description": "Contract number"
                  },
                  "ContractEndDate": {
                    "type": "string",
                    "format": "date",
                    "description": "Contract end date"
                  }
                }
              }
            },
            "Discounts": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ServiceClass": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "maxLength": 3,
                        "minLength": 3,
                        "type": "string",
                        "description": "Service Class Code",
                        "example": "VID"
                      },
                      "Name": {
                        "maxLength": 40,
                        "type": "string",
                        "description": "Video",
                        "example": "HBO"
                      }
                    }
                  },
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "description": "Discount Code",
                    "example": "SSS"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "description": "Discount Name",
                    "example": "HBO VOIP Combo"
                  },
                  "Discount": {
                    "type": "number",
                    "description": "Discount",
                    "example": 1
                  },
                  "Taxes": {
                    "type": "number",
                    "description": "Tax/Fee Amount",
                    "example": 0.25
                  },
                  "ContractNumber": {
                    "type": "string",
                    "example": "2020-450-11",
                    "maxLength": 20,
                    "description": "Contract number"
                  },
                  "ContractEndDate": {
                    "type": "string",
                    "format": "date",
                    "description": "Contract end date"
                  }
                }
              }
            },
            "TaxesAndFees": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "ServiceClass": {
                    "type": "object",
                    "properties": {
                      "Code": {
                        "maxLength": 3,
                        "minLength": 3,
                        "type": "string",
                        "description": "Service Class Code",
                        "example": "384"
                      },
                      "Name": {
                        "maxLength": 40,
                        "type": "string",
                        "description": "Service Class Name",
                        "example": "Taxes and Fees"
                      }
                    }
                  },
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "description": "Tax/Fee Code",
                    "example": "CTX"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "description": "Tax/Fee Name",
                    "example": "City Sales Tax"
                  },
                  "Amount": {
                    "type": "number",
                    "description": "Amount",
                    "example": 10
                  }
                }
              }
            }
          },
          "required": [
            "Packages",
            "Discounts",
            "TaxesAndFees"
          ]
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSIS"
      },
      "task": true
    },
    {
      "name": "getSubscriberPackageSummary",
      "summary": "Get subscriber package summary",
      "description": "Get subscriber package summary",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "object",
          "properties": {
            "RecurringCharges": {
              "type": "number",
              "description": "Recurring charges"
            },
            "RecurringDiscounts": {
              "type": "number",
              "description": "Recurring discounts"
            },
            "TimedBilling": {
              "type": "number",
              "description": "Timed billing"
            },
            "TimedPromoDiscounts": {
              "type": "number",
              "description": "Timed promo discounts"
            },
            "AfterDiscounts": {
              "type": "number",
              "description": "Monthly after discounts"
            },
            "TotalTaxed": {
              "type": "number",
              "description": "Monthly with taxes"
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriberPackageSummary"
      },
      "task": true
    },
    {
      "name": "getLastSubscriberTransactions",
      "summary": "Get last X transactions",
      "description": "Get last X transactions",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        },
        {
          "name": "x",
          "type": "number",
          "info": "Last X transactions: 123",
          "required": true,
          "schema": {
            "title": "x",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "description": "Last X Transactions (X provided by third-party using API)",
          "items": {
            "required": [
              "Amount",
              "Date",
              "Type"
            ],
            "type": "object",
            "properties": {
              "Type": {
                "required": [
                  "Code",
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "ADJ"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Adjustment"
                  }
                },
                "description": "Transaction Type"
              },
              "Date": {
                "type": "string",
                "description": "Transaction Date",
                "format": "date",
                "example": "2020-12-12"
              },
              "Amount": {
                "type": "number",
                "description": "Transaction Amount",
                "format": "currency"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getLastSubscriberTransactions"
      },
      "task": true
    },
    {
      "name": "getSubscriberEquipment",
      "summary": "Get subscriber equipment",
      "description": "Get subscriber equipment",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "description": "List of Equipment on the Customer/Subscriber Account",
          "items": {
            "type": "object",
            "properties": {
              "EquipmentID": {
                "maxLength": 45,
                "type": "string",
                "description": "Equipment ID",
                "example": "0000310770580"
              },
              "SecondaryID": {
                "maxLength": 45,
                "type": "string",
                "description": "Secondary ID",
                "example": "0000310770581"
              },
              "Serial": {
                "maxLength": 45,
                "type": "string",
                "description": "Serial #",
                "example": "GI1032TB70LO"
              },
              "Type": {
                "type": "object",
                "description": "Equipment Type",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "CVT"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Converter"
                  }
                }
              },
              "Make": {
                "type": "object",
                "description": "Make (MFG Code)",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "HIT"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Hits"
                  }
                }
              },
              "Model": {
                "type": "object",
                "description": "Model",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "041"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "HITS DCT1000 w/ phone return"
                  }
                }
              },
              "Status": {
                "type": "object",
                "description": "Status",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "RES"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Residential"
                  }
                }
              },
              "HeadEnd": {
                "type": "object",
                "description": "Head End",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "HTS"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Hits"
                  }
                }
              },
              "Hub": {
                "type": "object",
                "description": "Hub",
                "required": [
                  "Code",
                  "Name"
                ],
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "HTS"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Hits"
                  }
                }
              },
              "Location": {
                "type": "object",
                "description": "Location",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "LVR"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Living room"
                  }
                },
                "required": [
                  "Code",
                  "Name"
                ]
              },
              "Refreshable": {
                "type": "boolean",
                "description": "Equipment can be refreshed using refresh command"
              },
              "SingleFamilyUnit": {
                "type": "boolean",
                "description": "Equipment belongs to single family"
              },
              "Interfaces": {
                "type": "array",
                "description": "Individual Interfaces for Hybrid/Multi-Interface Equipment, where chassis info is at the main object",
                "items": {
                  "type": "object",
                  "properties": {
                    "EquipmentID": {
                      "maxLength": 45,
                      "type": "string",
                      "description": "Equipment ID",
                      "example": "0000310770580"
                    },
                    "SecondaryID": {
                      "maxLength": 45,
                      "type": "string",
                      "description": "Secondary ID",
                      "example": "0000310770581"
                    },
                    "Serial": {
                      "maxLength": 45,
                      "type": "string",
                      "description": "Serial #",
                      "example": "GI1032TB70LO"
                    },
                    "Type": {
                      "type": "object",
                      "description": "Equipment Type",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "CVT"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Converter"
                        }
                      }
                    },
                    "Make": {
                      "type": "object",
                      "description": "Make (MFG Code)",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "HIT"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Hits"
                        }
                      }
                    },
                    "Model": {
                      "type": "object",
                      "description": "Model",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "041"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "HITS DCT1000 w/ phone return"
                        }
                      }
                    },
                    "HeadEnd": {
                      "type": "object",
                      "description": "Head End",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "HTS"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Hits"
                        }
                      }
                    },
                    "Hub": {
                      "type": "object",
                      "description": "Hub",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "HTS"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Hits"
                        }
                      }
                    },
                    "Refreshable": {
                      "type": "boolean",
                      "description": "Equipment can be refreshed using refresh command"
                    },
                    "Ports": {
                      "type": "array",
                      "description": "Equipment ports for MTA and ONT equipment",
                      "items": {
                        "type": "object",
                        "properties": {
                          "PortType": {
                            "type": "object",
                            "description": "Port Type",
                            "required": [
                              "Code",
                              "Name"
                            ],
                            "properties": {
                              "Code": {
                                "maxLength": 3,
                                "minLength": 3,
                                "type": "string",
                                "example": "DGE"
                              },
                              "Name": {
                                "maxLength": 40,
                                "type": "string",
                                "example": "DGE Port"
                              }
                            }
                          },
                          "PortId": {
                            "type": "integer",
                            "example": 1
                          }
                        },
                        "required": [
                          "PortType",
                          "PortId"
                        ]
                      }
                    }
                  },
                  "required": [
                    "EquipmentID",
                    "Type",
                    "Make",
                    "Model",
                    "HeadEnd",
                    "Hub",
                    "Refreshable"
                  ]
                }
              },
              "Ports": {
                "type": "array",
                "description": "Equipment ports for MTA and ONT equipment",
                "items": {
                  "type": "object",
                  "properties": {
                    "PortType": {
                      "type": "object",
                      "description": "Port Type",
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "DGE"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "DGE Port"
                        }
                      }
                    },
                    "PortId": {
                      "type": "integer",
                      "example": 1
                    }
                  },
                  "required": [
                    "PortType",
                    "PortId"
                  ]
                }
              }
            },
            "required": [
              "EquipmentID",
              "Type",
              "Make",
              "Model",
              "Status",
              "HeadEnd",
              "Hub",
              "Refreshable",
              "SingleFamilyUnit"
            ]
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getSubscriberEquipment"
      },
      "task": true
    },
    {
      "name": "refreshAllEquipment",
      "summary": "Refresh all equipment",
      "description": "Refresh all equipment",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/refreshAllEquipment"
      },
      "task": true
    },
    {
      "name": "refreshEquipment",
      "summary": "Refresh equipment",
      "description": "Refresh equipment",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        },
        {
          "name": "body",
          "type": "array",
          "info": "List of unformated equipment ID (MAC address), serial or equipment port object.: array",
          "required": true,
          "schema": {
            "type": "array",
            "items": {
              "description": "",
              "oneOf": [
                {
                  "type": "string",
                  "maxLength": 45,
                  "description": "Equipment ID/serial",
                  "example": "0000310770580"
                },
                {
                  "type": "object",
                  "description": "Equipment Port object",
                  "properties": {
                    "EquipmentID": {
                      "type": "string",
                      "description": "Equipment ID"
                    },
                    "PortTypeCode": {
                      "type": "string",
                      "description": "Port type code",
                      "example": "DGE",
                      "minLength": 3,
                      "maxLength": 3
                    },
                    "PortId": {
                      "type": "integer",
                      "description": "Port ID"
                    }
                  },
                  "required": [
                    "EquipmentID",
                    "PortTypeCode",
                    "PortId"
                  ]
                }
              ]
            }
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/refreshEquipment"
      },
      "task": true
    },
    {
      "name": "performActionCode",
      "summary": "Perform action code",
      "description": "Perform action code",
      "input": [
        {
          "name": "eQUIPMENTID",
          "type": "string",
          "info": "Equipment ID: string",
          "required": true,
          "schema": {
            "title": "eQUIPMENTID",
            "type": "string"
          }
        },
        {
          "name": "aCTIONCODE",
          "type": "string",
          "info": "Action Code: string",
          "required": true,
          "schema": {
            "title": "aCTIONCODE",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/performActionCode"
      },
      "task": true
    },
    {
      "name": "getLastOutages",
      "summary": "Get outages within last X days",
      "description": "Get outages within last X days",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        },
        {
          "name": "x",
          "type": "number",
          "info": "Last X Days: 123",
          "required": true,
          "schema": {
            "title": "x",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "description": "List of outages within the last X days",
          "items": {
            "type": "object",
            "properties": {
              "ID": {
                "type": "integer",
                "description": "Outage ID",
                "example": 1
              },
              "OutageStatus": {
                "type": "string",
                "description": "Outage Status",
                "enum": [
                  "Open",
                  "Closed"
                ]
              },
              "OutageType": {
                "type": "string",
                "description": "Outage Type",
                "enum": [
                  "Planned",
                  "Unplanned"
                ]
              },
              "Description": {
                "maxLength": 80,
                "type": "string",
                "description": "Description"
              },
              "StartTime": {
                "type": "string",
                "description": "Start Date/Time",
                "format": "date-time"
              },
              "EstCloseTime": {
                "type": "string",
                "description": "Estimated Close Date/Time",
                "format": "date-time"
              },
              "ActualEndDate": {
                "type": "string",
                "format": "date-time"
              },
              "Resolutions": {
                "type": "array",
                "description": "Resolution (if status is closed)",
                "items": {
                  "type": "object",
                  "properties": {
                    "Code": {
                      "maxLength": 3,
                      "minLength": 3,
                      "type": "string",
                      "example": "001"
                    },
                    "Name": {
                      "maxLength": 40,
                      "type": "string",
                      "example": "Resolution 1"
                    }
                  },
                  "required": [
                    "Code",
                    "Name"
                  ]
                }
              }
            },
            "required": [
              "ID",
              "OutageStatus",
              "OutageType",
              "StartTime"
            ]
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getLastOutages"
      },
      "task": true
    },
    {
      "name": "createOutage",
      "summary": "Create outage",
      "description": "Create outage",
      "input": [
        {
          "name": "body",
          "type": "object",
          "info": ": {\"OutageType\": \"Must be one of [Planned, Unplanned]\", \"AffectedServiceClasses\": \"array\", \"AffectedArea\": [{\"Type\": \"Must be one of [Franchise, Headend, Hub, Node, Subscriber, EquipmentID, EquipmentSerial, PhoneNumber]\", \"Values\": \"array\"}], \"StartTime\": \"string\", \"EstCloseTime\": \"string\", \"Description\": \"string\", \"Reasons\": \"array\"}",
          "required": true,
          "schema": {
            "type": "object",
            "properties": {
              "OutageType": {
                "type": "string",
                "description": "Outage Type",
                "enum": [
                  "Planned",
                  "Unplanned"
                ]
              },
              "AffectedServiceClasses": {
                "type": "array",
                "description": "Array of affected service classes, use '/service-classes' to get available",
                "minItems": 1,
                "items": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "INT"
                }
              },
              "AffectedArea": {
                "type": "array",
                "example": [
                  {
                    "Type": "Subscriber",
                    "Values": [
                      "000000100",
                      "000013525"
                    ]
                  },
                  {
                    "Type": "Headend",
                    "Values": [
                      "000",
                      "001"
                    ]
                  },
                  {
                    "Type": "EquipmentID",
                    "Values": [
                      "19195",
                      "987654321000"
                    ]
                  },
                  {
                    "Type": "PhoneNumber",
                    "Values": [
                      "17606021916",
                      "17609671001"
                    ]
                  }
                ],
                "minItems": 1,
                "items": {
                  "type": "object",
                  "properties": {
                    "Type": {
                      "type": "string",
                      "description": " 1. Franchise - franchise codes. 2. Headend - head end codes. 3. Hub - hub codes. 4. Node - node codes. 5. Subscriber - subscriber account numbers. 6. EquipmentID and EquipmentSerial - values without masks. 7. PhoneNumber - full phone number including country code.",
                      "enum": [
                        "Franchise",
                        "Headend",
                        "Hub",
                        "Node",
                        "Subscriber",
                        "EquipmentID",
                        "EquipmentSerial",
                        "PhoneNumber"
                      ]
                    },
                    "Values": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "description": "Area identificator",
                        "minLength": 3,
                        "maxLength": 40
                      }
                    }
                  },
                  "required": [
                    "Type",
                    "Values"
                  ]
                }
              },
              "StartTime": {
                "type": "string",
                "description": "Start Date/Time",
                "format": "date-time"
              },
              "EstCloseTime": {
                "type": "string",
                "description": "Estimated Close Date/Time",
                "format": "date-time"
              },
              "Description": {
                "maxLength": 255,
                "type": "string",
                "description": "Outage Public Description"
              },
              "Reasons": {
                "type": "array",
                "description": "List of outage reasons, use '/reasons/outage' to get available reasons",
                "items": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "description": "Reason code, use '/reasons/outage' to get available reasons",
                  "example": "300"
                }
              }
            },
            "required": [
              "OutageType",
              "AffectedServiceClasses",
              "AffectedArea",
              "StartTime",
              "EstCloseTime"
            ]
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "object",
          "properties": {
            "Outage": {
              "type": "integer",
              "description": "Outage ID",
              "example": 100
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/createOutage"
      },
      "task": true
    },
    {
      "name": "updateOutage",
      "summary": "Update outage",
      "description": "Update outage",
      "input": [
        {
          "name": "oUTAGE",
          "type": "number",
          "info": "Outage ID: 123",
          "required": true,
          "schema": {
            "title": "oUTAGE",
            "type": "number"
          }
        },
        {
          "name": "body",
          "type": "object",
          "info": ": {\"OutageType\": \"Must be one of [Planned, Unplanned]\", \"AffectedServiceClasses\": \"array\", \"AffectedArea\": [{\"Type\": \"Must be one of [Franchise, Headend, Hub, Node, Subscriber, EquipmentID, EquipmentSerial, PhoneNumber]\", \"Values\": \"array\"}], \"StartTime\": \"string\", \"EstCloseTime\": \"string\", \"Description\": \"string\", \"Reasons\": \"array\"}",
          "required": true,
          "schema": {
            "type": "object",
            "properties": {
              "OutageType": {
                "type": "string",
                "description": "Outage Type",
                "enum": [
                  "Planned",
                  "Unplanned"
                ]
              },
              "AffectedServiceClasses": {
                "type": "array",
                "description": "Array of affected service classes, use '/service-classes' to get available",
                "minItems": 1,
                "items": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "INT"
                }
              },
              "AffectedArea": {
                "type": "array",
                "example": [
                  {
                    "Type": "Subscriber",
                    "Values": [
                      "000000100",
                      "000013525"
                    ]
                  },
                  {
                    "Type": "Headend",
                    "Values": [
                      "000",
                      "001"
                    ]
                  },
                  {
                    "Type": "EquipmentID",
                    "Values": [
                      "19195",
                      "987654321000"
                    ]
                  },
                  {
                    "Type": "PhoneNumber",
                    "Values": [
                      "17606021916",
                      "17609671001"
                    ]
                  }
                ],
                "minItems": 1,
                "items": {
                  "type": "object",
                  "properties": {
                    "Type": {
                      "type": "string",
                      "description": " 1. Franchise - franchise codes. 2. Headend - head end codes. 3. Hub - hub codes. 4. Node - node codes. 5. Subscriber - subscriber account numbers. 6. EquipmentID and EquipmentSerial - values without masks. 7. PhoneNumber - full phone number including country code.",
                      "enum": [
                        "Franchise",
                        "Headend",
                        "Hub",
                        "Node",
                        "Subscriber",
                        "EquipmentID",
                        "EquipmentSerial",
                        "PhoneNumber"
                      ]
                    },
                    "Values": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "string",
                        "description": "Area identificator",
                        "minLength": 3,
                        "maxLength": 40
                      }
                    }
                  },
                  "required": [
                    "Type",
                    "Values"
                  ]
                }
              },
              "StartTime": {
                "type": "string",
                "description": "Start Date/Time",
                "format": "date-time"
              },
              "EstCloseTime": {
                "type": "string",
                "description": "Estimated Close Date/Time",
                "format": "date-time"
              },
              "Description": {
                "maxLength": 255,
                "type": "string",
                "description": "Outage Public Description"
              },
              "Reasons": {
                "type": "array",
                "description": "List of outage reasons, use '/reasons/outage' to get available reasons",
                "items": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "description": "Reason code, use '/reasons/outage' to get available reasons",
                  "example": "300"
                }
              }
            },
            "required": [
              "OutageType",
              "AffectedServiceClasses",
              "AffectedArea",
              "StartTime",
              "EstCloseTime"
            ]
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/updateOutage"
      },
      "task": true
    },
    {
      "name": "cancelOutage",
      "summary": "Cancel outage",
      "description": "Cancel outage",
      "input": [
        {
          "name": "oUTAGE",
          "type": "number",
          "info": "Outage ID: 123",
          "required": true,
          "schema": {
            "title": "oUTAGE",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/cancelOutage"
      },
      "task": true
    },
    {
      "name": "getLastWorkOrders",
      "summary": "Get work orders within last X days",
      "description": "Get work orders within last X days",
      "input": [
        {
          "name": "aCCOUNT",
          "type": "string",
          "info": "Subscriber Account #: string",
          "required": true,
          "schema": {
            "title": "aCCOUNT",
            "type": "string"
          }
        },
        {
          "name": "x",
          "type": "number",
          "info": "Last X Days: 123",
          "required": true,
          "schema": {
            "title": "x",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "description": "Work Order details for opened and closed within the last X days",
          "items": {
            "required": [
              "CreatedBy",
              "CreatedWhen",
              "ScheduledDate",
              "WOStatus",
              "WOType",
              "WOnumber"
            ],
            "type": "object",
            "properties": {
              "WOnumber": {
                "maxLength": 20,
                "type": "string",
                "description": "WO number",
                "example": "2147486937"
              },
              "WOStatus": {
                "type": "string",
                "description": "WO Status",
                "enum": [
                  "Open",
                  "Closed",
                  "Suspended",
                  "Canceled"
                ]
              },
              "CreatedBy": {
                "required": [
                  "Code",
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "CSD"
                  },
                  "Name": {
                    "maxLength": 255,
                    "type": "string",
                    "example": "Mark Lawman"
                  }
                },
                "description": "Created By"
              },
              "CreatedWhen": {
                "type": "string",
                "description": "Created Date/Time",
                "format": "date-time"
              },
              "WOType": {
                "required": [
                  "Code",
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "COS"
                  },
                  "Name": {
                    "maxLength": 40,
                    "type": "string",
                    "example": "Change of Service"
                  },
                  "BaseType": {
                    "required": [
                      "Code",
                      "Name"
                    ],
                    "type": "object",
                    "properties": {
                      "Code": {
                        "maxLength": 3,
                        "minLength": 3,
                        "type": "string",
                        "example": "COS"
                      },
                      "Name": {
                        "maxLength": 40,
                        "type": "string",
                        "example": "Change of Service"
                      }
                    }
                  }
                },
                "description": "Work Type/Service Type"
              },
              "ScheduledDate": {
                "type": "string",
                "description": "Scheduled Date",
                "format": "date"
              },
              "ScheduledPeriod": {
                "type": "object",
                "properties": {
                  "Period": {
                    "type": "integer",
                    "description": "Period ID",
                    "example": 354
                  },
                  "PeriodStart": {
                    "type": "string",
                    "description": "Scheduled Period Start",
                    "format": "date-time",
                    "example": "2020-10-30T12:00:00.000Z"
                  },
                  "PeriodEnd": {
                    "type": "string",
                    "description": "Scheduled Period End",
                    "format": "date-time",
                    "example": "2020-10-30T17:00:00.000Z"
                  },
                  "PeriodDescription": {
                    "maxLength": 30,
                    "type": "string",
                    "description": "Scheduled Period Description",
                    "example": "12PM-5PM"
                  }
                }
              },
              "Technician": {
                "required": [
                  "Code",
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "1VD"
                  },
                  "Name": {
                    "maxLength": 255,
                    "type": "string",
                    "example": "John Black"
                  }
                },
                "description": "Technician"
              },
              "ClosedBy": {
                "required": [
                  "Code",
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Code": {
                    "maxLength": 3,
                    "minLength": 3,
                    "type": "string",
                    "example": "CSD"
                  },
                  "Name": {
                    "maxLength": 255,
                    "type": "string",
                    "example": "Mark Lawman"
                  }
                },
                "description": "Closed By"
              },
              "Reasons": {
                "type": "array",
                "example": [
                  {
                    "type": "Initial",
                    "Reason": {
                      "Code": "201",
                      "Name": "Too expensive"
                    }
                  },
                  {
                    "type": "Secondary",
                    "Reason": {
                      "Code": "202",
                      "Name": "Slow Speed"
                    }
                  },
                  {
                    "type": "Secondary",
                    "Reason": {
                      "Code": "203",
                      "Name": "Can't afford"
                    }
                  },
                  {
                    "type": "Final",
                    "Reason": {
                      "Code": "204",
                      "Name": "Downgrade"
                    }
                  }
                ],
                "items": {
                  "type": "object",
                  "properties": {
                    "Type": {
                      "type": "string",
                      "description": "Reason type",
                      "enum": [
                        "Initial",
                        "Secondary",
                        "Final"
                      ]
                    },
                    "Reason": {
                      "required": [
                        "Code",
                        "Name"
                      ],
                      "type": "object",
                      "properties": {
                        "Code": {
                          "maxLength": 3,
                          "minLength": 3,
                          "type": "string",
                          "example": "201"
                        },
                        "Name": {
                          "maxLength": 40,
                          "type": "string",
                          "example": "Too expensive"
                        }
                      },
                      "description": "Reason code"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getLastWorkOrders"
      },
      "task": true
    },
    {
      "name": "getAvailability",
      "summary": "Get available time periods",
      "description": "Get available time periods for work order rescheduling",
      "input": [
        {
          "name": "wONUMBER",
          "type": "string",
          "info": "Work Order Number: string",
          "required": true,
          "schema": {
            "title": "wONUMBER",
            "type": "string"
          }
        },
        {
          "name": "date",
          "type": "string",
          "info": "Selected Date: string",
          "required": false,
          "schema": {
            "title": "date",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Period": {
                "type": "integer",
                "description": "Period ID",
                "example": 354
              },
              "PeriodStart": {
                "type": "string",
                "description": "Scheduled Period Start",
                "format": "date-time",
                "example": "2020-10-30T12:00:00.000Z"
              },
              "PeriodEnd": {
                "type": "string",
                "description": "Scheduled Period End",
                "format": "date-time",
                "example": "2020-10-30T17:00:00.000Z"
              },
              "PeriodDescription": {
                "maxLength": 30,
                "type": "string",
                "description": "Scheduled Period Description",
                "example": "12PM-5PM"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getAvailability"
      },
      "task": true
    },
    {
      "name": "rescheduleWorkOrder",
      "summary": "Reschedule work order",
      "description": "Reschedule work order",
      "input": [
        {
          "name": "wONUMBER",
          "type": "string",
          "info": "Work Order Number: string",
          "required": true,
          "schema": {
            "title": "wONUMBER",
            "type": "string"
          }
        },
        {
          "name": "dATE",
          "type": "string",
          "info": "Date: string",
          "required": true,
          "schema": {
            "title": "dATE",
            "type": "string"
          }
        },
        {
          "name": "pERIOD",
          "type": "number",
          "info": "Period ID: 123",
          "required": true,
          "schema": {
            "title": "pERIOD",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/rescheduleWorkOrder"
      },
      "task": true
    },
    {
      "name": "cancelWorkOrder",
      "summary": "Cancel work order",
      "description": "Cancel work order",
      "input": [
        {
          "name": "wONUMBER",
          "type": "string",
          "info": "Work order number: string",
          "required": true,
          "schema": {
            "title": "wONUMBER",
            "type": "string"
          }
        },
        {
          "name": "reason",
          "type": "string",
          "info": "Work order cancel reason, use /reasons/cancel to get available reasons: string",
          "required": true,
          "schema": {
            "title": "reason",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "title": "result",
          "type": "object"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/cancelWorkOrder"
      },
      "task": true
    },
    {
      "name": "homeLookup",
      "summary": "Lookup home",
      "description": "Lookup home",
      "input": [
        {
          "name": "streetNumber",
          "type": "string",
          "info": "Street Number: string",
          "required": false,
          "schema": {
            "title": "streetNumber",
            "type": "string"
          }
        },
        {
          "name": "streetName",
          "type": "string",
          "info": "Street Name: string",
          "required": true,
          "schema": {
            "title": "streetName",
            "type": "string"
          }
        },
        {
          "name": "apartment",
          "type": "string",
          "info": "Apartment: string",
          "required": false,
          "schema": {
            "title": "apartment",
            "type": "string"
          }
        },
        {
          "name": "city",
          "type": "string",
          "info": "City: string",
          "required": true,
          "schema": {
            "title": "city",
            "type": "string"
          }
        },
        {
          "name": "postCode",
          "type": "string",
          "info": "Post Code: string",
          "required": false,
          "schema": {
            "title": "postCode",
            "type": "string"
          }
        },
        {
          "name": "state",
          "type": "string",
          "info": "State: string",
          "required": false,
          "schema": {
            "title": "state",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "required": [
              "Address",
              "Home"
            ],
            "type": "object",
            "properties": {
              "Home": {
                "type": "integer",
                "description": "Home ID",
                "example": 100
              },
              "Address": {
                "maxLength": 765,
                "type": "string",
                "example": "721 Kimball Terrace San Ysidro CA 94636-9101"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/homeLookup"
      },
      "task": true
    },
    {
      "name": "getHome",
      "summary": "Get homes passed details",
      "description": "Get homes passed details",
      "input": [
        {
          "name": "hOME",
          "type": "number",
          "info": "Home ID: 123",
          "required": true,
          "schema": {
            "title": "hOME",
            "type": "number"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "required": [
            "DropConnected",
            "Franchise",
            "HeadEnd",
            "Hub",
            "PropertyType",
            "TechRegion",
            "VoIPRateCenter",
            "Wired"
          ],
          "type": "object",
          "properties": {
            "FullAddress": {
              "maxLength": 765,
              "type": "string",
              "example": "721 Kimball Terrace San Ysidro CA 94636-9101"
            },
            "City": {
              "maxLength": 40,
              "type": "string",
              "example": "San Ysidro"
            },
            "State": {
              "maxLength": 3,
              "type": "string",
              "example": "CA"
            },
            "ZIP": {
              "maxLength": 20,
              "type": "string",
              "description": "Zip Code",
              "example": "94636"
            },
            "ZIPPlus4": {
              "maxLength": 20,
              "type": "string",
              "description": "Zip Plus 4",
              "example": "94636-9101"
            },
            "BlockFIPS": {
              "maxLength": 15,
              "type": "string",
              "description": "15-digit census block FIPS code",
              "example": "060730176041014"
            },
            "Franchise": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "001"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "South Park1"
                }
              },
              "description": "Franchise"
            },
            "PropertyType": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "RES"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Residential"
                }
              },
              "description": "Property Type"
            },
            "HeadEnd": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "HTS"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Hits"
                }
              },
              "description": "Head End"
            },
            "Hub": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "HTS"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Hits"
                }
              },
              "description": "Hub"
            },
            "Node": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "005"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "005"
                }
              },
              "description": "Node"
            },
            "VoIPRateCenter": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "DRC"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Default"
                }
              },
              "description": "VoIP Rate Center"
            },
            "DropTag": {
              "maxLength": 10,
              "type": "string",
              "description": "Drop Tag",
              "example": "LM89546"
            },
            "Wired": {
              "type": "boolean",
              "description": "Wired"
            },
            "DropConnected": {
              "type": "boolean",
              "description": "Drop Connected"
            },
            "TechRegion": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "TRD"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Default Tech Region"
                }
              },
              "description": "Tech Region"
            },
            "SalesArea": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "DFT"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Default Sales Area"
                }
              },
              "description": "Sales Area"
            },
            "ManagementArea": {
              "required": [
                "Code",
                "Name"
              ],
              "type": "object",
              "properties": {
                "Code": {
                  "maxLength": 3,
                  "minLength": 3,
                  "type": "string",
                  "example": "DFT"
                },
                "Name": {
                  "maxLength": 40,
                  "type": "string",
                  "example": "Default Management Area"
                }
              },
              "description": "Management Area"
            }
          },
          "description": "Service Address"
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getHome"
      },
      "task": true
    },
    {
      "name": "getReasons",
      "summary": "Get available reason list",
      "description": "Get available reason list",
      "input": [
        {
          "name": "tYPE",
          "type": "string",
          "info": "Reason type: Must be one of [cancel, outage]",
          "required": true,
          "schema": {
            "title": "tYPE",
            "type": "string"
          }
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Code": {
                "type": "string",
                "description": "Reason code"
              },
              "Name": {
                "type": "string",
                "description": "Reason name"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "POST",
        "path": "/getReasons"
      },
      "task": true
    },
    {
      "name": "getServiceClassList",
      "summary": "Get service class list",
      "description": "Get service class list",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result",
        "schema": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Code": {
                "type": "string",
                "description": "Service class code"
              },
              "Name": {
                "type": "string",
                "description": "Service class name"
              }
            }
          }
        }
      },
      "roles": [
        "admin"
      ],
      "route": {
        "verb": "GET",
        "path": "/getServiceClassList"
      },
      "task": true
    }
  ],
  "views": []
}