diff --git a/Makefile b/Makefile
index caa9ce1..cdf7dee 100644
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,15 @@
-VERNONKEENAN_BUILD_ENV ?= dev
-VERNONKEENAN_GELF_URI ?= udp://packrat.noc.tnxs.net:12201
-VERNONKEENAN_REGISTRY_PRIV ?= hub.tnxs.net
-VERNONKEENAN_REGISTRY_PUB ?= docker.io
-VERNONKEENAN_REPO_NAME = lib
-VERNONKEENAN_VERSION ?= 0.0.1
-.PHONY: swagger
+.PHONY: swagger client
+
+client:
+ rm -rf client
+ openapi-generator-cli generate -i swagger/auth-vernonkeenan.yaml -g javascript -o client/auth
+ openapi-generator-cli generate -i swagger/board-vernonkeenan.yaml -g javascript -o client/board
+ openapi-generator-cli generate -i swagger/crm-vernonkeenan.yaml -g javascript -o client/crm
+ openapi-generator-cli generate -i swagger/devops-vernonkeenan.yaml -g javascript -o client/devops
+ openapi-generator-cli generate -i swagger/research-vernonkeenan.yaml -g javascript -o client/research
+ openapi-generator-cli generate -i swagger/sf-gate-vernonkeenan.yaml -g javascript -o client/sf-gate
+ openapi-generator-cli generate -i swagger/stash-vernonkeenan.yaml -g javascript -o client/stash
swagger:
cp ../auth/swagger/auth-vernonkeenan.yaml ./swagger
diff --git a/client/auth/.babelrc b/client/auth/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/auth/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/auth/.gitignore b/client/auth/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/auth/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/auth/.openapi-generator-ignore b/client/auth/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/auth/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/auth/.openapi-generator/FILES b/client/auth/.openapi-generator/FILES
new file mode 100644
index 0000000..ee72094
--- /dev/null
+++ b/client/auth/.openapi-generator/FILES
@@ -0,0 +1,34 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Address.md
+docs/Error.md
+docs/ResponseMeta.md
+docs/TenantUser.md
+docs/User.md
+docs/UserApi.md
+docs/UserResponse.md
+docs/UserRole.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/UserApi.js
+src/index.js
+src/model/Address.js
+src/model/Error.js
+src/model/ResponseMeta.js
+src/model/TenantUser.js
+src/model/User.js
+src/model/UserResponse.js
+src/model/UserRole.js
+test/api/UserApi.spec.js
+test/model/Address.spec.js
+test/model/Error.spec.js
+test/model/ResponseMeta.spec.js
+test/model/TenantUser.spec.js
+test/model/User.spec.js
+test/model/UserResponse.spec.js
+test/model/UserRole.spec.js
diff --git a/client/auth/.openapi-generator/VERSION b/client/auth/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/auth/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/auth/.travis.yml b/client/auth/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/auth/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/auth/README.md b/client/auth/README.md
new file mode 100644
index 0000000..8c758a4
--- /dev/null
+++ b/client/auth/README.md
@@ -0,0 +1,155 @@
+# auth
+
+Auth - JavaScript client for auth
+Authentication Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install auth --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your auth from, and run:
+
+```shell
+npm link /path/to/
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+* param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ *
+ * @param {Object.param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.data
will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.
data
will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://auth.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value:
csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/auth/src/api/UserApi.js b/client/auth/src/api/UserApi.js
new file mode 100644
index 0000000..1924668
--- /dev/null
+++ b/client/auth/src/api/UserApi.js
@@ -0,0 +1,80 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import UserResponse from '../model/UserResponse';
+
+/**
+* User service.
+* @module api/UserApi
+* @version 0.0.2
+*/
+export default class UserApi {
+
+ /**
+ * Constructs a new UserApi.
+ * @alias module:api/UserApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getUsers operation.
+ * @callback module:api/UserApi~getUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Check API Key
+ * Checks for a valid API key, and returns full user record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.apikey Service account or developer API key
+ * @param {module:api/UserApi~getUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserResponse}
+ */
+ getUsers(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'apikey': opts['apikey']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = UserResponse;
+ return this.apiClient.callApi(
+ '/users', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/auth/src/index.js b/client/auth/src/index.js
new file mode 100644
index 0000000..6a7d500
--- /dev/null
+++ b/client/auth/src/index.js
@@ -0,0 +1,111 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Address from './model/Address';
+import Error from './model/Error';
+import ResponseMeta from './model/ResponseMeta';
+import TenantUser from './model/TenantUser';
+import User from './model/User';
+import UserResponse from './model/UserResponse';
+import UserRole from './model/UserRole';
+import UserApi from './api/UserApi';
+
+
+/**
+* Authentication_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* var Auth = require('index'); // See note below*.
+* var xxxSvc = new Auth.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Auth.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+* A non-AMD browser application (discouraged) might do something like this: +*
+* var xxxSvc = new Auth.XxxApi(); // Allocate the API class we're going to use. +* var yyy = new Auth.Yyy(); // Construct a model instance. +* yyyModel.someProperty = 'someValue'; +* ... +* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service. +* ... +*+* +* @module index +* @version 0.0.2 +*/ +export { + /** + * The ApiClient constructor. + * @property {module:ApiClient} + */ + ApiClient, + + /** + * The Address model constructor. + * @property {module:model/Address} + */ + Address, + + /** + * The Error model constructor. + * @property {module:model/Error} + */ + Error, + + /** + * The ResponseMeta model constructor. + * @property {module:model/ResponseMeta} + */ + ResponseMeta, + + /** + * The TenantUser model constructor. + * @property {module:model/TenantUser} + */ + TenantUser, + + /** + * The User model constructor. + * @property {module:model/User} + */ + User, + + /** + * The UserResponse model constructor. + * @property {module:model/UserResponse} + */ + UserResponse, + + /** + * The UserRole model constructor. + * @property {module:model/UserRole} + */ + UserRole, + + /** + * The UserApi service constructor. + * @property {module:api/UserApi} + */ + UserApi +}; diff --git a/client/auth/src/model/Address.js b/client/auth/src/model/Address.js new file mode 100644 index 0000000..58c6092 --- /dev/null +++ b/client/auth/src/model/Address.js @@ -0,0 +1,126 @@ +/** + * auth + * Authentication Microservice + * + * The version of the OpenAPI document: 0.0.2 + * Contact: noc@taxnexus.net + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +import ApiClient from '../ApiClient'; + +/** + * The Address model module. + * @module model/Address + * @version 0.0.2 + */ +class Address { + /** + * Constructs a new
Address
.
+ * @alias module:model/Address
+ */
+ constructor() {
+
+ Address.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('City')) {
+ obj['City'] = ApiClient.convertToType(data['City'], 'String');
+ }
+ if (data.hasOwnProperty('Country')) {
+ obj['Country'] = ApiClient.convertToType(data['Country'], 'String');
+ }
+ if (data.hasOwnProperty('CountryCode')) {
+ obj['CountryCode'] = ApiClient.convertToType(data['CountryCode'], 'String');
+ }
+ if (data.hasOwnProperty('PostalCode')) {
+ obj['PostalCode'] = ApiClient.convertToType(data['PostalCode'], 'String');
+ }
+ if (data.hasOwnProperty('State')) {
+ obj['State'] = ApiClient.convertToType(data['State'], 'String');
+ }
+ if (data.hasOwnProperty('StateCode')) {
+ obj['StateCode'] = ApiClient.convertToType(data['StateCode'], 'String');
+ }
+ if (data.hasOwnProperty('Street')) {
+ obj['Street'] = ApiClient.convertToType(data['Street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} City
+ */
+Address.prototype['City'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} Country
+ */
+Address.prototype['Country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} CountryCode
+ */
+Address.prototype['CountryCode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} PostalCode
+ */
+Address.prototype['PostalCode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} State
+ */
+Address.prototype['State'] = undefined;
+
+/**
+ * State Code
+ * @member {String} StateCode
+ */
+Address.prototype['StateCode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} Street
+ */
+Address.prototype['Street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/auth/src/model/Error.js b/client/auth/src/model/Error.js
new file mode 100644
index 0000000..348d23a
--- /dev/null
+++ b/client/auth/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/auth/src/model/ResponseMeta.js b/client/auth/src/model/ResponseMeta.js
new file mode 100644
index 0000000..821a91b
--- /dev/null
+++ b/client/auth/src/model/ResponseMeta.js
@@ -0,0 +1,162 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/auth/src/model/TenantUser.js b/client/auth/src/model/TenantUser.js
new file mode 100644
index 0000000..2e2a7d4
--- /dev/null
+++ b/client/auth/src/model/TenantUser.js
@@ -0,0 +1,208 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The TenantUser model module.
+ * @module model/TenantUser
+ * @version 0.0.2
+ */
+class TenantUser {
+ /**
+ * Constructs a new TenantUser
.
+ * Relationship object that connects users to a tenant
+ * @alias module:model/TenantUser
+ */
+ constructor() {
+
+ TenantUser.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantUser
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantUser} obj Optional instance to populate.
+ * @return {module:model/TenantUser} The populated TenantUser
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantUser();
+
+ if (data.hasOwnProperty('AccessLevel')) {
+ obj['AccessLevel'] = ApiClient.convertToType(data['AccessLevel'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantActive')) {
+ obj['TenantActive'] = ApiClient.convertToType(data['TenantActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TenantName')) {
+ obj['TenantName'] = ApiClient.convertToType(data['TenantName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantStatus')) {
+ obj['TenantStatus'] = ApiClient.convertToType(data['TenantStatus'], 'String');
+ }
+ if (data.hasOwnProperty('TenantType')) {
+ obj['TenantType'] = ApiClient.convertToType(data['TenantType'], 'String');
+ }
+ if (data.hasOwnProperty('TenantVersion')) {
+ obj['TenantVersion'] = ApiClient.convertToType(data['TenantVersion'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The makeTenantUser access level for this User
+ * @member {String} AccessLevel
+ */
+TenantUser.prototype['AccessLevel'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+TenantUser.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+TenantUser.prototype['AccountID'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+TenantUser.prototype['ContactID'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} CompanyName
+ */
+TenantUser.prototype['CompanyName'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+TenantUser.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant active?
+ * @member {Boolean} TenantActive
+ */
+TenantUser.prototype['TenantActive'] = undefined;
+
+/**
+ * The Tenant ID
+ * @member {String} TenantID
+ */
+TenantUser.prototype['TenantID'] = undefined;
+
+/**
+ * Tenant Name
+ * @member {String} TenantName
+ */
+TenantUser.prototype['TenantName'] = undefined;
+
+/**
+ * Tenant Status
+ * @member {String} TenantStatus
+ */
+TenantUser.prototype['TenantStatus'] = undefined;
+
+/**
+ * Tenant type
+ * @member {String} TenantType
+ */
+TenantUser.prototype['TenantType'] = undefined;
+
+/**
+ * Tenant Version
+ * @member {String} TenantVersion
+ */
+TenantUser.prototype['TenantVersion'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+TenantUser.prototype['Username'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+TenantUser.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+TenantUser.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+TenantUser.prototype['UserID'] = undefined;
+
+
+
+
+
+
+export default TenantUser;
+
diff --git a/client/auth/src/model/User.js b/client/auth/src/model/User.js
new file mode 100644
index 0000000..aad9871
--- /dev/null
+++ b/client/auth/src/model/User.js
@@ -0,0 +1,584 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+import TenantUser from './TenantUser';
+import UserRole from './UserRole';
+
+/**
+ * The User model module.
+ * @module model/User
+ * @version 0.0.2
+ */
+class User {
+ /**
+ * Constructs a new User
.
+ * @alias module:model/User
+ */
+ constructor() {
+
+ User.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a User
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/User} obj Optional instance to populate.
+ * @return {module:model/User} The populated User
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new User();
+
+ if (data.hasOwnProperty('AboutMe')) {
+ obj['AboutMe'] = ApiClient.convertToType(data['AboutMe'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('Alias')) {
+ obj['Alias'] = ApiClient.convertToType(data['Alias'], 'String');
+ }
+ if (data.hasOwnProperty('APIKey')) {
+ obj['APIKey'] = ApiClient.convertToType(data['APIKey'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CommunityNickname')) {
+ obj['CommunityNickname'] = ApiClient.convertToType(data['CommunityNickname'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('DelegatedApproverID')) {
+ obj['DelegatedApproverID'] = ApiClient.convertToType(data['DelegatedApproverID'], 'String');
+ }
+ if (data.hasOwnProperty('Department')) {
+ obj['Department'] = ApiClient.convertToType(data['Department'], 'String');
+ }
+ if (data.hasOwnProperty('Division')) {
+ obj['Division'] = ApiClient.convertToType(data['Division'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EmployeeNumber')) {
+ obj['EmployeeNumber'] = ApiClient.convertToType(data['EmployeeNumber'], 'String');
+ }
+ if (data.hasOwnProperty('EndOfDay')) {
+ obj['EndOfDay'] = ApiClient.convertToType(data['EndOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('Environment')) {
+ obj['Environment'] = ApiClient.convertToType(data['Environment'], 'String');
+ }
+ if (data.hasOwnProperty('Extension')) {
+ obj['Extension'] = ApiClient.convertToType(data['Extension'], 'String');
+ }
+ if (data.hasOwnProperty('FabricAPIKey')) {
+ obj['FabricAPIKey'] = ApiClient.convertToType(data['FabricAPIKey'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('ForecastEnabled')) {
+ obj['ForecastEnabled'] = ApiClient.convertToType(data['ForecastEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('FullPhotoURL')) {
+ obj['FullPhotoURL'] = ApiClient.convertToType(data['FullPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsActive')) {
+ obj['IsActive'] = ApiClient.convertToType(data['IsActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsPortalEnabled')) {
+ obj['IsPortalEnabled'] = ApiClient.convertToType(data['IsPortalEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsProphilePhotoActive')) {
+ obj['IsProphilePhotoActive'] = ApiClient.convertToType(data['IsProphilePhotoActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsSystemControlled')) {
+ obj['IsSystemControlled'] = ApiClient.convertToType(data['IsSystemControlled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastLogin')) {
+ obj['LastLogin'] = ApiClient.convertToType(data['LastLogin'], 'String');
+ }
+ if (data.hasOwnProperty('LastIP')) {
+ obj['LastIP'] = ApiClient.convertToType(data['LastIP'], 'String');
+ }
+ if (data.hasOwnProperty('LoginCount')) {
+ obj['LoginCount'] = ApiClient.convertToType(data['LoginCount'], 'Number');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('ManagerID')) {
+ obj['ManagerID'] = ApiClient.convertToType(data['ManagerID'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OutOfOfficeMessage')) {
+ obj['OutOfOfficeMessage'] = ApiClient.convertToType(data['OutOfOfficeMessage'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PortalRole')) {
+ obj['PortalRole'] = ApiClient.convertToType(data['PortalRole'], 'String');
+ }
+ if (data.hasOwnProperty('ProfileID')) {
+ obj['ProfileID'] = ApiClient.convertToType(data['ProfileID'], 'String');
+ }
+ if (data.hasOwnProperty('ReceivesAdminInfoEmails')) {
+ obj['ReceivesAdminInfoEmails'] = ApiClient.convertToType(data['ReceivesAdminInfoEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ReceivesAdminEmails')) {
+ obj['ReceivesAdminEmails'] = ApiClient.convertToType(data['ReceivesAdminEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('SenderEmail')) {
+ obj['SenderEmail'] = ApiClient.convertToType(data['SenderEmail'], 'String');
+ }
+ if (data.hasOwnProperty('SenderName')) {
+ obj['SenderName'] = ApiClient.convertToType(data['SenderName'], 'String');
+ }
+ if (data.hasOwnProperty('Signature')) {
+ obj['Signature'] = ApiClient.convertToType(data['Signature'], 'String');
+ }
+ if (data.hasOwnProperty('SmallPhotoURL')) {
+ obj['SmallPhotoURL'] = ApiClient.convertToType(data['SmallPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('StartOfDay')) {
+ obj['StartOfDay'] = ApiClient.convertToType(data['StartOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TimeZone')) {
+ obj['TimeZone'] = ApiClient.convertToType(data['TimeZone'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoleID')) {
+ obj['UserRoleID'] = ApiClient.convertToType(data['UserRoleID'], 'String');
+ }
+ if (data.hasOwnProperty('UserType')) {
+ obj['UserType'] = ApiClient.convertToType(data['UserType'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoles')) {
+ obj['UserRoles'] = ApiClient.convertToType(data['UserRoles'], [UserRole]);
+ }
+ if (data.hasOwnProperty('TenantUsers')) {
+ obj['TenantUsers'] = ApiClient.convertToType(data['TenantUsers'], [TenantUser]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * About Me
+ * @member {String} AboutMe
+ */
+User.prototype['AboutMe'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+User.prototype['AccountID'] = undefined;
+
+/**
+ * @member {module:model/Address} Address
+ */
+User.prototype['Address'] = undefined;
+
+/**
+ * Alias
+ * @member {String} Alias
+ */
+User.prototype['Alias'] = undefined;
+
+/**
+ * API Key
+ * @member {String} APIKey
+ */
+User.prototype['APIKey'] = undefined;
+
+/**
+ * Auth0 User Id
+ * @member {String} Auth0UserID
+ */
+User.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Nickname
+ * @member {String} CommunityNickname
+ */
+User.prototype['CommunityNickname'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+User.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact
+ * @member {String} ContactID
+ */
+User.prototype['ContactID'] = undefined;
+
+/**
+ * Created User ID
+ * @member {String} CreatedByID
+ */
+User.prototype['CreatedByID'] = undefined;
+
+/**
+ * Date Created
+ * @member {String} CreatedDate
+ */
+User.prototype['CreatedDate'] = undefined;
+
+/**
+ * Delegated Approver
+ * @member {String} DelegatedApproverID
+ */
+User.prototype['DelegatedApproverID'] = undefined;
+
+/**
+ * Department
+ * @member {String} Department
+ */
+User.prototype['Department'] = undefined;
+
+/**
+ * Division
+ * @member {String} Division
+ */
+User.prototype['Division'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+User.prototype['Email'] = undefined;
+
+/**
+ * Employee Number
+ * @member {String} EmployeeNumber
+ */
+User.prototype['EmployeeNumber'] = undefined;
+
+/**
+ * Time day ends
+ * @member {String} EndOfDay
+ */
+User.prototype['EndOfDay'] = undefined;
+
+/**
+ * Environment
+ * @member {String} Environment
+ */
+User.prototype['Environment'] = undefined;
+
+/**
+ * Extension
+ * @member {String} Extension
+ */
+User.prototype['Extension'] = undefined;
+
+/**
+ * Fabric API Key
+ * @member {String} FabricAPIKey
+ */
+User.prototype['FabricAPIKey'] = undefined;
+
+/**
+ * Fax
+ * @member {String} Fax
+ */
+User.prototype['Fax'] = undefined;
+
+/**
+ * The first name
+ * @member {String} FirstName
+ */
+User.prototype['FirstName'] = undefined;
+
+/**
+ * Allow Forecasting
+ * @member {Boolean} ForecastEnabled
+ */
+User.prototype['ForecastEnabled'] = undefined;
+
+/**
+ * Full Photo URL
+ * @member {String} FullPhotoURL
+ */
+User.prototype['FullPhotoURL'] = undefined;
+
+/**
+ * Taxnexus ID
+ * @member {String} ID
+ */
+User.prototype['ID'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} IsActive
+ */
+User.prototype['IsActive'] = undefined;
+
+/**
+ * Is the user enabled for Communities?
+ * @member {Boolean} IsPortalEnabled
+ */
+User.prototype['IsPortalEnabled'] = undefined;
+
+/**
+ * Has Profile Photo
+ * @member {Boolean} IsProphilePhotoActive
+ */
+User.prototype['IsProphilePhotoActive'] = undefined;
+
+/**
+ * @member {Boolean} IsSystemControlled
+ */
+User.prototype['IsSystemControlled'] = undefined;
+
+/**
+ * Last Modified User ID
+ * @member {String} LastModifiedByID
+ */
+User.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+User.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Last login time
+ * @member {String} LastLogin
+ */
+User.prototype['LastLogin'] = undefined;
+
+/**
+ * IP address of last login
+ * @member {String} LastIP
+ */
+User.prototype['LastIP'] = undefined;
+
+/**
+ * Number of times user has logged in
+ * @member {Number} LoginCount
+ */
+User.prototype['LoginCount'] = undefined;
+
+/**
+ * The Last Name
+ * @member {String} LastName
+ */
+User.prototype['LastName'] = undefined;
+
+/**
+ * Manager
+ * @member {String} ManagerID
+ */
+User.prototype['ManagerID'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} MobilePhone
+ */
+User.prototype['MobilePhone'] = undefined;
+
+/**
+ * Name
+ * @member {String} Name
+ */
+User.prototype['Name'] = undefined;
+
+/**
+ * Out of office message
+ * @member {String} OutOfOfficeMessage
+ */
+User.prototype['OutOfOfficeMessage'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+User.prototype['Phone'] = undefined;
+
+/**
+ * Portal Role Level
+ * @member {String} PortalRole
+ */
+User.prototype['PortalRole'] = undefined;
+
+/**
+ * Profile
+ * @member {String} ProfileID
+ */
+User.prototype['ProfileID'] = undefined;
+
+/**
+ * Admin Info Emails
+ * @member {Boolean} ReceivesAdminInfoEmails
+ */
+User.prototype['ReceivesAdminInfoEmails'] = undefined;
+
+/**
+ * Info Emails
+ * @member {Boolean} ReceivesAdminEmails
+ */
+User.prototype['ReceivesAdminEmails'] = undefined;
+
+/**
+ * Email Sender Address
+ * @member {String} SenderEmail
+ */
+User.prototype['SenderEmail'] = undefined;
+
+/**
+ * Email Sender Name
+ * @member {String} SenderName
+ */
+User.prototype['SenderName'] = undefined;
+
+/**
+ * Email Signature
+ * @member {String} Signature
+ */
+User.prototype['Signature'] = undefined;
+
+/**
+ * Small Photo URL
+ * @member {String} SmallPhotoURL
+ */
+User.prototype['SmallPhotoURL'] = undefined;
+
+/**
+ * The time day starts
+ * @member {String} StartOfDay
+ */
+User.prototype['StartOfDay'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+User.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant ID associated with this user
+ * @member {String} TenantID
+ */
+User.prototype['TenantID'] = undefined;
+
+/**
+ * Time Zone
+ * @member {String} TimeZone
+ */
+User.prototype['TimeZone'] = undefined;
+
+/**
+ * Title
+ * @member {String} Title
+ */
+User.prototype['Title'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+User.prototype['Username'] = undefined;
+
+/**
+ * Role
+ * @member {String} UserRoleID
+ */
+User.prototype['UserRoleID'] = undefined;
+
+/**
+ * User Type
+ * @member {String} UserType
+ */
+User.prototype['UserType'] = undefined;
+
+/**
+ * @member {Array.UserResponse
.
+ * An array Taxnexus user objects
+ * @alias module:model/UserResponse
+ */
+ constructor() {
+
+ UserResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserResponse} obj Optional instance to populate.
+ * @return {module:model/UserResponse} The populated UserResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [User]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.UserRole
.
+ * Relationship object that connects user to a role
+ * @alias module:model/UserRole
+ */
+ constructor() {
+
+ UserRole.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserRole
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserRole} obj Optional instance to populate.
+ * @return {module:model/UserRole} The populated UserRole
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserRole();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0RoleID')) {
+ obj['Auth0RoleID'] = ApiClient.convertToType(data['Auth0RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleDescription')) {
+ obj['RoleDescription'] = ApiClient.convertToType(data['RoleDescription'], 'String');
+ }
+ if (data.hasOwnProperty('RoleID')) {
+ obj['RoleID'] = ApiClient.convertToType(data['RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleName')) {
+ obj['RoleName'] = ApiClient.convertToType(data['RoleName'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account Id
+ * @member {String} AccountID
+ */
+UserRole.prototype['AccountID'] = undefined;
+
+/**
+ * Linked role ID
+ * @member {String} Auth0RoleID
+ */
+UserRole.prototype['Auth0RoleID'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+UserRole.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+UserRole.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+UserRole.prototype['ContactID'] = undefined;
+
+/**
+ * Role description
+ * @member {String} RoleDescription
+ */
+UserRole.prototype['RoleDescription'] = undefined;
+
+/**
+ * The Role ID
+ * @member {String} RoleID
+ */
+UserRole.prototype['RoleID'] = undefined;
+
+/**
+ * Role Name
+ * @member {String} RoleName
+ */
+UserRole.prototype['RoleName'] = undefined;
+
+/**
+ * Taxnexus Account Number
+ * @member {String} TaxnexusAccount
+ */
+UserRole.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+UserRole.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+UserRole.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+UserRole.prototype['UserID'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+UserRole.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default UserRole;
+
diff --git a/client/auth/test/api/UserApi.spec.js b/client/auth/test/api/UserApi.spec.js
new file mode 100644
index 0000000..53d06a6
--- /dev/null
+++ b/client/auth/test/api/UserApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.UserApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserApi', function() {
+ describe('getUsers', function() {
+ it('should call getUsers successfully', function(done) {
+ //uncomment below and update the code to test getUsers
+ //instance.getUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/auth/test/model/Address.spec.js b/client/auth/test/model/Address.spec.js
new file mode 100644
index 0000000..497fcbe
--- /dev/null
+++ b/client/auth/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new Auth.Address();
+ //expect(instance).to.be.a(Auth.Address);
+ });
+
+ it('should have the property city (base name: "City")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "Country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countryCode (base name: "CountryCode")', function() {
+ // uncomment below and update the code to test the property countryCode
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalCode (base name: "PostalCode")', function() {
+ // uncomment below and update the code to test the property postalCode
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "State")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stateCode (base name: "StateCode")', function() {
+ // uncomment below and update the code to test the property stateCode
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "Street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new Auth.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/Error.spec.js b/client/auth/test/model/Error.spec.js
new file mode 100644
index 0000000..6b9aabb
--- /dev/null
+++ b/client/auth/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Auth.Error();
+ //expect(instance).to.be.a(Auth.Error);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Auth.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Auth.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Auth.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/ResponseMeta.spec.js b/client/auth/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..222427d
--- /dev/null
+++ b/client/auth/test/model/ResponseMeta.spec.js
@@ -0,0 +1,125 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be.a(Auth.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Auth.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/TenantUser.spec.js b/client/auth/test/model/TenantUser.spec.js
new file mode 100644
index 0000000..ff2adf8
--- /dev/null
+++ b/client/auth/test/model/TenantUser.spec.js
@@ -0,0 +1,155 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.TenantUser();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantUser', function() {
+ it('should create an instance of TenantUser', function() {
+ // uncomment below and update the code to test TenantUser
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be.a(Auth.TenantUser);
+ });
+
+ it('should have the property accessLevel (base name: "AccessLevel")', function() {
+ // uncomment below and update the code to test the property accessLevel
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantActive (base name: "TenantActive")', function() {
+ // uncomment below and update the code to test the property tenantActive
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantName (base name: "TenantName")', function() {
+ // uncomment below and update the code to test the property tenantName
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantStatus (base name: "TenantStatus")', function() {
+ // uncomment below and update the code to test the property tenantStatus
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantType (base name: "TenantType")', function() {
+ // uncomment below and update the code to test the property tenantType
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantVersion (base name: "TenantVersion")', function() {
+ // uncomment below and update the code to test the property tenantVersion
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Auth.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/User.spec.js b/client/auth/test/model/User.spec.js
new file mode 100644
index 0000000..3b2ba4c
--- /dev/null
+++ b/client/auth/test/model/User.spec.js
@@ -0,0 +1,407 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.User();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('User', function() {
+ it('should create an instance of User', function() {
+ // uncomment below and update the code to test User
+ //var instance = new Auth.User();
+ //expect(instance).to.be.a(Auth.User);
+ });
+
+ it('should have the property aboutMe (base name: "AboutMe")', function() {
+ // uncomment below and update the code to test the property aboutMe
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property alias (base name: "Alias")', function() {
+ // uncomment below and update the code to test the property alias
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property aPIKey (base name: "APIKey")', function() {
+ // uncomment below and update the code to test the property aPIKey
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property communityNickname (base name: "CommunityNickname")', function() {
+ // uncomment below and update the code to test the property communityNickname
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property delegatedApproverID (base name: "DelegatedApproverID")', function() {
+ // uncomment below and update the code to test the property delegatedApproverID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "Department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property division (base name: "Division")', function() {
+ // uncomment below and update the code to test the property division
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property employeeNumber (base name: "EmployeeNumber")', function() {
+ // uncomment below and update the code to test the property employeeNumber
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endOfDay (base name: "EndOfDay")', function() {
+ // uncomment below and update the code to test the property endOfDay
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "Environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property extension (base name: "Extension")', function() {
+ // uncomment below and update the code to test the property extension
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fabricAPIKey (base name: "FabricAPIKey")', function() {
+ // uncomment below and update the code to test the property fabricAPIKey
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property forecastEnabled (base name: "ForecastEnabled")', function() {
+ // uncomment below and update the code to test the property forecastEnabled
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fullPhotoURL (base name: "FullPhotoURL")', function() {
+ // uncomment below and update the code to test the property fullPhotoURL
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isActive (base name: "IsActive")', function() {
+ // uncomment below and update the code to test the property isActive
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isPortalEnabled (base name: "IsPortalEnabled")', function() {
+ // uncomment below and update the code to test the property isPortalEnabled
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isProphilePhotoActive (base name: "IsProphilePhotoActive")', function() {
+ // uncomment below and update the code to test the property isProphilePhotoActive
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isSystemControlled (base name: "IsSystemControlled")', function() {
+ // uncomment below and update the code to test the property isSystemControlled
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastLogin (base name: "LastLogin")', function() {
+ // uncomment below and update the code to test the property lastLogin
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastIP (base name: "LastIP")', function() {
+ // uncomment below and update the code to test the property lastIP
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property loginCount (base name: "LoginCount")', function() {
+ // uncomment below and update the code to test the property loginCount
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property managerID (base name: "ManagerID")', function() {
+ // uncomment below and update the code to test the property managerID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property outOfOfficeMessage (base name: "OutOfOfficeMessage")', function() {
+ // uncomment below and update the code to test the property outOfOfficeMessage
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property portalRole (base name: "PortalRole")', function() {
+ // uncomment below and update the code to test the property portalRole
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property profileID (base name: "ProfileID")', function() {
+ // uncomment below and update the code to test the property profileID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminInfoEmails (base name: "ReceivesAdminInfoEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminInfoEmails
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminEmails (base name: "ReceivesAdminEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminEmails
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderEmail (base name: "SenderEmail")', function() {
+ // uncomment below and update the code to test the property senderEmail
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderName (base name: "SenderName")', function() {
+ // uncomment below and update the code to test the property senderName
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property signature (base name: "Signature")', function() {
+ // uncomment below and update the code to test the property signature
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property smallPhotoURL (base name: "SmallPhotoURL")', function() {
+ // uncomment below and update the code to test the property smallPhotoURL
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startOfDay (base name: "StartOfDay")', function() {
+ // uncomment below and update the code to test the property startOfDay
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property timeZone (base name: "TimeZone")', function() {
+ // uncomment below and update the code to test the property timeZone
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoleID (base name: "UserRoleID")', function() {
+ // uncomment below and update the code to test the property userRoleID
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userType (base name: "UserType")', function() {
+ // uncomment below and update the code to test the property userType
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoles (base name: "UserRoles")', function() {
+ // uncomment below and update the code to test the property userRoles
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantUsers (base name: "TenantUsers")', function() {
+ // uncomment below and update the code to test the property tenantUsers
+ //var instance = new Auth.User();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/UserResponse.spec.js b/client/auth/test/model/UserResponse.spec.js
new file mode 100644
index 0000000..cdf9314
--- /dev/null
+++ b/client/auth/test/model/UserResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.UserResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserResponse', function() {
+ it('should create an instance of UserResponse', function() {
+ // uncomment below and update the code to test UserResponse
+ //var instance = new Auth.UserResponse();
+ //expect(instance).to.be.a(Auth.UserResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Auth.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Auth.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/auth/test/model/UserRole.spec.js b/client/auth/test/model/UserRole.spec.js
new file mode 100644
index 0000000..1f2ea32
--- /dev/null
+++ b/client/auth/test/model/UserRole.spec.js
@@ -0,0 +1,137 @@
+/**
+ * auth
+ * Authentication Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Auth);
+ }
+}(this, function(expect, Auth) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Auth.UserRole();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserRole', function() {
+ it('should create an instance of UserRole', function() {
+ // uncomment below and update the code to test UserRole
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be.a(Auth.UserRole);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0RoleID (base name: "Auth0RoleID")', function() {
+ // uncomment below and update the code to test the property auth0RoleID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleDescription (base name: "RoleDescription")', function() {
+ // uncomment below and update the code to test the property roleDescription
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleID (base name: "RoleID")', function() {
+ // uncomment below and update the code to test the property roleID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleName (base name: "RoleName")', function() {
+ // uncomment below and update the code to test the property roleName
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Auth.UserRole();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/.babelrc b/client/board/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/board/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/board/.gitignore b/client/board/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/board/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/board/.openapi-generator-ignore b/client/board/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/board/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/board/.openapi-generator/FILES b/client/board/.openapi-generator/FILES
new file mode 100644
index 0000000..22555e5
--- /dev/null
+++ b/client/board/.openapi-generator/FILES
@@ -0,0 +1,76 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Account.md
+docs/Address.md
+docs/Contact.md
+docs/CorsApi.md
+docs/Database.md
+docs/Developer.md
+docs/DevelopersApi.md
+docs/Error.md
+docs/IQ.md
+docs/IqApi.md
+docs/Lead.md
+docs/LeadsApi.md
+docs/PaymentMethod.md
+docs/Role.md
+docs/RuleExecution.md
+docs/Tenant.md
+docs/TenantUser.md
+docs/User.md
+docs/UserAuth.md
+docs/UserAuthApi.md
+docs/UserRole.md
+docs/UsersApi.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/CorsApi.js
+src/api/DevelopersApi.js
+src/api/IqApi.js
+src/api/LeadsApi.js
+src/api/UserAuthApi.js
+src/api/UsersApi.js
+src/index.js
+src/model/Account.js
+src/model/Address.js
+src/model/Contact.js
+src/model/Database.js
+src/model/Developer.js
+src/model/Error.js
+src/model/IQ.js
+src/model/Lead.js
+src/model/PaymentMethod.js
+src/model/Role.js
+src/model/RuleExecution.js
+src/model/Tenant.js
+src/model/TenantUser.js
+src/model/User.js
+src/model/UserAuth.js
+src/model/UserRole.js
+test/api/CorsApi.spec.js
+test/api/DevelopersApi.spec.js
+test/api/IqApi.spec.js
+test/api/LeadsApi.spec.js
+test/api/UserAuthApi.spec.js
+test/api/UsersApi.spec.js
+test/model/Account.spec.js
+test/model/Address.spec.js
+test/model/Contact.spec.js
+test/model/Database.spec.js
+test/model/Developer.spec.js
+test/model/Error.spec.js
+test/model/IQ.spec.js
+test/model/Lead.spec.js
+test/model/PaymentMethod.spec.js
+test/model/Role.spec.js
+test/model/RuleExecution.spec.js
+test/model/Tenant.spec.js
+test/model/TenantUser.spec.js
+test/model/User.spec.js
+test/model/UserAuth.spec.js
+test/model/UserRole.spec.js
diff --git a/client/board/.openapi-generator/VERSION b/client/board/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/board/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/board/.travis.yml b/client/board/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/board/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/board/README.md b/client/board/README.md
new file mode 100644
index 0000000..907f29a
--- /dev/null
+++ b/client/board/README.md
@@ -0,0 +1,165 @@
+# board
+
+Board - JavaScript client for board
+Taxnexus Onboarding Service
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install board --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your board from, and run:
+
+```shell
+npm link /path/to/param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://board.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/board/src/api/CorsApi.js b/client/board/src/api/CorsApi.js
new file mode 100644
index 0000000..5704843
--- /dev/null
+++ b/client/board/src/api/CorsApi.js
@@ -0,0 +1,212 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+
+/**
+* Cors service.
+* @module api/CorsApi
+* @version 0.0.2
+*/
+export default class CorsApi {
+
+ /**
+ * Constructs a new CorsApi.
+ * @alias module:api/CorsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the developerOptions operation.
+ * @callback module:api/CorsApi~developerOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~developerOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ developerOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/developers', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the iqOptions operation.
+ * @callback module:api/CorsApi~iqOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~iqOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ iqOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/iqs', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the leadsOptions operation.
+ * @callback module:api/CorsApi~leadsOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~leadsOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ leadsOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/leads', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the userAuthOptions operation.
+ * @callback module:api/CorsApi~userAuthOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~userAuthOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ userAuthOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/userauths', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the userOptions operation.
+ * @callback module:api/CorsApi~userOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~userOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ userOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/users', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/api/DevelopersApi.js b/client/board/src/api/DevelopersApi.js
new file mode 100644
index 0000000..a7e89e7
--- /dev/null
+++ b/client/board/src/api/DevelopersApi.js
@@ -0,0 +1,82 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Developer from '../model/Developer';
+import Error from '../model/Error';
+import RuleExecution from '../model/RuleExecution';
+
+/**
+* Developers service.
+* @module api/DevelopersApi
+* @version 0.0.2
+*/
+export default class DevelopersApi {
+
+ /**
+ * Constructs a new DevelopersApi.
+ * @alias module:api/DevelopersApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the postDevelopers operation.
+ * @callback module:api/DevelopersApi~postDevelopersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/RuleExecution} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Onboard new developer
+ * Register new developers with POST
+ * @param {module:model/Developer} developerRequest A single Developer struct for onboarding
+ * @param {module:api/DevelopersApi~postDevelopersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/RuleExecution}
+ */
+ postDevelopers(developerRequest, callback) {
+ let postBody = developerRequest;
+ // verify the required parameter 'developerRequest' is set
+ if (developerRequest === undefined || developerRequest === null) {
+ throw new Error("Missing the required parameter 'developerRequest' when calling postDevelopers");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = RuleExecution;
+ return this.apiClient.callApi(
+ '/developers', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/api/IqApi.js b/client/board/src/api/IqApi.js
new file mode 100644
index 0000000..6814fc3
--- /dev/null
+++ b/client/board/src/api/IqApi.js
@@ -0,0 +1,82 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import IQ from '../model/IQ';
+import RuleExecution from '../model/RuleExecution';
+
+/**
+* Iq service.
+* @module api/IqApi
+* @version 0.0.2
+*/
+export default class IqApi {
+
+ /**
+ * Constructs a new IqApi.
+ * @alias module:api/IqApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the postIQ operation.
+ * @callback module:api/IqApi~postIQCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/RuleExecution} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Onboard new new Taxnexus IQ Customer
+ * Register new Taxnexus IQ Customer with POST
+ * @param {module:model/IQ} iqRequest A single Taxnexus IQ Customer struct for onboarding
+ * @param {module:api/IqApi~postIQCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/RuleExecution}
+ */
+ postIQ(iqRequest, callback) {
+ let postBody = iqRequest;
+ // verify the required parameter 'iqRequest' is set
+ if (iqRequest === undefined || iqRequest === null) {
+ throw new Error("Missing the required parameter 'iqRequest' when calling postIQ");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = RuleExecution;
+ return this.apiClient.callApi(
+ '/iqs', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/api/LeadsApi.js b/client/board/src/api/LeadsApi.js
new file mode 100644
index 0000000..848ea39
--- /dev/null
+++ b/client/board/src/api/LeadsApi.js
@@ -0,0 +1,124 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import Lead from '../model/Lead';
+import RuleExecution from '../model/RuleExecution';
+
+/**
+* Leads service.
+* @module api/LeadsApi
+* @version 0.0.2
+*/
+export default class LeadsApi {
+
+ /**
+ * Constructs a new LeadsApi.
+ * @alias module:api/LeadsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the postLeads operation.
+ * @callback module:api/LeadsApi~postLeadsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/RuleExecution} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new Lead record
+ * Add a new full Lead Record
+ * @param {module:model/Lead} leadRequest A new Lead record as a single JSON object
+ * @param {module:api/LeadsApi~postLeadsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/RuleExecution}
+ */
+ postLeads(leadRequest, callback) {
+ let postBody = leadRequest;
+ // verify the required parameter 'leadRequest' is set
+ if (leadRequest === undefined || leadRequest === null) {
+ throw new Error("Missing the required parameter 'leadRequest' when calling postLeads");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = RuleExecution;
+ return this.apiClient.callApi(
+ '/leads', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putLeads operation.
+ * @callback module:api/LeadsApi~putLeadsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/RuleExecution} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Leads
+ * Update Lead records
+ * @param {module:model/Lead} leadRequest A new Lead record as a single JSON object
+ * @param {module:api/LeadsApi~putLeadsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/RuleExecution}
+ */
+ putLeads(leadRequest, callback) {
+ let postBody = leadRequest;
+ // verify the required parameter 'leadRequest' is set
+ if (leadRequest === undefined || leadRequest === null) {
+ throw new Error("Missing the required parameter 'leadRequest' when calling putLeads");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = RuleExecution;
+ return this.apiClient.callApi(
+ '/leads', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/api/UserAuthApi.js b/client/board/src/api/UserAuthApi.js
new file mode 100644
index 0000000..e875f34
--- /dev/null
+++ b/client/board/src/api/UserAuthApi.js
@@ -0,0 +1,82 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import UserAuth from '../model/UserAuth';
+
+/**
+* UserAuth service.
+* @module api/UserAuthApi
+* @version 0.0.2
+*/
+export default class UserAuthApi {
+
+ /**
+ * Constructs a new UserAuthApi.
+ * @alias module:api/UserAuthApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getUserAuth operation.
+ * @callback module:api/UserAuthApi~getUserAuthCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserAuth} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single UserAuth object
+ * Return a single UserAuth object from datastore as a Singleton
+ * @param {String} usernamePath Username in the query path
+ * @param {module:api/UserAuthApi~getUserAuthCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserAuth}
+ */
+ getUserAuth(usernamePath, callback) {
+ let postBody = null;
+ // verify the required parameter 'usernamePath' is set
+ if (usernamePath === undefined || usernamePath === null) {
+ throw new Error("Missing the required parameter 'usernamePath' when calling getUserAuth");
+ }
+
+ let pathParams = {
+ 'usernamePath': usernamePath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = UserAuth;
+ return this.apiClient.callApi(
+ '/userauths/{usernamePath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/api/UsersApi.js b/client/board/src/api/UsersApi.js
new file mode 100644
index 0000000..1f4a83e
--- /dev/null
+++ b/client/board/src/api/UsersApi.js
@@ -0,0 +1,81 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import User from '../model/User';
+
+/**
+* Users service.
+* @module api/UsersApi
+* @version 0.0.2
+*/
+export default class UsersApi {
+
+ /**
+ * Constructs a new UsersApi.
+ * @alias module:api/UsersApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getUsers operation.
+ * @callback module:api/UsersApi~getUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/User} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a clean user record
+ * @param {String} email Email address
+ * @param {module:api/UsersApi~getUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/User}
+ */
+ getUsers(email, callback) {
+ let postBody = null;
+ // verify the required parameter 'email' is set
+ if (email === undefined || email === null) {
+ throw new Error("Missing the required parameter 'email' when calling getUsers");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'email': email
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = User;
+ return this.apiClient.callApi(
+ '/users', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/board/src/index.js b/client/board/src/index.js
new file mode 100644
index 0000000..7e76aa9
--- /dev/null
+++ b/client/board/src/index.js
@@ -0,0 +1,209 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Account from './model/Account';
+import Address from './model/Address';
+import Contact from './model/Contact';
+import Database from './model/Database';
+import Developer from './model/Developer';
+import Error from './model/Error';
+import IQ from './model/IQ';
+import Lead from './model/Lead';
+import PaymentMethod from './model/PaymentMethod';
+import Role from './model/Role';
+import RuleExecution from './model/RuleExecution';
+import Tenant from './model/Tenant';
+import TenantUser from './model/TenantUser';
+import User from './model/User';
+import UserAuth from './model/UserAuth';
+import UserRole from './model/UserRole';
+import CorsApi from './api/CorsApi';
+import DevelopersApi from './api/DevelopersApi';
+import IqApi from './api/IqApi';
+import LeadsApi from './api/LeadsApi';
+import UserAuthApi from './api/UserAuthApi';
+import UsersApi from './api/UsersApi';
+
+
+/**
+* Taxnexus_Onboarding_Service.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var Board = require('index'); // See note below*.
+* var xxxSvc = new Board.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Board.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new Board.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new Board.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Account model constructor.
+ * @property {module:model/Account}
+ */
+ Account,
+
+ /**
+ * The Address model constructor.
+ * @property {module:model/Address}
+ */
+ Address,
+
+ /**
+ * The Contact model constructor.
+ * @property {module:model/Contact}
+ */
+ Contact,
+
+ /**
+ * The Database model constructor.
+ * @property {module:model/Database}
+ */
+ Database,
+
+ /**
+ * The Developer model constructor.
+ * @property {module:model/Developer}
+ */
+ Developer,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The IQ model constructor.
+ * @property {module:model/IQ}
+ */
+ IQ,
+
+ /**
+ * The Lead model constructor.
+ * @property {module:model/Lead}
+ */
+ Lead,
+
+ /**
+ * The PaymentMethod model constructor.
+ * @property {module:model/PaymentMethod}
+ */
+ PaymentMethod,
+
+ /**
+ * The Role model constructor.
+ * @property {module:model/Role}
+ */
+ Role,
+
+ /**
+ * The RuleExecution model constructor.
+ * @property {module:model/RuleExecution}
+ */
+ RuleExecution,
+
+ /**
+ * The Tenant model constructor.
+ * @property {module:model/Tenant}
+ */
+ Tenant,
+
+ /**
+ * The TenantUser model constructor.
+ * @property {module:model/TenantUser}
+ */
+ TenantUser,
+
+ /**
+ * The User model constructor.
+ * @property {module:model/User}
+ */
+ User,
+
+ /**
+ * The UserAuth model constructor.
+ * @property {module:model/UserAuth}
+ */
+ UserAuth,
+
+ /**
+ * The UserRole model constructor.
+ * @property {module:model/UserRole}
+ */
+ UserRole,
+
+ /**
+ * The CorsApi service constructor.
+ * @property {module:api/CorsApi}
+ */
+ CorsApi,
+
+ /**
+ * The DevelopersApi service constructor.
+ * @property {module:api/DevelopersApi}
+ */
+ DevelopersApi,
+
+ /**
+ * The IqApi service constructor.
+ * @property {module:api/IqApi}
+ */
+ IqApi,
+
+ /**
+ * The LeadsApi service constructor.
+ * @property {module:api/LeadsApi}
+ */
+ LeadsApi,
+
+ /**
+ * The UserAuthApi service constructor.
+ * @property {module:api/UserAuthApi}
+ */
+ UserAuthApi,
+
+ /**
+ * The UsersApi service constructor.
+ * @property {module:api/UsersApi}
+ */
+ UsersApi
+};
diff --git a/client/board/src/model/Account.js b/client/board/src/model/Account.js
new file mode 100644
index 0000000..17f0522
--- /dev/null
+++ b/client/board/src/model/Account.js
@@ -0,0 +1,843 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Account model module.
+ * @module model/Account
+ * @version 0.0.2
+ */
+class Account {
+ /**
+ * Constructs a new Account
.
+ * @alias module:model/Account
+ */
+ constructor() {
+
+ Account.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Account
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Account} obj Optional instance to populate.
+ * @return {module:model/Account} The populated Account
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Account();
+
+ if (data.hasOwnProperty('AccountNumber')) {
+ obj['AccountNumber'] = ApiClient.convertToType(data['AccountNumber'], 'String');
+ }
+ if (data.hasOwnProperty('AccountSource')) {
+ obj['AccountSource'] = ApiClient.convertToType(data['AccountSource'], 'String');
+ }
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('AdministrativeLevel')) {
+ obj['AdministrativeLevel'] = ApiClient.convertToType(data['AdministrativeLevel'], 'String');
+ }
+ if (data.hasOwnProperty('Amount')) {
+ obj['Amount'] = ApiClient.convertToType(data['Amount'], 'Number');
+ }
+ if (data.hasOwnProperty('AmountInvoiced')) {
+ obj['AmountInvoiced'] = ApiClient.convertToType(data['AmountInvoiced'], 'Number');
+ }
+ if (data.hasOwnProperty('AmountPaid')) {
+ obj['AmountPaid'] = ApiClient.convertToType(data['AmountPaid'], 'Number');
+ }
+ if (data.hasOwnProperty('AnnualRevenue')) {
+ obj['AnnualRevenue'] = ApiClient.convertToType(data['AnnualRevenue'], 'Number');
+ }
+ if (data.hasOwnProperty('Balance')) {
+ obj['Balance'] = ApiClient.convertToType(data['Balance'], 'Number');
+ }
+ if (data.hasOwnProperty('BillingAddress')) {
+ obj['BillingAddress'] = Address.constructFromObject(data['BillingAddress']);
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('BillingPreference')) {
+ obj['BillingPreference'] = ApiClient.convertToType(data['BillingPreference'], 'String');
+ }
+ if (data.hasOwnProperty('BusinessAddress')) {
+ obj['BusinessAddress'] = Address.constructFromObject(data['BusinessAddress']);
+ }
+ if (data.hasOwnProperty('CannabisCustomer')) {
+ obj['CannabisCustomer'] = ApiClient.convertToType(data['CannabisCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ChannelProgramLevelName')) {
+ obj['ChannelProgramLevelName'] = ApiClient.convertToType(data['ChannelProgramLevelName'], 'String');
+ }
+ if (data.hasOwnProperty('ChannelProgramName')) {
+ obj['ChannelProgramName'] = ApiClient.convertToType(data['ChannelProgramName'], 'String');
+ }
+ if (data.hasOwnProperty('ClientEndDate')) {
+ obj['ClientEndDate'] = ApiClient.convertToType(data['ClientEndDate'], 'String');
+ }
+ if (data.hasOwnProperty('ClientStartDate')) {
+ obj['ClientStartDate'] = ApiClient.convertToType(data['ClientStartDate'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('CoordinateID')) {
+ obj['CoordinateID'] = ApiClient.convertToType(data['CoordinateID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerID')) {
+ obj['CustomerID'] = ApiClient.convertToType(data['CustomerID'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerPriority')) {
+ obj['CustomerPriority'] = ApiClient.convertToType(data['CustomerPriority'], 'String');
+ }
+ if (data.hasOwnProperty('DBA')) {
+ obj['DBA'] = ApiClient.convertToType(data['DBA'], 'String');
+ }
+ if (data.hasOwnProperty('DUNSNumber')) {
+ obj['DUNSNumber'] = ApiClient.convertToType(data['DUNSNumber'], 'String');
+ }
+ if (data.hasOwnProperty('DandBCompanyID')) {
+ obj['DandBCompanyID'] = ApiClient.convertToType(data['DandBCompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultAddress')) {
+ obj['DefaultAddress'] = Address.constructFromObject(data['DefaultAddress']);
+ }
+ if (data.hasOwnProperty('DefaultBackendID')) {
+ obj['DefaultBackendID'] = ApiClient.convertToType(data['DefaultBackendID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultDeliveryContactID')) {
+ obj['DefaultDeliveryContactID'] = ApiClient.convertToType(data['DefaultDeliveryContactID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultEndUserID')) {
+ obj['DefaultEndUserID'] = ApiClient.convertToType(data['DefaultEndUserID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('EIN')) {
+ obj['EIN'] = ApiClient.convertToType(data['EIN'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EnrollmentStatus')) {
+ obj['EnrollmentStatus'] = ApiClient.convertToType(data['EnrollmentStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('ISPCustomer')) {
+ obj['ISPCustomer'] = ApiClient.convertToType(data['ISPCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('Industry')) {
+ obj['Industry'] = ApiClient.convertToType(data['Industry'], 'String');
+ }
+ if (data.hasOwnProperty('IsCustomerPortal')) {
+ obj['IsCustomerPortal'] = ApiClient.convertToType(data['IsCustomerPortal'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsPartner')) {
+ obj['IsPartner'] = ApiClient.convertToType(data['IsPartner'], 'Boolean');
+ }
+ if (data.hasOwnProperty('JigSaw')) {
+ obj['JigSaw'] = ApiClient.convertToType(data['JigSaw'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('MSPCustomer')) {
+ obj['MSPCustomer'] = ApiClient.convertToType(data['MSPCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('NAICSCode')) {
+ obj['NAICSCode'] = ApiClient.convertToType(data['NAICSCode'], 'String');
+ }
+ if (data.hasOwnProperty('NAICSDesc')) {
+ obj['NAICSDesc'] = ApiClient.convertToType(data['NAICSDesc'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('NumberOfEmployees')) {
+ obj['NumberOfEmployees'] = ApiClient.convertToType(data['NumberOfEmployees'], 'Number');
+ }
+ if (data.hasOwnProperty('NumberOfLocations')) {
+ obj['NumberOfLocations'] = ApiClient.convertToType(data['NumberOfLocations'], 'Number');
+ }
+ if (data.hasOwnProperty('OpenCharges')) {
+ obj['OpenCharges'] = ApiClient.convertToType(data['OpenCharges'], 'Number');
+ }
+ if (data.hasOwnProperty('OrderContactID')) {
+ obj['OrderContactID'] = ApiClient.convertToType(data['OrderContactID'], 'String');
+ }
+ if (data.hasOwnProperty('OrderEmail')) {
+ obj['OrderEmail'] = ApiClient.convertToType(data['OrderEmail'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('Ownership')) {
+ obj['Ownership'] = ApiClient.convertToType(data['Ownership'], 'String');
+ }
+ if (data.hasOwnProperty('ParentFK')) {
+ obj['ParentFK'] = ApiClient.convertToType(data['ParentFK'], 'String');
+ }
+ if (data.hasOwnProperty('ParentID')) {
+ obj['ParentID'] = ApiClient.convertToType(data['ParentID'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PlaceID')) {
+ obj['PlaceID'] = ApiClient.convertToType(data['PlaceID'], 'String');
+ }
+ if (data.hasOwnProperty('PreparerID')) {
+ obj['PreparerID'] = ApiClient.convertToType(data['PreparerID'], 'String');
+ }
+ if (data.hasOwnProperty('Rating')) {
+ obj['Rating'] = ApiClient.convertToType(data['Rating'], 'String');
+ }
+ if (data.hasOwnProperty('RatingEngineID')) {
+ obj['RatingEngineID'] = ApiClient.convertToType(data['RatingEngineID'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('RevenueBase')) {
+ obj['RevenueBase'] = ApiClient.convertToType(data['RevenueBase'], 'Number');
+ }
+ if (data.hasOwnProperty('RevenueNet')) {
+ obj['RevenueNet'] = ApiClient.convertToType(data['RevenueNet'], 'Number');
+ }
+ if (data.hasOwnProperty('RevenueNotTaxable')) {
+ obj['RevenueNotTaxable'] = ApiClient.convertToType(data['RevenueNotTaxable'], 'Number');
+ }
+ if (data.hasOwnProperty('SIC')) {
+ obj['SIC'] = ApiClient.convertToType(data['SIC'], 'String');
+ }
+ if (data.hasOwnProperty('SICDesc')) {
+ obj['SICDesc'] = ApiClient.convertToType(data['SICDesc'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingAddress')) {
+ obj['ShippingAddress'] = Address.constructFromObject(data['ShippingAddress']);
+ }
+ if (data.hasOwnProperty('ShippingCensusTract')) {
+ obj['ShippingCensusTract'] = ApiClient.convertToType(data['ShippingCensusTract'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingConactID')) {
+ obj['ShippingConactID'] = ApiClient.convertToType(data['ShippingConactID'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingCounty')) {
+ obj['ShippingCounty'] = ApiClient.convertToType(data['ShippingCounty'], 'String');
+ }
+ if (data.hasOwnProperty('Site')) {
+ obj['Site'] = ApiClient.convertToType(data['Site'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TaxExemption')) {
+ obj['TaxExemption'] = ApiClient.convertToType(data['TaxExemption'], 'String');
+ }
+ if (data.hasOwnProperty('TaxOnTax')) {
+ obj['TaxOnTax'] = ApiClient.convertToType(data['TaxOnTax'], 'Number');
+ }
+ if (data.hasOwnProperty('TelecomCustomer')) {
+ obj['TelecomCustomer'] = ApiClient.convertToType(data['TelecomCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('TickerSymbol')) {
+ obj['TickerSymbol'] = ApiClient.convertToType(data['TickerSymbol'], 'String');
+ }
+ if (data.hasOwnProperty('TradeStyle')) {
+ obj['TradeStyle'] = ApiClient.convertToType(data['TradeStyle'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('UnappliedPayments')) {
+ obj['UnappliedPayments'] = ApiClient.convertToType(data['UnappliedPayments'], 'Number');
+ }
+ if (data.hasOwnProperty('UnitBase')) {
+ obj['UnitBase'] = ApiClient.convertToType(data['UnitBase'], 'Number');
+ }
+ if (data.hasOwnProperty('UpsellOpportunity')) {
+ obj['UpsellOpportunity'] = ApiClient.convertToType(data['UpsellOpportunity'], 'String');
+ }
+ if (data.hasOwnProperty('WHMCSClientID')) {
+ obj['WHMCSClientID'] = ApiClient.convertToType(data['WHMCSClientID'], 'Number');
+ }
+ if (data.hasOwnProperty('Website')) {
+ obj['Website'] = ApiClient.convertToType(data['Website'], 'String');
+ }
+ if (data.hasOwnProperty('XeroContactID')) {
+ obj['XeroContactID'] = ApiClient.convertToType(data['XeroContactID'], 'String');
+ }
+ if (data.hasOwnProperty('YearStarted')) {
+ obj['YearStarted'] = ApiClient.convertToType(data['YearStarted'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account Number
+ * @member {String} AccountNumber
+ */
+Account.prototype['AccountNumber'] = undefined;
+
+/**
+ * The marketing orgin of this account
+ * @member {String} AccountSource
+ */
+Account.prototype['AccountSource'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} Active
+ */
+Account.prototype['Active'] = undefined;
+
+/**
+ * For tax authorities, this account's administrative level, e.g. Local, County, State or Federal
+ * @member {String} AdministrativeLevel
+ */
+Account.prototype['AdministrativeLevel'] = undefined;
+
+/**
+ * Rollup Tax Amount
+ * @member {Number} Amount
+ */
+Account.prototype['Amount'] = undefined;
+
+/**
+ * Amount Invoiced
+ * @member {Number} AmountInvoiced
+ */
+Account.prototype['AmountInvoiced'] = undefined;
+
+/**
+ * Amount Paid
+ * @member {Number} AmountPaid
+ */
+Account.prototype['AmountPaid'] = undefined;
+
+/**
+ * Annual Revenue Estimate
+ * @member {Number} AnnualRevenue
+ */
+Account.prototype['AnnualRevenue'] = undefined;
+
+/**
+ * Account Balance
+ * @member {Number} Balance
+ */
+Account.prototype['Balance'] = undefined;
+
+/**
+ * @member {module:model/Address} BillingAddress
+ */
+Account.prototype['BillingAddress'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} BillingContactID
+ */
+Account.prototype['BillingContactID'] = undefined;
+
+/**
+ * Billing Preference
+ * @member {String} BillingPreference
+ */
+Account.prototype['BillingPreference'] = undefined;
+
+/**
+ * @member {module:model/Address} BusinessAddress
+ */
+Account.prototype['BusinessAddress'] = undefined;
+
+/**
+ * Is this a cannabis customer?
+ * @member {Boolean} CannabisCustomer
+ */
+Account.prototype['CannabisCustomer'] = undefined;
+
+/**
+ * Channel Program Level Name
+ * @member {String} ChannelProgramLevelName
+ */
+Account.prototype['ChannelProgramLevelName'] = undefined;
+
+/**
+ * Channel Program Name
+ * @member {String} ChannelProgramName
+ */
+Account.prototype['ChannelProgramName'] = undefined;
+
+/**
+ * Client End Date
+ * @member {String} ClientEndDate
+ */
+Account.prototype['ClientEndDate'] = undefined;
+
+/**
+ * Client Start Date
+ * @member {String} ClientStartDate
+ */
+Account.prototype['ClientStartDate'] = undefined;
+
+/**
+ * The Company ID of this Account
+ * @member {String} CompanyID
+ */
+Account.prototype['CompanyID'] = undefined;
+
+/**
+ * The Id of the geo coordinates of this account
+ * @member {String} CoordinateID
+ */
+Account.prototype['CoordinateID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Account.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Account.prototype['CreatedDate'] = undefined;
+
+/**
+ * Customer ID from source system
+ * @member {String} CustomerID
+ */
+Account.prototype['CustomerID'] = undefined;
+
+/**
+ * Customer Priority
+ * @member {String} CustomerPriority
+ */
+Account.prototype['CustomerPriority'] = undefined;
+
+/**
+ * This Account's 'Doing Business As' name
+ * @member {String} DBA
+ */
+Account.prototype['DBA'] = undefined;
+
+/**
+ * D-U-N-S Number
+ * @member {String} DUNSNumber
+ */
+Account.prototype['DUNSNumber'] = undefined;
+
+/**
+ * D-n-B Company
+ * @member {String} DandBCompanyID
+ */
+Account.prototype['DandBCompanyID'] = undefined;
+
+/**
+ * @member {module:model/Address} DefaultAddress
+ */
+Account.prototype['DefaultAddress'] = undefined;
+
+/**
+ * Default Backend ID
+ * @member {String} DefaultBackendID
+ */
+Account.prototype['DefaultBackendID'] = undefined;
+
+/**
+ * Default Delivery Address Contact ID
+ * @member {String} DefaultDeliveryContactID
+ */
+Account.prototype['DefaultDeliveryContactID'] = undefined;
+
+/**
+ * Default End User Contact ID
+ * @member {String} DefaultEndUserID
+ */
+Account.prototype['DefaultEndUserID'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Account.prototype['Description'] = undefined;
+
+/**
+ * EIN
+ * @member {String} EIN
+ */
+Account.prototype['EIN'] = undefined;
+
+/**
+ * Main Account Email
+ * @member {String} Email
+ */
+Account.prototype['Email'] = undefined;
+
+/**
+ * Enrollment Status
+ * @member {String} EnrollmentStatus
+ */
+Account.prototype['EnrollmentStatus'] = undefined;
+
+/**
+ * Fax
+ * @member {String} Fax
+ */
+Account.prototype['Fax'] = undefined;
+
+/**
+ * Taxnexus Account Id
+ * @member {String} ID
+ */
+Account.prototype['ID'] = undefined;
+
+/**
+ * ISP Customer?
+ * @member {Boolean} ISPCustomer
+ */
+Account.prototype['ISPCustomer'] = undefined;
+
+/**
+ * Industry
+ * @member {String} Industry
+ */
+Account.prototype['Industry'] = undefined;
+
+/**
+ * Customer Portal Account
+ * @member {Boolean} IsCustomerPortal
+ */
+Account.prototype['IsCustomerPortal'] = undefined;
+
+/**
+ * Partner Account
+ * @member {Boolean} IsPartner
+ */
+Account.prototype['IsPartner'] = undefined;
+
+/**
+ * Data.com Key
+ * @member {String} JigSaw
+ */
+Account.prototype['JigSaw'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Account.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Account.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * MSP Customer?
+ * @member {Boolean} MSPCustomer
+ */
+Account.prototype['MSPCustomer'] = undefined;
+
+/**
+ * NAICS Code
+ * @member {String} NAICSCode
+ */
+Account.prototype['NAICSCode'] = undefined;
+
+/**
+ * NAICS Description
+ * @member {String} NAICSDesc
+ */
+Account.prototype['NAICSDesc'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} Name
+ */
+Account.prototype['Name'] = undefined;
+
+/**
+ * Employee Count Estimate
+ * @member {Number} NumberOfEmployees
+ */
+Account.prototype['NumberOfEmployees'] = undefined;
+
+/**
+ * Number of Locations Estimate
+ * @member {Number} NumberOfLocations
+ */
+Account.prototype['NumberOfLocations'] = undefined;
+
+/**
+ * Open Charges
+ * @member {Number} OpenCharges
+ */
+Account.prototype['OpenCharges'] = undefined;
+
+/**
+ * Vendor Order Contact ID
+ * @member {String} OrderContactID
+ */
+Account.prototype['OrderContactID'] = undefined;
+
+/**
+ * Order Email
+ * @member {String} OrderEmail
+ */
+Account.prototype['OrderEmail'] = undefined;
+
+/**
+ * Account Owner User ID
+ * @member {String} OwnerID
+ */
+Account.prototype['OwnerID'] = undefined;
+
+/**
+ * Ownership
+ * @member {String} Ownership
+ */
+Account.prototype['Ownership'] = undefined;
+
+/**
+ * Parent Foreign Key
+ * @member {String} ParentFK
+ */
+Account.prototype['ParentFK'] = undefined;
+
+/**
+ * Parent Account
+ * @member {String} ParentID
+ */
+Account.prototype['ParentID'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+Account.prototype['Phone'] = undefined;
+
+/**
+ * The ID of the Place situs record that applies to this Account
+ * @member {String} PlaceID
+ */
+Account.prototype['PlaceID'] = undefined;
+
+/**
+ * Tax Preparer Contact ID
+ * @member {String} PreparerID
+ */
+Account.prototype['PreparerID'] = undefined;
+
+/**
+ * Rating
+ * @member {String} Rating
+ */
+Account.prototype['Rating'] = undefined;
+
+/**
+ * Rating Engine identifier
+ * @member {String} RatingEngineID
+ */
+Account.prototype['RatingEngineID'] = undefined;
+
+/**
+ * External Reference ID
+ * @member {String} Ref
+ */
+Account.prototype['Ref'] = undefined;
+
+/**
+ * Rollup Revenue Base
+ * @member {Number} RevenueBase
+ */
+Account.prototype['RevenueBase'] = undefined;
+
+/**
+ * Rollup Revenue Net
+ * @member {Number} RevenueNet
+ */
+Account.prototype['RevenueNet'] = undefined;
+
+/**
+ * Rollup Revenue Not Taxable
+ * @member {Number} RevenueNotTaxable
+ */
+Account.prototype['RevenueNotTaxable'] = undefined;
+
+/**
+ * SIC Code
+ * @member {String} SIC
+ */
+Account.prototype['SIC'] = undefined;
+
+/**
+ * SIC Description
+ * @member {String} SICDesc
+ */
+Account.prototype['SICDesc'] = undefined;
+
+/**
+ * @member {module:model/Address} ShippingAddress
+ */
+Account.prototype['ShippingAddress'] = undefined;
+
+/**
+ * Shipping Census Tract
+ * @member {String} ShippingCensusTract
+ */
+Account.prototype['ShippingCensusTract'] = undefined;
+
+/**
+ * Shipping Contact ID
+ * @member {String} ShippingConactID
+ */
+Account.prototype['ShippingConactID'] = undefined;
+
+/**
+ * Shipping County
+ * @member {String} ShippingCounty
+ */
+Account.prototype['ShippingCounty'] = undefined;
+
+/**
+ * Account Site
+ * @member {String} Site
+ */
+Account.prototype['Site'] = undefined;
+
+/**
+ * Account Status
+ * @member {String} Status
+ */
+Account.prototype['Status'] = undefined;
+
+/**
+ * Tax Exemption
+ * @member {String} TaxExemption
+ */
+Account.prototype['TaxExemption'] = undefined;
+
+/**
+ * Rollup Tax On Tax
+ * @member {Number} TaxOnTax
+ */
+Account.prototype['TaxOnTax'] = undefined;
+
+/**
+ * Telecom Customer?
+ * @member {Boolean} TelecomCustomer
+ */
+Account.prototype['TelecomCustomer'] = undefined;
+
+/**
+ * Ticker Symbol
+ * @member {String} TickerSymbol
+ */
+Account.prototype['TickerSymbol'] = undefined;
+
+/**
+ * Tradestyle
+ * @member {String} TradeStyle
+ */
+Account.prototype['TradeStyle'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Account.prototype['Type'] = undefined;
+
+/**
+ * Unapplied Payments
+ * @member {Number} UnappliedPayments
+ */
+Account.prototype['UnappliedPayments'] = undefined;
+
+/**
+ * Rollup Unit Base
+ * @member {Number} UnitBase
+ */
+Account.prototype['UnitBase'] = undefined;
+
+/**
+ * Upsell Opportunity
+ * @member {String} UpsellOpportunity
+ */
+Account.prototype['UpsellOpportunity'] = undefined;
+
+/**
+ * WHMCS Client ID
+ * @member {Number} WHMCSClientID
+ */
+Account.prototype['WHMCSClientID'] = undefined;
+
+/**
+ * Website
+ * @member {String} Website
+ */
+Account.prototype['Website'] = undefined;
+
+/**
+ * Xero Contact ID
+ * @member {String} XeroContactID
+ */
+Account.prototype['XeroContactID'] = undefined;
+
+/**
+ * Year Started
+ * @member {String} YearStarted
+ */
+Account.prototype['YearStarted'] = undefined;
+
+
+
+
+
+
+export default Account;
+
diff --git a/client/board/src/model/Address.js b/client/board/src/model/Address.js
new file mode 100644
index 0000000..b8614e3
--- /dev/null
+++ b/client/board/src/model/Address.js
@@ -0,0 +1,126 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Address model module.
+ * @module model/Address
+ * @version 0.0.2
+ */
+class Address {
+ /**
+ * Constructs a new Address
.
+ * @alias module:model/Address
+ */
+ constructor() {
+
+ Address.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('City')) {
+ obj['City'] = ApiClient.convertToType(data['City'], 'String');
+ }
+ if (data.hasOwnProperty('Country')) {
+ obj['Country'] = ApiClient.convertToType(data['Country'], 'String');
+ }
+ if (data.hasOwnProperty('CountryCode')) {
+ obj['CountryCode'] = ApiClient.convertToType(data['CountryCode'], 'String');
+ }
+ if (data.hasOwnProperty('PostalCode')) {
+ obj['PostalCode'] = ApiClient.convertToType(data['PostalCode'], 'String');
+ }
+ if (data.hasOwnProperty('State')) {
+ obj['State'] = ApiClient.convertToType(data['State'], 'String');
+ }
+ if (data.hasOwnProperty('StateCode')) {
+ obj['StateCode'] = ApiClient.convertToType(data['StateCode'], 'String');
+ }
+ if (data.hasOwnProperty('Street')) {
+ obj['Street'] = ApiClient.convertToType(data['Street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} City
+ */
+Address.prototype['City'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} Country
+ */
+Address.prototype['Country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} CountryCode
+ */
+Address.prototype['CountryCode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} PostalCode
+ */
+Address.prototype['PostalCode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} State
+ */
+Address.prototype['State'] = undefined;
+
+/**
+ * State Code
+ * @member {String} StateCode
+ */
+Address.prototype['StateCode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} Street
+ */
+Address.prototype['Street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/board/src/model/Contact.js b/client/board/src/model/Contact.js
new file mode 100644
index 0000000..43b29b0
--- /dev/null
+++ b/client/board/src/model/Contact.js
@@ -0,0 +1,467 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Contact model module.
+ * @module model/Contact
+ * @version 0.0.2
+ */
+class Contact {
+ /**
+ * Constructs a new Contact
.
+ * @alias module:model/Contact
+ */
+ constructor() {
+
+ Contact.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Contact
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Contact} obj Optional instance to populate.
+ * @return {module:model/Contact} The populated Contact
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Contact();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('AssistantName')) {
+ obj['AssistantName'] = ApiClient.convertToType(data['AssistantName'], 'String');
+ }
+ if (data.hasOwnProperty('AssistantPhone')) {
+ obj['AssistantPhone'] = ApiClient.convertToType(data['AssistantPhone'], 'String');
+ }
+ if (data.hasOwnProperty('BirthDate')) {
+ obj['BirthDate'] = ApiClient.convertToType(data['BirthDate'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Department')) {
+ obj['Department'] = ApiClient.convertToType(data['Department'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('DoNotCall')) {
+ obj['DoNotCall'] = ApiClient.convertToType(data['DoNotCall'], 'Boolean');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EmailBounceDate')) {
+ obj['EmailBounceDate'] = ApiClient.convertToType(data['EmailBounceDate'], 'String');
+ }
+ if (data.hasOwnProperty('EmailBouncedReason')) {
+ obj['EmailBouncedReason'] = ApiClient.convertToType(data['EmailBouncedReason'], 'String');
+ }
+ if (data.hasOwnProperty('EnrollmentStatus')) {
+ obj['EnrollmentStatus'] = ApiClient.convertToType(data['EnrollmentStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('HasOptedOutOfEmail')) {
+ obj['HasOptedOutOfEmail'] = ApiClient.convertToType(data['HasOptedOutOfEmail'], 'Boolean');
+ }
+ if (data.hasOwnProperty('HasOptedOutOfFax')) {
+ obj['HasOptedOutOfFax'] = ApiClient.convertToType(data['HasOptedOutOfFax'], 'Boolean');
+ }
+ if (data.hasOwnProperty('HomePhone')) {
+ obj['HomePhone'] = ApiClient.convertToType(data['HomePhone'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsEmailBounced')) {
+ obj['IsEmailBounced'] = ApiClient.convertToType(data['IsEmailBounced'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsProvisioned')) {
+ obj['IsProvisioned'] = ApiClient.convertToType(data['IsProvisioned'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('LeadSource')) {
+ obj['LeadSource'] = ApiClient.convertToType(data['LeadSource'], 'String');
+ }
+ if (data.hasOwnProperty('Level')) {
+ obj['Level'] = ApiClient.convertToType(data['Level'], 'String');
+ }
+ if (data.hasOwnProperty('LinkedIn')) {
+ obj['LinkedIn'] = ApiClient.convertToType(data['LinkedIn'], 'String');
+ }
+ if (data.hasOwnProperty('MailingAddress')) {
+ obj['MailingAddress'] = Address.constructFromObject(data['MailingAddress']);
+ }
+ if (data.hasOwnProperty('MailingLists')) {
+ obj['MailingLists'] = ApiClient.convertToType(data['MailingLists'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OtherAddress')) {
+ obj['OtherAddress'] = Address.constructFromObject(data['OtherAddress']);
+ }
+ if (data.hasOwnProperty('OtherPhone')) {
+ obj['OtherPhone'] = ApiClient.convertToType(data['OtherPhone'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('PersonalEmail')) {
+ obj['PersonalEmail'] = ApiClient.convertToType(data['PersonalEmail'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PhotoURL')) {
+ obj['PhotoURL'] = ApiClient.convertToType(data['PhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('RecruitingStatus')) {
+ obj['RecruitingStatus'] = ApiClient.convertToType(data['RecruitingStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('ReportsToID')) {
+ obj['ReportsToID'] = ApiClient.convertToType(data['ReportsToID'], 'String');
+ }
+ if (data.hasOwnProperty('Salutation')) {
+ obj['Salutation'] = ApiClient.convertToType(data['Salutation'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The primary account ID of this contact
+ * @member {String} AccountID
+ */
+Contact.prototype['AccountID'] = undefined;
+
+/**
+ * Assistant Name
+ * @member {String} AssistantName
+ */
+Contact.prototype['AssistantName'] = undefined;
+
+/**
+ * Asst. Phone
+ * @member {String} AssistantPhone
+ */
+Contact.prototype['AssistantPhone'] = undefined;
+
+/**
+ * Birthdate
+ * @member {String} BirthDate
+ */
+Contact.prototype['BirthDate'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Contact.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Contact.prototype['CreatedDate'] = undefined;
+
+/**
+ * Department
+ * @member {String} Department
+ */
+Contact.prototype['Department'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Contact.prototype['Description'] = undefined;
+
+/**
+ * Do Not Call?
+ * @member {Boolean} DoNotCall
+ */
+Contact.prototype['DoNotCall'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+Contact.prototype['Email'] = undefined;
+
+/**
+ * Email Bounce Date
+ * @member {String} EmailBounceDate
+ */
+Contact.prototype['EmailBounceDate'] = undefined;
+
+/**
+ * Email Bounce Reason
+ * @member {String} EmailBouncedReason
+ */
+Contact.prototype['EmailBouncedReason'] = undefined;
+
+/**
+ * Taxnexus Enrollment Status
+ * @member {String} EnrollmentStatus
+ */
+Contact.prototype['EnrollmentStatus'] = undefined;
+
+/**
+ * Fax Number
+ * @member {String} Fax
+ */
+Contact.prototype['Fax'] = undefined;
+
+/**
+ * First Name
+ * @member {String} FirstName
+ */
+Contact.prototype['FirstName'] = undefined;
+
+/**
+ * Email Opt Out
+ * @member {Boolean} HasOptedOutOfEmail
+ */
+Contact.prototype['HasOptedOutOfEmail'] = undefined;
+
+/**
+ * Fax Opt Out
+ * @member {Boolean} HasOptedOutOfFax
+ */
+Contact.prototype['HasOptedOutOfFax'] = undefined;
+
+/**
+ * Home Phone
+ * @member {String} HomePhone
+ */
+Contact.prototype['HomePhone'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Contact.prototype['ID'] = undefined;
+
+/**
+ * Does this contact have bounced emails?
+ * @member {Boolean} IsEmailBounced
+ */
+Contact.prototype['IsEmailBounced'] = undefined;
+
+/**
+ * Is Provisioned?
+ * @member {Boolean} IsProvisioned
+ */
+Contact.prototype['IsProvisioned'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Contact.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Contact.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Last Name
+ * @member {String} LastName
+ */
+Contact.prototype['LastName'] = undefined;
+
+/**
+ * Lead Source
+ * @member {String} LeadSource
+ */
+Contact.prototype['LeadSource'] = undefined;
+
+/**
+ * Level
+ * @member {String} Level
+ */
+Contact.prototype['Level'] = undefined;
+
+/**
+ * LinkedIn Page
+ * @member {String} LinkedIn
+ */
+Contact.prototype['LinkedIn'] = undefined;
+
+/**
+ * @member {module:model/Address} MailingAddress
+ */
+Contact.prototype['MailingAddress'] = undefined;
+
+/**
+ * Mailing Lists
+ * @member {String} MailingLists
+ */
+Contact.prototype['MailingLists'] = undefined;
+
+/**
+ * Mobile Phone
+ * @member {String} MobilePhone
+ */
+Contact.prototype['MobilePhone'] = undefined;
+
+/**
+ * Full Name
+ * @member {String} Name
+ */
+Contact.prototype['Name'] = undefined;
+
+/**
+ * @member {module:model/Address} OtherAddress
+ */
+Contact.prototype['OtherAddress'] = undefined;
+
+/**
+ * Other Phone
+ * @member {String} OtherPhone
+ */
+Contact.prototype['OtherPhone'] = undefined;
+
+/**
+ * The User ID of the user who owns this Contact
+ * @member {String} OwnerID
+ */
+Contact.prototype['OwnerID'] = undefined;
+
+/**
+ * Personal Email Address for this Contact
+ * @member {String} PersonalEmail
+ */
+Contact.prototype['PersonalEmail'] = undefined;
+
+/**
+ * Phone Number
+ * @member {String} Phone
+ */
+Contact.prototype['Phone'] = undefined;
+
+/**
+ * URL of a photograph of this User
+ * @member {String} PhotoURL
+ */
+Contact.prototype['PhotoURL'] = undefined;
+
+/**
+ * Recruiting Status
+ * @member {String} RecruitingStatus
+ */
+Contact.prototype['RecruitingStatus'] = undefined;
+
+/**
+ * External reference to this contact, if any
+ * @member {String} Ref
+ */
+Contact.prototype['Ref'] = undefined;
+
+/**
+ * Reports To Contact ID
+ * @member {String} ReportsToID
+ */
+Contact.prototype['ReportsToID'] = undefined;
+
+/**
+ * Contact Salutation
+ * @member {String} Salutation
+ */
+Contact.prototype['Salutation'] = undefined;
+
+/**
+ * The Contact Status
+ * @member {String} Status
+ */
+Contact.prototype['Status'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Contact.prototype['TenantID'] = undefined;
+
+/**
+ * Contact Title
+ * @member {String} Title
+ */
+Contact.prototype['Title'] = undefined;
+
+/**
+ * Contact Type
+ * @member {String} Type
+ */
+Contact.prototype['Type'] = undefined;
+
+
+
+
+
+
+export default Contact;
+
diff --git a/client/board/src/model/Database.js b/client/board/src/model/Database.js
new file mode 100644
index 0000000..8597a90
--- /dev/null
+++ b/client/board/src/model/Database.js
@@ -0,0 +1,181 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Database model module.
+ * @module model/Database
+ * @version 0.0.2
+ */
+class Database {
+ /**
+ * Constructs a new Database
.
+ * A Database provisioned and owned by a Tenant
+ * @alias module:model/Database
+ */
+ constructor() {
+
+ Database.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Database
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Database} obj Optional instance to populate.
+ * @return {module:model/Database} The populated Database
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Database();
+
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ClusterID')) {
+ obj['ClusterID'] = ApiClient.convertToType(data['ClusterID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('DSN')) {
+ obj['DSN'] = ApiClient.convertToType(data['DSN'], 'String');
+ }
+ if (data.hasOwnProperty('DatabaseName')) {
+ obj['DatabaseName'] = ApiClient.convertToType(data['DatabaseName'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Microservices')) {
+ obj['Microservices'] = ApiClient.convertToType(data['Microservices'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Is this database active?
+ * @member {Boolean} Active
+ */
+Database.prototype['Active'] = undefined;
+
+/**
+ * The ID of the Cluster in which this database is deployed
+ * @member {String} ClusterID
+ */
+Database.prototype['ClusterID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Database.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Database.prototype['CreatedDate'] = undefined;
+
+/**
+ * Database connection string
+ * @member {String} DSN
+ */
+Database.prototype['DSN'] = undefined;
+
+/**
+ * The name of the physical database in the cluster
+ * @member {String} DatabaseName
+ */
+Database.prototype['DatabaseName'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Database.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Database.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Database.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * List of Taxnexus microservices implemented by this Database
+ * @member {String} Microservices
+ */
+Database.prototype['Microservices'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} Status
+ */
+Database.prototype['Status'] = undefined;
+
+/**
+ * The ID of the tenant who owns this Database
+ * @member {String} TenantID
+ */
+Database.prototype['TenantID'] = undefined;
+
+/**
+ * The type of Database (mysql, etc)
+ * @member {String} Type
+ */
+Database.prototype['Type'] = undefined;
+
+
+
+
+
+
+export default Database;
+
diff --git a/client/board/src/model/Developer.js b/client/board/src/model/Developer.js
new file mode 100644
index 0000000..5030872
--- /dev/null
+++ b/client/board/src/model/Developer.js
@@ -0,0 +1,90 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+import Contact from './Contact';
+import PaymentMethod from './PaymentMethod';
+
+/**
+ * The Developer model module.
+ * @module model/Developer
+ * @version 0.0.2
+ */
+class Developer {
+ /**
+ * Constructs a new Developer
.
+ * @alias module:model/Developer
+ */
+ constructor() {
+
+ Developer.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Developer
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Developer} obj Optional instance to populate.
+ * @return {module:model/Developer} The populated Developer
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Developer();
+
+ if (data.hasOwnProperty('Account')) {
+ obj['Account'] = Account.constructFromObject(data['Account']);
+ }
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = Contact.constructFromObject(data['Contact']);
+ }
+ if (data.hasOwnProperty('PaymentMethod')) {
+ obj['PaymentMethod'] = PaymentMethod.constructFromObject(data['PaymentMethod']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {module:model/Account} Account
+ */
+Developer.prototype['Account'] = undefined;
+
+/**
+ * @member {module:model/Contact} Contact
+ */
+Developer.prototype['Contact'] = undefined;
+
+/**
+ * @member {module:model/PaymentMethod} PaymentMethod
+ */
+Developer.prototype['PaymentMethod'] = undefined;
+
+
+
+
+
+
+export default Developer;
+
diff --git a/client/board/src/model/Error.js b/client/board/src/model/Error.js
new file mode 100644
index 0000000..9ec04fe
--- /dev/null
+++ b/client/board/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('code')) {
+ obj['code'] = ApiClient.convertToType(data['code'], 'Number');
+ }
+ if (data.hasOwnProperty('fields')) {
+ obj['fields'] = ApiClient.convertToType(data['fields'], 'String');
+ }
+ if (data.hasOwnProperty('message')) {
+ obj['message'] = ApiClient.convertToType(data['message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} code
+ */
+Error.prototype['code'] = undefined;
+
+/**
+ * @member {String} fields
+ */
+Error.prototype['fields'] = undefined;
+
+/**
+ * @member {String} message
+ */
+Error.prototype['message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/board/src/model/IQ.js b/client/board/src/model/IQ.js
new file mode 100644
index 0000000..2e641d5
--- /dev/null
+++ b/client/board/src/model/IQ.js
@@ -0,0 +1,117 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+import Contact from './Contact';
+import Lead from './Lead';
+import PaymentMethod from './PaymentMethod';
+import Tenant from './Tenant';
+import User from './User';
+
+/**
+ * The IQ model module.
+ * @module model/IQ
+ * @version 0.0.2
+ */
+class IQ {
+ /**
+ * Constructs a new IQ
.
+ * @alias module:model/IQ
+ */
+ constructor() {
+
+ IQ.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a IQ
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/IQ} obj Optional instance to populate.
+ * @return {module:model/IQ} The populated IQ
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new IQ();
+
+ if (data.hasOwnProperty('Account')) {
+ obj['Account'] = Account.constructFromObject(data['Account']);
+ }
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = Contact.constructFromObject(data['Contact']);
+ }
+ if (data.hasOwnProperty('Lead')) {
+ obj['Lead'] = Lead.constructFromObject(data['Lead']);
+ }
+ if (data.hasOwnProperty('PaymentMethod')) {
+ obj['PaymentMethod'] = PaymentMethod.constructFromObject(data['PaymentMethod']);
+ }
+ if (data.hasOwnProperty('Tenant')) {
+ obj['Tenant'] = Tenant.constructFromObject(data['Tenant']);
+ }
+ if (data.hasOwnProperty('User')) {
+ obj['User'] = User.constructFromObject(data['User']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {module:model/Account} Account
+ */
+IQ.prototype['Account'] = undefined;
+
+/**
+ * @member {module:model/Contact} Contact
+ */
+IQ.prototype['Contact'] = undefined;
+
+/**
+ * @member {module:model/Lead} Lead
+ */
+IQ.prototype['Lead'] = undefined;
+
+/**
+ * @member {module:model/PaymentMethod} PaymentMethod
+ */
+IQ.prototype['PaymentMethod'] = undefined;
+
+/**
+ * @member {module:model/Tenant} Tenant
+ */
+IQ.prototype['Tenant'] = undefined;
+
+/**
+ * @member {module:model/User} User
+ */
+IQ.prototype['User'] = undefined;
+
+
+
+
+
+
+export default IQ;
+
diff --git a/client/board/src/model/Lead.js b/client/board/src/model/Lead.js
new file mode 100644
index 0000000..4def84b
--- /dev/null
+++ b/client/board/src/model/Lead.js
@@ -0,0 +1,270 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Lead model module.
+ * @module model/Lead
+ * @version 0.0.2
+ */
+class Lead {
+ /**
+ * Constructs a new Lead
.
+ * @alias module:model/Lead
+ */
+ constructor() {
+
+ Lead.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Lead
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Lead} obj Optional instance to populate.
+ * @return {module:model/Lead} The populated Lead
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Lead();
+
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('Company')) {
+ obj['Company'] = ApiClient.convertToType(data['Company'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerId')) {
+ obj['OwnerId'] = ApiClient.convertToType(data['OwnerId'], 'String');
+ }
+ if (data.hasOwnProperty('PartnerAccountId')) {
+ obj['PartnerAccountId'] = ApiClient.convertToType(data['PartnerAccountId'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('ProductID')) {
+ obj['ProductID'] = ApiClient.convertToType(data['ProductID'], 'String');
+ }
+ if (data.hasOwnProperty('RefererURL')) {
+ obj['RefererURL'] = ApiClient.convertToType(data['RefererURL'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('UTMCampaign')) {
+ obj['UTMCampaign'] = ApiClient.convertToType(data['UTMCampaign'], 'String');
+ }
+ if (data.hasOwnProperty('UTMContent')) {
+ obj['UTMContent'] = ApiClient.convertToType(data['UTMContent'], 'String');
+ }
+ if (data.hasOwnProperty('UTMMedium')) {
+ obj['UTMMedium'] = ApiClient.convertToType(data['UTMMedium'], 'String');
+ }
+ if (data.hasOwnProperty('UTMSource')) {
+ obj['UTMSource'] = ApiClient.convertToType(data['UTMSource'], 'String');
+ }
+ if (data.hasOwnProperty('UTMTerm')) {
+ obj['UTMTerm'] = ApiClient.convertToType(data['UTMTerm'], 'String');
+ }
+ if (data.hasOwnProperty('Website')) {
+ obj['Website'] = ApiClient.convertToType(data['Website'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {module:model/Address} Address
+ */
+Lead.prototype['Address'] = undefined;
+
+/**
+ * Company
+ * @member {String} Company
+ */
+Lead.prototype['Company'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Lead.prototype['Description'] = undefined;
+
+/**
+ * Email
+ * @member {String} Email
+ */
+Lead.prototype['Email'] = undefined;
+
+/**
+ * First Name
+ * @member {String} FirstName
+ */
+Lead.prototype['FirstName'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Lead.prototype['ID'] = undefined;
+
+/**
+ * Last Name
+ * @member {String} LastName
+ */
+Lead.prototype['LastName'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} MobilePhone
+ */
+Lead.prototype['MobilePhone'] = undefined;
+
+/**
+ * Name
+ * @member {String} Name
+ */
+Lead.prototype['Name'] = undefined;
+
+/**
+ * LeadBasic Owner
+ * @member {String} OwnerId
+ */
+Lead.prototype['OwnerId'] = undefined;
+
+/**
+ * Partner Account
+ * @member {String} PartnerAccountId
+ */
+Lead.prototype['PartnerAccountId'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+Lead.prototype['Phone'] = undefined;
+
+/**
+ * Product
+ * @member {String} ProductID
+ */
+Lead.prototype['ProductID'] = undefined;
+
+/**
+ * referer_url
+ * @member {String} RefererURL
+ */
+Lead.prototype['RefererURL'] = undefined;
+
+/**
+ * LeadBasic Status
+ * @member {String} Status
+ */
+Lead.prototype['Status'] = undefined;
+
+/**
+ * Title
+ * @member {String} Title
+ */
+Lead.prototype['Title'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Lead.prototype['Type'] = undefined;
+
+/**
+ * utm_campaign
+ * @member {String} UTMCampaign
+ */
+Lead.prototype['UTMCampaign'] = undefined;
+
+/**
+ * utm_content
+ * @member {String} UTMContent
+ */
+Lead.prototype['UTMContent'] = undefined;
+
+/**
+ * utm_medium
+ * @member {String} UTMMedium
+ */
+Lead.prototype['UTMMedium'] = undefined;
+
+/**
+ * utm_source
+ * @member {String} UTMSource
+ */
+Lead.prototype['UTMSource'] = undefined;
+
+/**
+ * utm_term
+ * @member {String} UTMTerm
+ */
+Lead.prototype['UTMTerm'] = undefined;
+
+/**
+ * Website
+ * @member {String} Website
+ */
+Lead.prototype['Website'] = undefined;
+
+
+
+
+
+
+export default Lead;
+
diff --git a/client/board/src/model/PaymentMethod.js b/client/board/src/model/PaymentMethod.js
new file mode 100644
index 0000000..8157027
--- /dev/null
+++ b/client/board/src/model/PaymentMethod.js
@@ -0,0 +1,298 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The PaymentMethod model module.
+ * @module model/PaymentMethod
+ * @version 0.0.2
+ */
+class PaymentMethod {
+ /**
+ * Constructs a new PaymentMethod
.
+ * Describes the EFT or other payment information for an account and billing contact
+ * @alias module:model/PaymentMethod
+ */
+ constructor() {
+
+ PaymentMethod.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a PaymentMethod
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/PaymentMethod} obj Optional instance to populate.
+ * @return {module:model/PaymentMethod} The populated PaymentMethod
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new PaymentMethod();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('AchAccountType')) {
+ obj['AchAccountType'] = ApiClient.convertToType(data['AchAccountType'], 'String');
+ }
+ if (data.hasOwnProperty('AchBankAccount')) {
+ obj['AchBankAccount'] = ApiClient.convertToType(data['AchBankAccount'], 'String');
+ }
+ if (data.hasOwnProperty('AchRouting')) {
+ obj['AchRouting'] = ApiClient.convertToType(data['AchRouting'], 'String');
+ }
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('Autopay')) {
+ obj['Autopay'] = ApiClient.convertToType(data['Autopay'], 'Boolean');
+ }
+ if (data.hasOwnProperty('BankName')) {
+ obj['BankName'] = ApiClient.convertToType(data['BankName'], 'String');
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CCnumber')) {
+ obj['CCnumber'] = ApiClient.convertToType(data['CCnumber'], 'String');
+ }
+ if (data.hasOwnProperty('CCtype')) {
+ obj['CCtype'] = ApiClient.convertToType(data['CCtype'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('ContractID')) {
+ obj['ContractID'] = ApiClient.convertToType(data['ContractID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Default')) {
+ obj['Default'] = ApiClient.convertToType(data['Default'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ExpirationDate')) {
+ obj['ExpirationDate'] = ApiClient.convertToType(data['ExpirationDate'], 'String');
+ }
+ if (data.hasOwnProperty('ExpirationMonth')) {
+ obj['ExpirationMonth'] = ApiClient.convertToType(data['ExpirationMonth'], 'String');
+ }
+ if (data.hasOwnProperty('ExpirationYear')) {
+ obj['ExpirationYear'] = ApiClient.convertToType(data['ExpirationYear'], 'String');
+ }
+ if (data.hasOwnProperty('Gateway')) {
+ obj['Gateway'] = ApiClient.convertToType(data['Gateway'], 'String');
+ }
+ if (data.hasOwnProperty('GatewayKey')) {
+ obj['GatewayKey'] = ApiClient.convertToType(data['GatewayKey'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Nickname')) {
+ obj['Nickname'] = ApiClient.convertToType(data['Nickname'], 'String');
+ }
+ if (data.hasOwnProperty('RecordType')) {
+ obj['RecordType'] = ApiClient.convertToType(data['RecordType'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account
+ * @member {String} AccountID
+ */
+PaymentMethod.prototype['AccountID'] = undefined;
+
+/**
+ * ACH Account Type
+ * @member {String} AchAccountType
+ */
+PaymentMethod.prototype['AchAccountType'] = undefined;
+
+/**
+ * ACH Bank Account
+ * @member {String} AchBankAccount
+ */
+PaymentMethod.prototype['AchBankAccount'] = undefined;
+
+/**
+ * ACH Routing
+ * @member {String} AchRouting
+ */
+PaymentMethod.prototype['AchRouting'] = undefined;
+
+/**
+ * Active?
+ * @member {Boolean} Active
+ */
+PaymentMethod.prototype['Active'] = undefined;
+
+/**
+ * Autopay?
+ * @member {Boolean} Autopay
+ */
+PaymentMethod.prototype['Autopay'] = undefined;
+
+/**
+ * Bank Name
+ * @member {String} BankName
+ */
+PaymentMethod.prototype['BankName'] = undefined;
+
+/**
+ * Billing Contact
+ * @member {String} BillingContactID
+ */
+PaymentMethod.prototype['BillingContactID'] = undefined;
+
+/**
+ * Credit Card Number
+ * @member {String} CCnumber
+ */
+PaymentMethod.prototype['CCnumber'] = undefined;
+
+/**
+ * CC Type
+ * @member {String} CCtype
+ */
+PaymentMethod.prototype['CCtype'] = undefined;
+
+/**
+ * Company
+ * @member {String} CompanyID
+ */
+PaymentMethod.prototype['CompanyID'] = undefined;
+
+/**
+ * Contract
+ * @member {String} ContractID
+ */
+PaymentMethod.prototype['ContractID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+PaymentMethod.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+PaymentMethod.prototype['CreatedDate'] = undefined;
+
+/**
+ * Default Payment Method?
+ * @member {Boolean} Default
+ */
+PaymentMethod.prototype['Default'] = undefined;
+
+/**
+ * Expiration Date
+ * @member {String} ExpirationDate
+ */
+PaymentMethod.prototype['ExpirationDate'] = undefined;
+
+/**
+ * Expiration Month
+ * @member {String} ExpirationMonth
+ */
+PaymentMethod.prototype['ExpirationMonth'] = undefined;
+
+/**
+ * Expiration Year
+ * @member {String} ExpirationYear
+ */
+PaymentMethod.prototype['ExpirationYear'] = undefined;
+
+/**
+ * Gateway
+ * @member {String} Gateway
+ */
+PaymentMethod.prototype['Gateway'] = undefined;
+
+/**
+ * Gateway Key
+ * @member {String} GatewayKey
+ */
+PaymentMethod.prototype['GatewayKey'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+PaymentMethod.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+PaymentMethod.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+PaymentMethod.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Nickname
+ * @member {String} Nickname
+ */
+PaymentMethod.prototype['Nickname'] = undefined;
+
+/**
+ * Record Type
+ * @member {String} RecordType
+ */
+PaymentMethod.prototype['RecordType'] = undefined;
+
+/**
+ * External Reference
+ * @member {String} Ref
+ */
+PaymentMethod.prototype['Ref'] = undefined;
+
+
+
+
+
+
+export default PaymentMethod;
+
diff --git a/client/board/src/model/Role.js b/client/board/src/model/Role.js
new file mode 100644
index 0000000..771edbe
--- /dev/null
+++ b/client/board/src/model/Role.js
@@ -0,0 +1,145 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Role model module.
+ * @module model/Role
+ * @version 0.0.2
+ */
+class Role {
+ /**
+ * Constructs a new Role
.
+ * A functional role within a Tenant
+ * @alias module:model/Role
+ */
+ constructor() {
+
+ Role.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Role
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Role} obj Optional instance to populate.
+ * @return {module:model/Role} The populated Role
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Role();
+
+ if (data.hasOwnProperty('Auth0RoleID')) {
+ obj['Auth0RoleID'] = ApiClient.convertToType(data['Auth0RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('RoleName')) {
+ obj['RoleName'] = ApiClient.convertToType(data['RoleName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The corresponding Auth0 Role
+ * @member {String} Auth0RoleID
+ */
+Role.prototype['Auth0RoleID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Role.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Role.prototype['CreatedDate'] = undefined;
+
+/**
+ * Role Description
+ * @member {String} Description
+ */
+Role.prototype['Description'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Role.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Role.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Role.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The name of this role
+ * @member {String} RoleName
+ */
+Role.prototype['RoleName'] = undefined;
+
+/**
+ * The ID of the Tenant that owns this Role
+ * @member {String} TenantID
+ */
+Role.prototype['TenantID'] = undefined;
+
+
+
+
+
+
+export default Role;
+
diff --git a/client/board/src/model/RuleExecution.js b/client/board/src/model/RuleExecution.js
new file mode 100644
index 0000000..f8bf60d
--- /dev/null
+++ b/client/board/src/model/RuleExecution.js
@@ -0,0 +1,99 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RuleExecution model module.
+ * @module model/RuleExecution
+ * @version 0.0.2
+ */
+class RuleExecution {
+ /**
+ * Constructs a new RuleExecution
.
+ * @alias module:model/RuleExecution
+ */
+ constructor() {
+
+ RuleExecution.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a RuleExecution
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RuleExecution} obj Optional instance to populate.
+ * @return {module:model/RuleExecution} The populated RuleExecution
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RuleExecution();
+
+ if (data.hasOwnProperty('SagaID')) {
+ obj['SagaID'] = ApiClient.convertToType(data['SagaID'], 'String');
+ }
+ if (data.hasOwnProperty('SagaType')) {
+ obj['SagaType'] = ApiClient.convertToType(data['SagaType'], 'String');
+ }
+ if (data.hasOwnProperty('RuleID')) {
+ obj['RuleID'] = ApiClient.convertToType(data['RuleID'], 'String');
+ }
+ if (data.hasOwnProperty('RunID')) {
+ obj['RunID'] = ApiClient.convertToType(data['RunID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The Taxnexus SagaID for this rule execution
+ * @member {String} SagaID
+ */
+RuleExecution.prototype['SagaID'] = undefined;
+
+/**
+ * The Taxnexus SagaType for this rule execution
+ * @member {String} SagaType
+ */
+RuleExecution.prototype['SagaType'] = undefined;
+
+/**
+ * The Temporal Workflow ID
+ * @member {String} RuleID
+ */
+RuleExecution.prototype['RuleID'] = undefined;
+
+/**
+ * The Temporal First Started Workflow Run ID
+ * @member {String} RunID
+ */
+RuleExecution.prototype['RunID'] = undefined;
+
+
+
+
+
+
+export default RuleExecution;
+
diff --git a/client/board/src/model/Tenant.js b/client/board/src/model/Tenant.js
new file mode 100644
index 0000000..f95fbb1
--- /dev/null
+++ b/client/board/src/model/Tenant.js
@@ -0,0 +1,190 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import Role from './Role';
+import TenantUser from './TenantUser';
+
+/**
+ * The Tenant model module.
+ * @module model/Tenant
+ * @version 0.0.2
+ */
+class Tenant {
+ /**
+ * Constructs a new Tenant
.
+ * Taxnexus Account Tenant
+ * @alias module:model/Tenant
+ */
+ constructor() {
+
+ Tenant.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Tenant
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Tenant} obj Optional instance to populate.
+ * @return {module:model/Tenant} The populated Tenant
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Tenant();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Databases')) {
+ obj['Databases'] = ApiClient.convertToType(data['Databases'], [Database]);
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Roles')) {
+ obj['Roles'] = ApiClient.convertToType(data['Roles'], [Role]);
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantName')) {
+ obj['TenantName'] = ApiClient.convertToType(data['TenantName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantUsers')) {
+ obj['TenantUsers'] = ApiClient.convertToType(data['TenantUsers'], [TenantUser]);
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('Version')) {
+ obj['Version'] = ApiClient.convertToType(data['Version'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The Account that owns this Tenant
+ * @member {String} AccountID
+ */
+Tenant.prototype['AccountID'] = undefined;
+
+/**
+ * Is this Tenant currently active?
+ * @member {Boolean} Active
+ */
+Tenant.prototype['Active'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Tenant.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Tenant.prototype['CreatedDate'] = undefined;
+
+/**
+ * @member {Array.} Databases
+ */
+Tenant.prototype['Databases'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Tenant.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Tenant.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Tenant.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * @member {Array.} Roles
+ */
+Tenant.prototype['Roles'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} Status
+ */
+Tenant.prototype['Status'] = undefined;
+
+/**
+ * Name of the Tenant Resource
+ * @member {String} TenantName
+ */
+Tenant.prototype['TenantName'] = undefined;
+
+/**
+ * @member {Array.} TenantUsers
+ */
+Tenant.prototype['TenantUsers'] = undefined;
+
+/**
+ * The type of Tenant
+ * @member {String} Type
+ */
+Tenant.prototype['Type'] = undefined;
+
+/**
+ * The version number of the Tenant Onboarding system used to create this tenant
+ * @member {String} Version
+ */
+Tenant.prototype['Version'] = undefined;
+
+
+
+
+
+
+export default Tenant;
+
diff --git a/client/board/src/model/TenantUser.js b/client/board/src/model/TenantUser.js
new file mode 100644
index 0000000..d81d683
--- /dev/null
+++ b/client/board/src/model/TenantUser.js
@@ -0,0 +1,208 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The TenantUser model module.
+ * @module model/TenantUser
+ * @version 0.0.2
+ */
+class TenantUser {
+ /**
+ * Constructs a new TenantUser
.
+ * Relationship object that connects users to a tenant
+ * @alias module:model/TenantUser
+ */
+ constructor() {
+
+ TenantUser.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantUser
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantUser} obj Optional instance to populate.
+ * @return {module:model/TenantUser} The populated TenantUser
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantUser();
+
+ if (data.hasOwnProperty('AccessLevel')) {
+ obj['AccessLevel'] = ApiClient.convertToType(data['AccessLevel'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantActive')) {
+ obj['TenantActive'] = ApiClient.convertToType(data['TenantActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TenantName')) {
+ obj['TenantName'] = ApiClient.convertToType(data['TenantName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantStatus')) {
+ obj['TenantStatus'] = ApiClient.convertToType(data['TenantStatus'], 'String');
+ }
+ if (data.hasOwnProperty('TenantType')) {
+ obj['TenantType'] = ApiClient.convertToType(data['TenantType'], 'String');
+ }
+ if (data.hasOwnProperty('TenantVersion')) {
+ obj['TenantVersion'] = ApiClient.convertToType(data['TenantVersion'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The makeTenantUser access level for this User
+ * @member {String} AccessLevel
+ */
+TenantUser.prototype['AccessLevel'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+TenantUser.prototype['AccountID'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+TenantUser.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} CompanyName
+ */
+TenantUser.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+TenantUser.prototype['ContactID'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+TenantUser.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant active?
+ * @member {Boolean} TenantActive
+ */
+TenantUser.prototype['TenantActive'] = undefined;
+
+/**
+ * The Tenant ID
+ * @member {String} TenantID
+ */
+TenantUser.prototype['TenantID'] = undefined;
+
+/**
+ * Tenant Name
+ * @member {String} TenantName
+ */
+TenantUser.prototype['TenantName'] = undefined;
+
+/**
+ * Tenant Status
+ * @member {String} TenantStatus
+ */
+TenantUser.prototype['TenantStatus'] = undefined;
+
+/**
+ * Tenant type
+ * @member {String} TenantType
+ */
+TenantUser.prototype['TenantType'] = undefined;
+
+/**
+ * Tenant Version
+ * @member {String} TenantVersion
+ */
+TenantUser.prototype['TenantVersion'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+TenantUser.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+TenantUser.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+TenantUser.prototype['UserID'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+TenantUser.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default TenantUser;
+
diff --git a/client/board/src/model/User.js b/client/board/src/model/User.js
new file mode 100644
index 0000000..1f13b3c
--- /dev/null
+++ b/client/board/src/model/User.js
@@ -0,0 +1,584 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+import TenantUser from './TenantUser';
+import UserRole from './UserRole';
+
+/**
+ * The User model module.
+ * @module model/User
+ * @version 0.0.2
+ */
+class User {
+ /**
+ * Constructs a new User
.
+ * @alias module:model/User
+ */
+ constructor() {
+
+ User.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a User
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/User} obj Optional instance to populate.
+ * @return {module:model/User} The populated User
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new User();
+
+ if (data.hasOwnProperty('APIKey')) {
+ obj['APIKey'] = ApiClient.convertToType(data['APIKey'], 'String');
+ }
+ if (data.hasOwnProperty('AboutMe')) {
+ obj['AboutMe'] = ApiClient.convertToType(data['AboutMe'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('Alias')) {
+ obj['Alias'] = ApiClient.convertToType(data['Alias'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CommunityNickname')) {
+ obj['CommunityNickname'] = ApiClient.convertToType(data['CommunityNickname'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('DelegatedApproverID')) {
+ obj['DelegatedApproverID'] = ApiClient.convertToType(data['DelegatedApproverID'], 'String');
+ }
+ if (data.hasOwnProperty('Department')) {
+ obj['Department'] = ApiClient.convertToType(data['Department'], 'String');
+ }
+ if (data.hasOwnProperty('Division')) {
+ obj['Division'] = ApiClient.convertToType(data['Division'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EmployeeNumber')) {
+ obj['EmployeeNumber'] = ApiClient.convertToType(data['EmployeeNumber'], 'String');
+ }
+ if (data.hasOwnProperty('EndOfDay')) {
+ obj['EndOfDay'] = ApiClient.convertToType(data['EndOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('Environment')) {
+ obj['Environment'] = ApiClient.convertToType(data['Environment'], 'String');
+ }
+ if (data.hasOwnProperty('Extension')) {
+ obj['Extension'] = ApiClient.convertToType(data['Extension'], 'String');
+ }
+ if (data.hasOwnProperty('FabricAPIKey')) {
+ obj['FabricAPIKey'] = ApiClient.convertToType(data['FabricAPIKey'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('ForecastEnabled')) {
+ obj['ForecastEnabled'] = ApiClient.convertToType(data['ForecastEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('FullPhotoURL')) {
+ obj['FullPhotoURL'] = ApiClient.convertToType(data['FullPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsActive')) {
+ obj['IsActive'] = ApiClient.convertToType(data['IsActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsPortalEnabled')) {
+ obj['IsPortalEnabled'] = ApiClient.convertToType(data['IsPortalEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsProphilePhotoActive')) {
+ obj['IsProphilePhotoActive'] = ApiClient.convertToType(data['IsProphilePhotoActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsSystemControlled')) {
+ obj['IsSystemControlled'] = ApiClient.convertToType(data['IsSystemControlled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastIP')) {
+ obj['LastIP'] = ApiClient.convertToType(data['LastIP'], 'String');
+ }
+ if (data.hasOwnProperty('LastLogin')) {
+ obj['LastLogin'] = ApiClient.convertToType(data['LastLogin'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('LoginCount')) {
+ obj['LoginCount'] = ApiClient.convertToType(data['LoginCount'], 'Number');
+ }
+ if (data.hasOwnProperty('ManagerID')) {
+ obj['ManagerID'] = ApiClient.convertToType(data['ManagerID'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OutOfOfficeMessage')) {
+ obj['OutOfOfficeMessage'] = ApiClient.convertToType(data['OutOfOfficeMessage'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PortalRole')) {
+ obj['PortalRole'] = ApiClient.convertToType(data['PortalRole'], 'String');
+ }
+ if (data.hasOwnProperty('ProfileID')) {
+ obj['ProfileID'] = ApiClient.convertToType(data['ProfileID'], 'String');
+ }
+ if (data.hasOwnProperty('ReceivesAdminEmails')) {
+ obj['ReceivesAdminEmails'] = ApiClient.convertToType(data['ReceivesAdminEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ReceivesAdminInfoEmails')) {
+ obj['ReceivesAdminInfoEmails'] = ApiClient.convertToType(data['ReceivesAdminInfoEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('SenderEmail')) {
+ obj['SenderEmail'] = ApiClient.convertToType(data['SenderEmail'], 'String');
+ }
+ if (data.hasOwnProperty('SenderName')) {
+ obj['SenderName'] = ApiClient.convertToType(data['SenderName'], 'String');
+ }
+ if (data.hasOwnProperty('Signature')) {
+ obj['Signature'] = ApiClient.convertToType(data['Signature'], 'String');
+ }
+ if (data.hasOwnProperty('SmallPhotoURL')) {
+ obj['SmallPhotoURL'] = ApiClient.convertToType(data['SmallPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('StartOfDay')) {
+ obj['StartOfDay'] = ApiClient.convertToType(data['StartOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TenantUsers')) {
+ obj['TenantUsers'] = ApiClient.convertToType(data['TenantUsers'], [TenantUser]);
+ }
+ if (data.hasOwnProperty('TimeZone')) {
+ obj['TimeZone'] = ApiClient.convertToType(data['TimeZone'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoleID')) {
+ obj['UserRoleID'] = ApiClient.convertToType(data['UserRoleID'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoles')) {
+ obj['UserRoles'] = ApiClient.convertToType(data['UserRoles'], [UserRole]);
+ }
+ if (data.hasOwnProperty('UserType')) {
+ obj['UserType'] = ApiClient.convertToType(data['UserType'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * API Key
+ * @member {String} APIKey
+ */
+User.prototype['APIKey'] = undefined;
+
+/**
+ * About Me
+ * @member {String} AboutMe
+ */
+User.prototype['AboutMe'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+User.prototype['AccountID'] = undefined;
+
+/**
+ * @member {module:model/Address} Address
+ */
+User.prototype['Address'] = undefined;
+
+/**
+ * Alias
+ * @member {String} Alias
+ */
+User.prototype['Alias'] = undefined;
+
+/**
+ * Auth0 User Id
+ * @member {String} Auth0UserID
+ */
+User.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Nickname
+ * @member {String} CommunityNickname
+ */
+User.prototype['CommunityNickname'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+User.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact
+ * @member {String} ContactID
+ */
+User.prototype['ContactID'] = undefined;
+
+/**
+ * Created User ID
+ * @member {String} CreatedByID
+ */
+User.prototype['CreatedByID'] = undefined;
+
+/**
+ * Date Created
+ * @member {String} CreatedDate
+ */
+User.prototype['CreatedDate'] = undefined;
+
+/**
+ * Delegated Approver
+ * @member {String} DelegatedApproverID
+ */
+User.prototype['DelegatedApproverID'] = undefined;
+
+/**
+ * Department
+ * @member {String} Department
+ */
+User.prototype['Department'] = undefined;
+
+/**
+ * Division
+ * @member {String} Division
+ */
+User.prototype['Division'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+User.prototype['Email'] = undefined;
+
+/**
+ * Employee Number
+ * @member {String} EmployeeNumber
+ */
+User.prototype['EmployeeNumber'] = undefined;
+
+/**
+ * Time day ends
+ * @member {String} EndOfDay
+ */
+User.prototype['EndOfDay'] = undefined;
+
+/**
+ * Environment
+ * @member {String} Environment
+ */
+User.prototype['Environment'] = undefined;
+
+/**
+ * Extension
+ * @member {String} Extension
+ */
+User.prototype['Extension'] = undefined;
+
+/**
+ * Fabric API Key
+ * @member {String} FabricAPIKey
+ */
+User.prototype['FabricAPIKey'] = undefined;
+
+/**
+ * Fax
+ * @member {String} Fax
+ */
+User.prototype['Fax'] = undefined;
+
+/**
+ * The first name
+ * @member {String} FirstName
+ */
+User.prototype['FirstName'] = undefined;
+
+/**
+ * Allow Forecasting
+ * @member {Boolean} ForecastEnabled
+ */
+User.prototype['ForecastEnabled'] = undefined;
+
+/**
+ * Full Photo URL
+ * @member {String} FullPhotoURL
+ */
+User.prototype['FullPhotoURL'] = undefined;
+
+/**
+ * Taxnexus ID
+ * @member {String} ID
+ */
+User.prototype['ID'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} IsActive
+ */
+User.prototype['IsActive'] = undefined;
+
+/**
+ * Is the user enabled for Communities?
+ * @member {Boolean} IsPortalEnabled
+ */
+User.prototype['IsPortalEnabled'] = undefined;
+
+/**
+ * Has Profile Photo
+ * @member {Boolean} IsProphilePhotoActive
+ */
+User.prototype['IsProphilePhotoActive'] = undefined;
+
+/**
+ * @member {Boolean} IsSystemControlled
+ */
+User.prototype['IsSystemControlled'] = undefined;
+
+/**
+ * IP address of last login
+ * @member {String} LastIP
+ */
+User.prototype['LastIP'] = undefined;
+
+/**
+ * Last login time
+ * @member {String} LastLogin
+ */
+User.prototype['LastLogin'] = undefined;
+
+/**
+ * Last Modified User ID
+ * @member {String} LastModifiedByID
+ */
+User.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+User.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The Last Name
+ * @member {String} LastName
+ */
+User.prototype['LastName'] = undefined;
+
+/**
+ * Number of times user has logged in
+ * @member {Number} LoginCount
+ */
+User.prototype['LoginCount'] = undefined;
+
+/**
+ * Manager
+ * @member {String} ManagerID
+ */
+User.prototype['ManagerID'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} MobilePhone
+ */
+User.prototype['MobilePhone'] = undefined;
+
+/**
+ * Name
+ * @member {String} Name
+ */
+User.prototype['Name'] = undefined;
+
+/**
+ * Out of office message
+ * @member {String} OutOfOfficeMessage
+ */
+User.prototype['OutOfOfficeMessage'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+User.prototype['Phone'] = undefined;
+
+/**
+ * Portal Role Level
+ * @member {String} PortalRole
+ */
+User.prototype['PortalRole'] = undefined;
+
+/**
+ * Profile
+ * @member {String} ProfileID
+ */
+User.prototype['ProfileID'] = undefined;
+
+/**
+ * Info Emails
+ * @member {Boolean} ReceivesAdminEmails
+ */
+User.prototype['ReceivesAdminEmails'] = undefined;
+
+/**
+ * Admin Info Emails
+ * @member {Boolean} ReceivesAdminInfoEmails
+ */
+User.prototype['ReceivesAdminInfoEmails'] = undefined;
+
+/**
+ * Email Sender Address
+ * @member {String} SenderEmail
+ */
+User.prototype['SenderEmail'] = undefined;
+
+/**
+ * Email Sender Name
+ * @member {String} SenderName
+ */
+User.prototype['SenderName'] = undefined;
+
+/**
+ * Email Signature
+ * @member {String} Signature
+ */
+User.prototype['Signature'] = undefined;
+
+/**
+ * Small Photo URL
+ * @member {String} SmallPhotoURL
+ */
+User.prototype['SmallPhotoURL'] = undefined;
+
+/**
+ * The time day starts
+ * @member {String} StartOfDay
+ */
+User.prototype['StartOfDay'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+User.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant ID
+ * @member {String} TenantID
+ */
+User.prototype['TenantID'] = undefined;
+
+/**
+ * @member {Array.} TenantUsers
+ */
+User.prototype['TenantUsers'] = undefined;
+
+/**
+ * Time Zone
+ * @member {String} TimeZone
+ */
+User.prototype['TimeZone'] = undefined;
+
+/**
+ * Title
+ * @member {String} Title
+ */
+User.prototype['Title'] = undefined;
+
+/**
+ * Role
+ * @member {String} UserRoleID
+ */
+User.prototype['UserRoleID'] = undefined;
+
+/**
+ * @member {Array.} UserRoles
+ */
+User.prototype['UserRoles'] = undefined;
+
+/**
+ * User Type
+ * @member {String} UserType
+ */
+User.prototype['UserType'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+User.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default User;
+
diff --git a/client/board/src/model/UserAuth.js b/client/board/src/model/UserAuth.js
new file mode 100644
index 0000000..8154fb4
--- /dev/null
+++ b/client/board/src/model/UserAuth.js
@@ -0,0 +1,126 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The UserAuth model module.
+ * @module model/UserAuth
+ * @version 0.0.2
+ */
+class UserAuth {
+ /**
+ * Constructs a new UserAuth
.
+ * @alias module:model/UserAuth
+ */
+ constructor() {
+
+ UserAuth.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserAuth
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserAuth} obj Optional instance to populate.
+ * @return {module:model/UserAuth} The populated UserAuth
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserAuth();
+
+ if (data.hasOwnProperty('APIKey')) {
+ obj['APIKey'] = ApiClient.convertToType(data['APIKey'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('Roles')) {
+ obj['Roles'] = ApiClient.convertToType(data['Roles'], ['String']);
+ }
+ if (data.hasOwnProperty('Tenants')) {
+ obj['Tenants'] = ApiClient.convertToType(data['Tenants'], ['String']);
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * API Key
+ * @member {String} APIKey
+ */
+UserAuth.prototype['APIKey'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+UserAuth.prototype['AccountID'] = undefined;
+
+/**
+ * Contact
+ * @member {String} ContactID
+ */
+UserAuth.prototype['ContactID'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+UserAuth.prototype['Email'] = undefined;
+
+/**
+ * Valid Roles for all tenants
+ * @member {Array.} Roles
+ */
+UserAuth.prototype['Roles'] = undefined;
+
+/**
+ * Valid Tenants
+ * @member {Array.} Tenants
+ */
+UserAuth.prototype['Tenants'] = undefined;
+
+/**
+ * Taxneuxs User ID
+ * @member {String} UserID
+ */
+UserAuth.prototype['UserID'] = undefined;
+
+
+
+
+
+
+export default UserAuth;
+
diff --git a/client/board/src/model/UserRole.js b/client/board/src/model/UserRole.js
new file mode 100644
index 0000000..d90238c
--- /dev/null
+++ b/client/board/src/model/UserRole.js
@@ -0,0 +1,181 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The UserRole model module.
+ * @module model/UserRole
+ * @version 0.0.2
+ */
+class UserRole {
+ /**
+ * Constructs a new UserRole
.
+ * Relationship object to connect a user to a role
+ * @alias module:model/UserRole
+ */
+ constructor() {
+
+ UserRole.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserRole
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserRole} obj Optional instance to populate.
+ * @return {module:model/UserRole} The populated UserRole
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserRole();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0RoleID')) {
+ obj['Auth0RoleID'] = ApiClient.convertToType(data['Auth0RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleDescription')) {
+ obj['RoleDescription'] = ApiClient.convertToType(data['RoleDescription'], 'String');
+ }
+ if (data.hasOwnProperty('RoleID')) {
+ obj['RoleID'] = ApiClient.convertToType(data['RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleName')) {
+ obj['RoleName'] = ApiClient.convertToType(data['RoleName'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account Id
+ * @member {String} AccountID
+ */
+UserRole.prototype['AccountID'] = undefined;
+
+/**
+ * Linked role ID
+ * @member {String} Auth0RoleID
+ */
+UserRole.prototype['Auth0RoleID'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+UserRole.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+UserRole.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+UserRole.prototype['ContactID'] = undefined;
+
+/**
+ * Role description
+ * @member {String} RoleDescription
+ */
+UserRole.prototype['RoleDescription'] = undefined;
+
+/**
+ * The Role ID
+ * @member {String} RoleID
+ */
+UserRole.prototype['RoleID'] = undefined;
+
+/**
+ * Role Name
+ * @member {String} RoleName
+ */
+UserRole.prototype['RoleName'] = undefined;
+
+/**
+ * Taxnexus Account Number
+ * @member {String} TaxnexusAccount
+ */
+UserRole.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+UserRole.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+UserRole.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+UserRole.prototype['UserID'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+UserRole.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default UserRole;
+
diff --git a/client/board/test/api/CorsApi.spec.js b/client/board/test/api/CorsApi.spec.js
new file mode 100644
index 0000000..5c2ae9f
--- /dev/null
+++ b/client/board/test/api/CorsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.CorsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('CorsApi', function() {
+ describe('developerOptions', function() {
+ it('should call developerOptions successfully', function(done) {
+ //uncomment below and update the code to test developerOptions
+ //instance.developerOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('iqOptions', function() {
+ it('should call iqOptions successfully', function(done) {
+ //uncomment below and update the code to test iqOptions
+ //instance.iqOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('leadsOptions', function() {
+ it('should call leadsOptions successfully', function(done) {
+ //uncomment below and update the code to test leadsOptions
+ //instance.leadsOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('userAuthOptions', function() {
+ it('should call userAuthOptions successfully', function(done) {
+ //uncomment below and update the code to test userAuthOptions
+ //instance.userAuthOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('userOptions', function() {
+ it('should call userOptions successfully', function(done) {
+ //uncomment below and update the code to test userOptions
+ //instance.userOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/api/DevelopersApi.spec.js b/client/board/test/api/DevelopersApi.spec.js
new file mode 100644
index 0000000..fb3c9cf
--- /dev/null
+++ b/client/board/test/api/DevelopersApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.DevelopersApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DevelopersApi', function() {
+ describe('postDevelopers', function() {
+ it('should call postDevelopers successfully', function(done) {
+ //uncomment below and update the code to test postDevelopers
+ //instance.postDevelopers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/api/IqApi.spec.js b/client/board/test/api/IqApi.spec.js
new file mode 100644
index 0000000..ba30749
--- /dev/null
+++ b/client/board/test/api/IqApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.IqApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('IqApi', function() {
+ describe('postIQ', function() {
+ it('should call postIQ successfully', function(done) {
+ //uncomment below and update the code to test postIQ
+ //instance.postIQ(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/api/LeadsApi.spec.js b/client/board/test/api/LeadsApi.spec.js
new file mode 100644
index 0000000..3a457ab
--- /dev/null
+++ b/client/board/test/api/LeadsApi.spec.js
@@ -0,0 +1,73 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.LeadsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('LeadsApi', function() {
+ describe('postLeads', function() {
+ it('should call postLeads successfully', function(done) {
+ //uncomment below and update the code to test postLeads
+ //instance.postLeads(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putLeads', function() {
+ it('should call putLeads successfully', function(done) {
+ //uncomment below and update the code to test putLeads
+ //instance.putLeads(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/api/UserAuthApi.spec.js b/client/board/test/api/UserAuthApi.spec.js
new file mode 100644
index 0000000..601a71a
--- /dev/null
+++ b/client/board/test/api/UserAuthApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.UserAuthApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserAuthApi', function() {
+ describe('getUserAuth', function() {
+ it('should call getUserAuth successfully', function(done) {
+ //uncomment below and update the code to test getUserAuth
+ //instance.getUserAuth(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/api/UsersApi.spec.js b/client/board/test/api/UsersApi.spec.js
new file mode 100644
index 0000000..cadc572
--- /dev/null
+++ b/client/board/test/api/UsersApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.UsersApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UsersApi', function() {
+ describe('getUsers', function() {
+ it('should call getUsers successfully', function(done) {
+ //uncomment below and update the code to test getUsers
+ //instance.getUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/board/test/model/Account.spec.js b/client/board/test/model/Account.spec.js
new file mode 100644
index 0000000..8ce0998
--- /dev/null
+++ b/client/board/test/model/Account.spec.js
@@ -0,0 +1,581 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Account();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Account', function() {
+ it('should create an instance of Account', function() {
+ // uncomment below and update the code to test Account
+ //var instance = new Board.Account();
+ //expect(instance).to.be.a(Board.Account);
+ });
+
+ it('should have the property accountNumber (base name: "AccountNumber")', function() {
+ // uncomment below and update the code to test the property accountNumber
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountSource (base name: "AccountSource")', function() {
+ // uncomment below and update the code to test the property accountSource
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property administrativeLevel (base name: "AdministrativeLevel")', function() {
+ // uncomment below and update the code to test the property administrativeLevel
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amount (base name: "Amount")', function() {
+ // uncomment below and update the code to test the property amount
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountInvoiced (base name: "AmountInvoiced")', function() {
+ // uncomment below and update the code to test the property amountInvoiced
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountPaid (base name: "AmountPaid")', function() {
+ // uncomment below and update the code to test the property amountPaid
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property annualRevenue (base name: "AnnualRevenue")', function() {
+ // uncomment below and update the code to test the property annualRevenue
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property balance (base name: "Balance")', function() {
+ // uncomment below and update the code to test the property balance
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingAddress (base name: "BillingAddress")', function() {
+ // uncomment below and update the code to test the property billingAddress
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingPreference (base name: "BillingPreference")', function() {
+ // uncomment below and update the code to test the property billingPreference
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property businessAddress (base name: "BusinessAddress")', function() {
+ // uncomment below and update the code to test the property businessAddress
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property cannabisCustomer (base name: "CannabisCustomer")', function() {
+ // uncomment below and update the code to test the property cannabisCustomer
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelProgramLevelName (base name: "ChannelProgramLevelName")', function() {
+ // uncomment below and update the code to test the property channelProgramLevelName
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelProgramName (base name: "ChannelProgramName")', function() {
+ // uncomment below and update the code to test the property channelProgramName
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientEndDate (base name: "ClientEndDate")', function() {
+ // uncomment below and update the code to test the property clientEndDate
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientStartDate (base name: "ClientStartDate")', function() {
+ // uncomment below and update the code to test the property clientStartDate
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property coordinateID (base name: "CoordinateID")', function() {
+ // uncomment below and update the code to test the property coordinateID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerID (base name: "CustomerID")', function() {
+ // uncomment below and update the code to test the property customerID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerPriority (base name: "CustomerPriority")', function() {
+ // uncomment below and update the code to test the property customerPriority
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property DBA (base name: "DBA")', function() {
+ // uncomment below and update the code to test the property DBA
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dUNSNumber (base name: "DUNSNumber")', function() {
+ // uncomment below and update the code to test the property dUNSNumber
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dandBCompanyID (base name: "DandBCompanyID")', function() {
+ // uncomment below and update the code to test the property dandBCompanyID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultAddress (base name: "DefaultAddress")', function() {
+ // uncomment below and update the code to test the property defaultAddress
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultBackendID (base name: "DefaultBackendID")', function() {
+ // uncomment below and update the code to test the property defaultBackendID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultDeliveryContactID (base name: "DefaultDeliveryContactID")', function() {
+ // uncomment below and update the code to test the property defaultDeliveryContactID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultEndUserID (base name: "DefaultEndUserID")', function() {
+ // uncomment below and update the code to test the property defaultEndUserID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property EIN (base name: "EIN")', function() {
+ // uncomment below and update the code to test the property EIN
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentStatus (base name: "EnrollmentStatus")', function() {
+ // uncomment below and update the code to test the property enrollmentStatus
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property iSPCustomer (base name: "ISPCustomer")', function() {
+ // uncomment below and update the code to test the property iSPCustomer
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property industry (base name: "Industry")', function() {
+ // uncomment below and update the code to test the property industry
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isCustomerPortal (base name: "IsCustomerPortal")', function() {
+ // uncomment below and update the code to test the property isCustomerPortal
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isPartner (base name: "IsPartner")', function() {
+ // uncomment below and update the code to test the property isPartner
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property jigSaw (base name: "JigSaw")', function() {
+ // uncomment below and update the code to test the property jigSaw
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mSPCustomer (base name: "MSPCustomer")', function() {
+ // uncomment below and update the code to test the property mSPCustomer
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property nAICSCode (base name: "NAICSCode")', function() {
+ // uncomment below and update the code to test the property nAICSCode
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property nAICSDesc (base name: "NAICSDesc")', function() {
+ // uncomment below and update the code to test the property nAICSDesc
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberOfEmployees (base name: "NumberOfEmployees")', function() {
+ // uncomment below and update the code to test the property numberOfEmployees
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberOfLocations (base name: "NumberOfLocations")', function() {
+ // uncomment below and update the code to test the property numberOfLocations
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property openCharges (base name: "OpenCharges")', function() {
+ // uncomment below and update the code to test the property openCharges
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property orderContactID (base name: "OrderContactID")', function() {
+ // uncomment below and update the code to test the property orderContactID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property orderEmail (base name: "OrderEmail")', function() {
+ // uncomment below and update the code to test the property orderEmail
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownership (base name: "Ownership")', function() {
+ // uncomment below and update the code to test the property ownership
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentFK (base name: "ParentFK")', function() {
+ // uncomment below and update the code to test the property parentFK
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentID (base name: "ParentID")', function() {
+ // uncomment below and update the code to test the property parentID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property placeID (base name: "PlaceID")', function() {
+ // uncomment below and update the code to test the property placeID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property preparerID (base name: "PreparerID")', function() {
+ // uncomment below and update the code to test the property preparerID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property rating (base name: "Rating")', function() {
+ // uncomment below and update the code to test the property rating
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ratingEngineID (base name: "RatingEngineID")', function() {
+ // uncomment below and update the code to test the property ratingEngineID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueBase (base name: "RevenueBase")', function() {
+ // uncomment below and update the code to test the property revenueBase
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueNet (base name: "RevenueNet")', function() {
+ // uncomment below and update the code to test the property revenueNet
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueNotTaxable (base name: "RevenueNotTaxable")', function() {
+ // uncomment below and update the code to test the property revenueNotTaxable
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property SIC (base name: "SIC")', function() {
+ // uncomment below and update the code to test the property SIC
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sICDesc (base name: "SICDesc")', function() {
+ // uncomment below and update the code to test the property sICDesc
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingAddress (base name: "ShippingAddress")', function() {
+ // uncomment below and update the code to test the property shippingAddress
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingCensusTract (base name: "ShippingCensusTract")', function() {
+ // uncomment below and update the code to test the property shippingCensusTract
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingConactID (base name: "ShippingConactID")', function() {
+ // uncomment below and update the code to test the property shippingConactID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingCounty (base name: "ShippingCounty")', function() {
+ // uncomment below and update the code to test the property shippingCounty
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property site (base name: "Site")', function() {
+ // uncomment below and update the code to test the property site
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxExemption (base name: "TaxExemption")', function() {
+ // uncomment below and update the code to test the property taxExemption
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxOnTax (base name: "TaxOnTax")', function() {
+ // uncomment below and update the code to test the property taxOnTax
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property telecomCustomer (base name: "TelecomCustomer")', function() {
+ // uncomment below and update the code to test the property telecomCustomer
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tickerSymbol (base name: "TickerSymbol")', function() {
+ // uncomment below and update the code to test the property tickerSymbol
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tradeStyle (base name: "TradeStyle")', function() {
+ // uncomment below and update the code to test the property tradeStyle
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unappliedPayments (base name: "UnappliedPayments")', function() {
+ // uncomment below and update the code to test the property unappliedPayments
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unitBase (base name: "UnitBase")', function() {
+ // uncomment below and update the code to test the property unitBase
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property upsellOpportunity (base name: "UpsellOpportunity")', function() {
+ // uncomment below and update the code to test the property upsellOpportunity
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property wHMCSClientID (base name: "WHMCSClientID")', function() {
+ // uncomment below and update the code to test the property wHMCSClientID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "Website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property xeroContactID (base name: "XeroContactID")', function() {
+ // uncomment below and update the code to test the property xeroContactID
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property yearStarted (base name: "YearStarted")', function() {
+ // uncomment below and update the code to test the property yearStarted
+ //var instance = new Board.Account();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Address.spec.js b/client/board/test/model/Address.spec.js
new file mode 100644
index 0000000..b36849e
--- /dev/null
+++ b/client/board/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new Board.Address();
+ //expect(instance).to.be.a(Board.Address);
+ });
+
+ it('should have the property city (base name: "City")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "Country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countryCode (base name: "CountryCode")', function() {
+ // uncomment below and update the code to test the property countryCode
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalCode (base name: "PostalCode")', function() {
+ // uncomment below and update the code to test the property postalCode
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "State")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stateCode (base name: "StateCode")', function() {
+ // uncomment below and update the code to test the property stateCode
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "Street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new Board.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Contact.spec.js b/client/board/test/model/Contact.spec.js
new file mode 100644
index 0000000..8f799ad
--- /dev/null
+++ b/client/board/test/model/Contact.spec.js
@@ -0,0 +1,329 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Contact();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Contact', function() {
+ it('should create an instance of Contact', function() {
+ // uncomment below and update the code to test Contact
+ //var instance = new Board.Contact();
+ //expect(instance).to.be.a(Board.Contact);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantName (base name: "AssistantName")', function() {
+ // uncomment below and update the code to test the property assistantName
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantPhone (base name: "AssistantPhone")', function() {
+ // uncomment below and update the code to test the property assistantPhone
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property birthDate (base name: "BirthDate")', function() {
+ // uncomment below and update the code to test the property birthDate
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "Department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property doNotCall (base name: "DoNotCall")', function() {
+ // uncomment below and update the code to test the property doNotCall
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailBounceDate (base name: "EmailBounceDate")', function() {
+ // uncomment below and update the code to test the property emailBounceDate
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailBouncedReason (base name: "EmailBouncedReason")', function() {
+ // uncomment below and update the code to test the property emailBouncedReason
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentStatus (base name: "EnrollmentStatus")', function() {
+ // uncomment below and update the code to test the property enrollmentStatus
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasOptedOutOfEmail (base name: "HasOptedOutOfEmail")', function() {
+ // uncomment below and update the code to test the property hasOptedOutOfEmail
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasOptedOutOfFax (base name: "HasOptedOutOfFax")', function() {
+ // uncomment below and update the code to test the property hasOptedOutOfFax
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property homePhone (base name: "HomePhone")', function() {
+ // uncomment below and update the code to test the property homePhone
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isEmailBounced (base name: "IsEmailBounced")', function() {
+ // uncomment below and update the code to test the property isEmailBounced
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isProvisioned (base name: "IsProvisioned")', function() {
+ // uncomment below and update the code to test the property isProvisioned
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property leadSource (base name: "LeadSource")', function() {
+ // uncomment below and update the code to test the property leadSource
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property level (base name: "Level")', function() {
+ // uncomment below and update the code to test the property level
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property linkedIn (base name: "LinkedIn")', function() {
+ // uncomment below and update the code to test the property linkedIn
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailingAddress (base name: "MailingAddress")', function() {
+ // uncomment below and update the code to test the property mailingAddress
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailingLists (base name: "MailingLists")', function() {
+ // uncomment below and update the code to test the property mailingLists
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otherAddress (base name: "OtherAddress")', function() {
+ // uncomment below and update the code to test the property otherAddress
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otherPhone (base name: "OtherPhone")', function() {
+ // uncomment below and update the code to test the property otherPhone
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property personalEmail (base name: "PersonalEmail")', function() {
+ // uncomment below and update the code to test the property personalEmail
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property photoURL (base name: "PhotoURL")', function() {
+ // uncomment below and update the code to test the property photoURL
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recruitingStatus (base name: "RecruitingStatus")', function() {
+ // uncomment below and update the code to test the property recruitingStatus
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property reportsToID (base name: "ReportsToID")', function() {
+ // uncomment below and update the code to test the property reportsToID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property salutation (base name: "Salutation")', function() {
+ // uncomment below and update the code to test the property salutation
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Board.Contact();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Database.spec.js b/client/board/test/model/Database.spec.js
new file mode 100644
index 0000000..d5faa6f
--- /dev/null
+++ b/client/board/test/model/Database.spec.js
@@ -0,0 +1,137 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Database();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Database', function() {
+ it('should create an instance of Database', function() {
+ // uncomment below and update the code to test Database
+ //var instance = new Board.Database();
+ //expect(instance).to.be.a(Board.Database);
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clusterID (base name: "ClusterID")', function() {
+ // uncomment below and update the code to test the property clusterID
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property DSN (base name: "DSN")', function() {
+ // uncomment below and update the code to test the property DSN
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databaseName (base name: "DatabaseName")', function() {
+ // uncomment below and update the code to test the property databaseName
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property microservices (base name: "Microservices")', function() {
+ // uncomment below and update the code to test the property microservices
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Board.Database();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Developer.spec.js b/client/board/test/model/Developer.spec.js
new file mode 100644
index 0000000..6062077
--- /dev/null
+++ b/client/board/test/model/Developer.spec.js
@@ -0,0 +1,77 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Developer();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Developer', function() {
+ it('should create an instance of Developer', function() {
+ // uncomment below and update the code to test Developer
+ //var instance = new Board.Developer();
+ //expect(instance).to.be.a(Board.Developer);
+ });
+
+ it('should have the property account (base name: "Account")', function() {
+ // uncomment below and update the code to test the property account
+ //var instance = new Board.Developer();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Board.Developer();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentMethod (base name: "PaymentMethod")', function() {
+ // uncomment below and update the code to test the property paymentMethod
+ //var instance = new Board.Developer();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Error.spec.js b/client/board/test/model/Error.spec.js
new file mode 100644
index 0000000..6a5684d
--- /dev/null
+++ b/client/board/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Board.Error();
+ //expect(instance).to.be.a(Board.Error);
+ });
+
+ it('should have the property code (base name: "code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Board.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Board.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Board.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/IQ.spec.js b/client/board/test/model/IQ.spec.js
new file mode 100644
index 0000000..c98987f
--- /dev/null
+++ b/client/board/test/model/IQ.spec.js
@@ -0,0 +1,95 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.IQ();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('IQ', function() {
+ it('should create an instance of IQ', function() {
+ // uncomment below and update the code to test IQ
+ //var instance = new Board.IQ();
+ //expect(instance).to.be.a(Board.IQ);
+ });
+
+ it('should have the property account (base name: "Account")', function() {
+ // uncomment below and update the code to test the property account
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lead (base name: "Lead")', function() {
+ // uncomment below and update the code to test the property lead
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentMethod (base name: "PaymentMethod")', function() {
+ // uncomment below and update the code to test the property paymentMethod
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenant (base name: "Tenant")', function() {
+ // uncomment below and update the code to test the property tenant
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property user (base name: "User")', function() {
+ // uncomment below and update the code to test the property user
+ //var instance = new Board.IQ();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Lead.spec.js b/client/board/test/model/Lead.spec.js
new file mode 100644
index 0000000..7d3d211
--- /dev/null
+++ b/client/board/test/model/Lead.spec.js
@@ -0,0 +1,197 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Lead();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Lead', function() {
+ it('should create an instance of Lead', function() {
+ // uncomment below and update the code to test Lead
+ //var instance = new Board.Lead();
+ //expect(instance).to.be.a(Board.Lead);
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property company (base name: "Company")', function() {
+ // uncomment below and update the code to test the property company
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerId (base name: "OwnerId")', function() {
+ // uncomment below and update the code to test the property ownerId
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property partnerAccountId (base name: "PartnerAccountId")', function() {
+ // uncomment below and update the code to test the property partnerAccountId
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property productID (base name: "ProductID")', function() {
+ // uncomment below and update the code to test the property productID
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property refererURL (base name: "RefererURL")', function() {
+ // uncomment below and update the code to test the property refererURL
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMCampaign (base name: "UTMCampaign")', function() {
+ // uncomment below and update the code to test the property uTMCampaign
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMContent (base name: "UTMContent")', function() {
+ // uncomment below and update the code to test the property uTMContent
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMMedium (base name: "UTMMedium")', function() {
+ // uncomment below and update the code to test the property uTMMedium
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMSource (base name: "UTMSource")', function() {
+ // uncomment below and update the code to test the property uTMSource
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMTerm (base name: "UTMTerm")', function() {
+ // uncomment below and update the code to test the property uTMTerm
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "Website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new Board.Lead();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/PaymentMethod.spec.js b/client/board/test/model/PaymentMethod.spec.js
new file mode 100644
index 0000000..b1dbf12
--- /dev/null
+++ b/client/board/test/model/PaymentMethod.spec.js
@@ -0,0 +1,215 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.PaymentMethod();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('PaymentMethod', function() {
+ it('should create an instance of PaymentMethod', function() {
+ // uncomment below and update the code to test PaymentMethod
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be.a(Board.PaymentMethod);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property achAccountType (base name: "AchAccountType")', function() {
+ // uncomment below and update the code to test the property achAccountType
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property achBankAccount (base name: "AchBankAccount")', function() {
+ // uncomment below and update the code to test the property achBankAccount
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property achRouting (base name: "AchRouting")', function() {
+ // uncomment below and update the code to test the property achRouting
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property autopay (base name: "Autopay")', function() {
+ // uncomment below and update the code to test the property autopay
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property bankName (base name: "BankName")', function() {
+ // uncomment below and update the code to test the property bankName
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property cCnumber (base name: "CCnumber")', function() {
+ // uncomment below and update the code to test the property cCnumber
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property cCtype (base name: "CCtype")', function() {
+ // uncomment below and update the code to test the property cCtype
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contractID (base name: "ContractID")', function() {
+ // uncomment below and update the code to test the property contractID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property _default (base name: "Default")', function() {
+ // uncomment below and update the code to test the property _default
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property expirationDate (base name: "ExpirationDate")', function() {
+ // uncomment below and update the code to test the property expirationDate
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property expirationMonth (base name: "ExpirationMonth")', function() {
+ // uncomment below and update the code to test the property expirationMonth
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property expirationYear (base name: "ExpirationYear")', function() {
+ // uncomment below and update the code to test the property expirationYear
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property gateway (base name: "Gateway")', function() {
+ // uncomment below and update the code to test the property gateway
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property gatewayKey (base name: "GatewayKey")', function() {
+ // uncomment below and update the code to test the property gatewayKey
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property nickname (base name: "Nickname")', function() {
+ // uncomment below and update the code to test the property nickname
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recordType (base name: "RecordType")', function() {
+ // uncomment below and update the code to test the property recordType
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Board.PaymentMethod();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Role.spec.js b/client/board/test/model/Role.spec.js
new file mode 100644
index 0000000..910b259
--- /dev/null
+++ b/client/board/test/model/Role.spec.js
@@ -0,0 +1,113 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Role();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Role', function() {
+ it('should create an instance of Role', function() {
+ // uncomment below and update the code to test Role
+ //var instance = new Board.Role();
+ //expect(instance).to.be.a(Board.Role);
+ });
+
+ it('should have the property auth0RoleID (base name: "Auth0RoleID")', function() {
+ // uncomment below and update the code to test the property auth0RoleID
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleName (base name: "RoleName")', function() {
+ // uncomment below and update the code to test the property roleName
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Board.Role();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/RuleExecution.spec.js b/client/board/test/model/RuleExecution.spec.js
new file mode 100644
index 0000000..fc01e23
--- /dev/null
+++ b/client/board/test/model/RuleExecution.spec.js
@@ -0,0 +1,83 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.RuleExecution();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RuleExecution', function() {
+ it('should create an instance of RuleExecution', function() {
+ // uncomment below and update the code to test RuleExecution
+ //var instance = new Board.RuleExecution();
+ //expect(instance).to.be.a(Board.RuleExecution);
+ });
+
+ it('should have the property sagaID (base name: "SagaID")', function() {
+ // uncomment below and update the code to test the property sagaID
+ //var instance = new Board.RuleExecution();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sagaType (base name: "SagaType")', function() {
+ // uncomment below and update the code to test the property sagaType
+ //var instance = new Board.RuleExecution();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ruleID (base name: "RuleID")', function() {
+ // uncomment below and update the code to test the property ruleID
+ //var instance = new Board.RuleExecution();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property runID (base name: "RunID")', function() {
+ // uncomment below and update the code to test the property runID
+ //var instance = new Board.RuleExecution();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/Tenant.spec.js b/client/board/test/model/Tenant.spec.js
new file mode 100644
index 0000000..d92987b
--- /dev/null
+++ b/client/board/test/model/Tenant.spec.js
@@ -0,0 +1,143 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.Tenant();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Tenant', function() {
+ it('should create an instance of Tenant', function() {
+ // uncomment below and update the code to test Tenant
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be.a(Board.Tenant);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databases (base name: "Databases")', function() {
+ // uncomment below and update the code to test the property databases
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roles (base name: "Roles")', function() {
+ // uncomment below and update the code to test the property roles
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantName (base name: "TenantName")', function() {
+ // uncomment below and update the code to test the property tenantName
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantUsers (base name: "TenantUsers")', function() {
+ // uncomment below and update the code to test the property tenantUsers
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property version (base name: "Version")', function() {
+ // uncomment below and update the code to test the property version
+ //var instance = new Board.Tenant();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/TenantUser.spec.js b/client/board/test/model/TenantUser.spec.js
new file mode 100644
index 0000000..aa4b87e
--- /dev/null
+++ b/client/board/test/model/TenantUser.spec.js
@@ -0,0 +1,155 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.TenantUser();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantUser', function() {
+ it('should create an instance of TenantUser', function() {
+ // uncomment below and update the code to test TenantUser
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be.a(Board.TenantUser);
+ });
+
+ it('should have the property accessLevel (base name: "AccessLevel")', function() {
+ // uncomment below and update the code to test the property accessLevel
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantActive (base name: "TenantActive")', function() {
+ // uncomment below and update the code to test the property tenantActive
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantName (base name: "TenantName")', function() {
+ // uncomment below and update the code to test the property tenantName
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantStatus (base name: "TenantStatus")', function() {
+ // uncomment below and update the code to test the property tenantStatus
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantType (base name: "TenantType")', function() {
+ // uncomment below and update the code to test the property tenantType
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantVersion (base name: "TenantVersion")', function() {
+ // uncomment below and update the code to test the property tenantVersion
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Board.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/User.spec.js b/client/board/test/model/User.spec.js
new file mode 100644
index 0000000..22920cd
--- /dev/null
+++ b/client/board/test/model/User.spec.js
@@ -0,0 +1,407 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.User();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('User', function() {
+ it('should create an instance of User', function() {
+ // uncomment below and update the code to test User
+ //var instance = new Board.User();
+ //expect(instance).to.be.a(Board.User);
+ });
+
+ it('should have the property aPIKey (base name: "APIKey")', function() {
+ // uncomment below and update the code to test the property aPIKey
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property aboutMe (base name: "AboutMe")', function() {
+ // uncomment below and update the code to test the property aboutMe
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property alias (base name: "Alias")', function() {
+ // uncomment below and update the code to test the property alias
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property communityNickname (base name: "CommunityNickname")', function() {
+ // uncomment below and update the code to test the property communityNickname
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property delegatedApproverID (base name: "DelegatedApproverID")', function() {
+ // uncomment below and update the code to test the property delegatedApproverID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "Department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property division (base name: "Division")', function() {
+ // uncomment below and update the code to test the property division
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property employeeNumber (base name: "EmployeeNumber")', function() {
+ // uncomment below and update the code to test the property employeeNumber
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endOfDay (base name: "EndOfDay")', function() {
+ // uncomment below and update the code to test the property endOfDay
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "Environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property extension (base name: "Extension")', function() {
+ // uncomment below and update the code to test the property extension
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fabricAPIKey (base name: "FabricAPIKey")', function() {
+ // uncomment below and update the code to test the property fabricAPIKey
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property forecastEnabled (base name: "ForecastEnabled")', function() {
+ // uncomment below and update the code to test the property forecastEnabled
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fullPhotoURL (base name: "FullPhotoURL")', function() {
+ // uncomment below and update the code to test the property fullPhotoURL
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isActive (base name: "IsActive")', function() {
+ // uncomment below and update the code to test the property isActive
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isPortalEnabled (base name: "IsPortalEnabled")', function() {
+ // uncomment below and update the code to test the property isPortalEnabled
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isProphilePhotoActive (base name: "IsProphilePhotoActive")', function() {
+ // uncomment below and update the code to test the property isProphilePhotoActive
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isSystemControlled (base name: "IsSystemControlled")', function() {
+ // uncomment below and update the code to test the property isSystemControlled
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastIP (base name: "LastIP")', function() {
+ // uncomment below and update the code to test the property lastIP
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastLogin (base name: "LastLogin")', function() {
+ // uncomment below and update the code to test the property lastLogin
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property loginCount (base name: "LoginCount")', function() {
+ // uncomment below and update the code to test the property loginCount
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property managerID (base name: "ManagerID")', function() {
+ // uncomment below and update the code to test the property managerID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property outOfOfficeMessage (base name: "OutOfOfficeMessage")', function() {
+ // uncomment below and update the code to test the property outOfOfficeMessage
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property portalRole (base name: "PortalRole")', function() {
+ // uncomment below and update the code to test the property portalRole
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property profileID (base name: "ProfileID")', function() {
+ // uncomment below and update the code to test the property profileID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminEmails (base name: "ReceivesAdminEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminEmails
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminInfoEmails (base name: "ReceivesAdminInfoEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminInfoEmails
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderEmail (base name: "SenderEmail")', function() {
+ // uncomment below and update the code to test the property senderEmail
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderName (base name: "SenderName")', function() {
+ // uncomment below and update the code to test the property senderName
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property signature (base name: "Signature")', function() {
+ // uncomment below and update the code to test the property signature
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property smallPhotoURL (base name: "SmallPhotoURL")', function() {
+ // uncomment below and update the code to test the property smallPhotoURL
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startOfDay (base name: "StartOfDay")', function() {
+ // uncomment below and update the code to test the property startOfDay
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantUsers (base name: "TenantUsers")', function() {
+ // uncomment below and update the code to test the property tenantUsers
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property timeZone (base name: "TimeZone")', function() {
+ // uncomment below and update the code to test the property timeZone
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoleID (base name: "UserRoleID")', function() {
+ // uncomment below and update the code to test the property userRoleID
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoles (base name: "UserRoles")', function() {
+ // uncomment below and update the code to test the property userRoles
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userType (base name: "UserType")', function() {
+ // uncomment below and update the code to test the property userType
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Board.User();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/UserAuth.spec.js b/client/board/test/model/UserAuth.spec.js
new file mode 100644
index 0000000..313b709
--- /dev/null
+++ b/client/board/test/model/UserAuth.spec.js
@@ -0,0 +1,101 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.UserAuth();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserAuth', function() {
+ it('should create an instance of UserAuth', function() {
+ // uncomment below and update the code to test UserAuth
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be.a(Board.UserAuth);
+ });
+
+ it('should have the property aPIKey (base name: "APIKey")', function() {
+ // uncomment below and update the code to test the property aPIKey
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roles (base name: "Roles")', function() {
+ // uncomment below and update the code to test the property roles
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenants (base name: "Tenants")', function() {
+ // uncomment below and update the code to test the property tenants
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Board.UserAuth();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/board/test/model/UserRole.spec.js b/client/board/test/model/UserRole.spec.js
new file mode 100644
index 0000000..f0b2071
--- /dev/null
+++ b/client/board/test/model/UserRole.spec.js
@@ -0,0 +1,137 @@
+/**
+ * board
+ * Taxnexus Onboarding Service
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Board);
+ }
+}(this, function(expect, Board) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Board.UserRole();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserRole', function() {
+ it('should create an instance of UserRole', function() {
+ // uncomment below and update the code to test UserRole
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be.a(Board.UserRole);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0RoleID (base name: "Auth0RoleID")', function() {
+ // uncomment below and update the code to test the property auth0RoleID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleDescription (base name: "RoleDescription")', function() {
+ // uncomment below and update the code to test the property roleDescription
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleID (base name: "RoleID")', function() {
+ // uncomment below and update the code to test the property roleID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleName (base name: "RoleName")', function() {
+ // uncomment below and update the code to test the property roleName
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Board.UserRole();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/.babelrc b/client/crm/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/crm/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/crm/.gitignore b/client/crm/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/crm/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/crm/.openapi-generator-ignore b/client/crm/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/crm/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/crm/.openapi-generator/FILES b/client/crm/.openapi-generator/FILES
new file mode 100644
index 0000000..a336e8f
--- /dev/null
+++ b/client/crm/.openapi-generator/FILES
@@ -0,0 +1,106 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Account.md
+docs/AccountBasic.md
+docs/AccountBasicResponse.md
+docs/AccountRequest.md
+docs/AccountResponse.md
+docs/AccountsApi.md
+docs/Address.md
+docs/Asset.md
+docs/AssetRequest.md
+docs/AssetResponse.md
+docs/AssetsApi.md
+docs/Contact.md
+docs/ContactRequest.md
+docs/ContactResponse.md
+docs/ContactsApi.md
+docs/Contract.md
+docs/ContractRequest.md
+docs/ContractResponse.md
+docs/ContractsApi.md
+docs/CorsApi.md
+docs/DeleteResponse.md
+docs/Error.md
+docs/InvalidError.md
+docs/InvalidErrorAllOf.md
+docs/Lead.md
+docs/LeadRequest.md
+docs/LeadResponse.md
+docs/LeadsApi.md
+docs/Message.md
+docs/Pagination.md
+docs/RequestMeta.md
+docs/ResponseMeta.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/AccountsApi.js
+src/api/AssetsApi.js
+src/api/ContactsApi.js
+src/api/ContractsApi.js
+src/api/CorsApi.js
+src/api/LeadsApi.js
+src/index.js
+src/model/Account.js
+src/model/AccountBasic.js
+src/model/AccountBasicResponse.js
+src/model/AccountRequest.js
+src/model/AccountResponse.js
+src/model/Address.js
+src/model/Asset.js
+src/model/AssetRequest.js
+src/model/AssetResponse.js
+src/model/Contact.js
+src/model/ContactRequest.js
+src/model/ContactResponse.js
+src/model/Contract.js
+src/model/ContractRequest.js
+src/model/ContractResponse.js
+src/model/DeleteResponse.js
+src/model/Error.js
+src/model/InvalidError.js
+src/model/InvalidErrorAllOf.js
+src/model/Lead.js
+src/model/LeadRequest.js
+src/model/LeadResponse.js
+src/model/Message.js
+src/model/Pagination.js
+src/model/RequestMeta.js
+src/model/ResponseMeta.js
+test/api/AccountsApi.spec.js
+test/api/AssetsApi.spec.js
+test/api/ContactsApi.spec.js
+test/api/ContractsApi.spec.js
+test/api/CorsApi.spec.js
+test/api/LeadsApi.spec.js
+test/model/Account.spec.js
+test/model/AccountBasic.spec.js
+test/model/AccountBasicResponse.spec.js
+test/model/AccountRequest.spec.js
+test/model/AccountResponse.spec.js
+test/model/Address.spec.js
+test/model/Asset.spec.js
+test/model/AssetRequest.spec.js
+test/model/AssetResponse.spec.js
+test/model/Contact.spec.js
+test/model/ContactRequest.spec.js
+test/model/ContactResponse.spec.js
+test/model/Contract.spec.js
+test/model/ContractRequest.spec.js
+test/model/ContractResponse.spec.js
+test/model/DeleteResponse.spec.js
+test/model/Error.spec.js
+test/model/InvalidError.spec.js
+test/model/InvalidErrorAllOf.spec.js
+test/model/Lead.spec.js
+test/model/LeadRequest.spec.js
+test/model/LeadResponse.spec.js
+test/model/Message.spec.js
+test/model/Pagination.spec.js
+test/model/RequestMeta.spec.js
+test/model/ResponseMeta.spec.js
diff --git a/client/crm/.openapi-generator/VERSION b/client/crm/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/crm/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/crm/.travis.yml b/client/crm/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/crm/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/crm/README.md b/client/crm/README.md
new file mode 100644
index 0000000..a0b0fd3
--- /dev/null
+++ b/client/crm/README.md
@@ -0,0 +1,208 @@
+# crm
+
+Crm - JavaScript client for crm
+Customer Information Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install crm --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your crm from, and run:
+
+```shell
+npm link /path/to/
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+#### git
+
+If the library is hosted at a git repository, e.g.https://github.com/GIT_USER_ID/GIT_REPO_ID
+then install it via:
+
+```shell
+ npm install GIT_USER_ID/GIT_REPO_ID --save
+```
+
+### For browser
+
+The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
+the above steps with Node.js and installing browserify with `npm install -g browserify`,
+perform the following (assuming *main.js* is your entry file):
+
+```shell
+browserify main.js > bundle.js
+```
+
+Then include *bundle.js* in the HTML pages.
+
+### Webpack Configuration
+
+Using Webpack you may encounter the following error: "Module not found: Error:
+Cannot resolve module", most certainly you should disable AMD loader. Add/merge
+the following section to your webpack config:
+
+```javascript
+module: {
+ rules: [
+ {
+ parser: {
+ amd: false
+ }
+ }
+ ]
+}
+```
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following JS code:
+
+```javascript
+var Crm = require('crm');
+
+var defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+var ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = "YOUR API KEY"
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix['X-API-Key'] = "Token"
+
+var api = new Crm.AccountsApi()
+var opts = {
+ 'accountId': "accountId_example" // {String} Taxnexus Record Id of an Account
+};
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.deleteAccount(opts, callback);
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*Crm.AccountsApi* | [**deleteAccount**](docs/AccountsApi.md#deleteAccount) | **DELETE** /accounts | Delete An Account
+*Crm.AccountsApi* | [**getAccounts**](docs/AccountsApi.md#getAccounts) | **GET** /accounts | Get a list of accounts
+*Crm.AccountsApi* | [**getAccountsObservable**](docs/AccountsApi.md#getAccountsObservable) | **GET** /accounts/observable | Get Taxnexus Accounts in an observable array
+*Crm.AccountsApi* | [**postAccounts**](docs/AccountsApi.md#postAccounts) | **POST** /accounts | Add a new account to Taxnexus
+*Crm.AccountsApi* | [**putAccount**](docs/AccountsApi.md#putAccount) | **PUT** /accounts | Update a single account
+*Crm.AssetsApi* | [**deleteAsset**](docs/AssetsApi.md#deleteAsset) | **DELETE** /assets | Delete An Asset
+*Crm.AssetsApi* | [**getAssets**](docs/AssetsApi.md#getAssets) | **GET** /assets | Get a list of assets
+*Crm.AssetsApi* | [**getAssetsObservable**](docs/AssetsApi.md#getAssetsObservable) | **GET** /assets/observable | Get Taxnexus Assets in an observable array
+*Crm.AssetsApi* | [**postAssets**](docs/AssetsApi.md#postAssets) | **POST** /assets | Add a new asset to Taxnexus
+*Crm.AssetsApi* | [**putAsset**](docs/AssetsApi.md#putAsset) | **PUT** /assets | Update a single asset
+*Crm.ContactsApi* | [**deleteContact**](docs/ContactsApi.md#deleteContact) | **DELETE** /contacts | Delete a Contact
+*Crm.ContactsApi* | [**getContacts**](docs/ContactsApi.md#getContacts) | **GET** /contacts | Get a list of contacts
+*Crm.ContactsApi* | [**getContactsObservable**](docs/ContactsApi.md#getContactsObservable) | **GET** /contacts/observable | Get Taxnexus Contacts in an observable array
+*Crm.ContactsApi* | [**postContacts**](docs/ContactsApi.md#postContacts) | **POST** /contacts | Add new contacts
+*Crm.ContactsApi* | [**putContacts**](docs/ContactsApi.md#putContacts) | **PUT** /contacts | Update Contact
+*Crm.ContractsApi* | [**deleteContract**](docs/ContractsApi.md#deleteContract) | **DELETE** /contracts | Delete An Contract
+*Crm.ContractsApi* | [**getContracts**](docs/ContractsApi.md#getContracts) | **GET** /contracts | Get a list of contracts
+*Crm.ContractsApi* | [**getContractsObservable**](docs/ContractsApi.md#getContractsObservable) | **GET** /contracts/observable | Get Taxnexus Contracts in an observable array
+*Crm.ContractsApi* | [**postContracts**](docs/ContractsApi.md#postContracts) | **POST** /contracts | Add a new contract to Taxnexus
+*Crm.ContractsApi* | [**putContract**](docs/ContractsApi.md#putContract) | **PUT** /contracts | Update a single contract
+*Crm.CorsApi* | [**accountOptions**](docs/CorsApi.md#accountOptions) | **OPTIONS** /accounts |
+*Crm.CorsApi* | [**accountOptionsObservable**](docs/CorsApi.md#accountOptionsObservable) | **OPTIONS** /accounts/observable |
+*Crm.CorsApi* | [**assetOptions**](docs/CorsApi.md#assetOptions) | **OPTIONS** /assets |
+*Crm.CorsApi* | [**assetOptionsObservable**](docs/CorsApi.md#assetOptionsObservable) | **OPTIONS** /assets/observable |
+*Crm.CorsApi* | [**contactOptions**](docs/CorsApi.md#contactOptions) | **OPTIONS** /contacts |
+*Crm.CorsApi* | [**contactOptionsObservable**](docs/CorsApi.md#contactOptionsObservable) | **OPTIONS** /contacts/observable |
+*Crm.CorsApi* | [**contractOptions**](docs/CorsApi.md#contractOptions) | **OPTIONS** /contracts |
+*Crm.CorsApi* | [**contractOptionsObservable**](docs/CorsApi.md#contractOptionsObservable) | **OPTIONS** /contracts/observable |
+*Crm.CorsApi* | [**leadOptions**](docs/CorsApi.md#leadOptions) | **OPTIONS** /leads |
+*Crm.CorsApi* | [**leadOptionsObservable**](docs/CorsApi.md#leadOptionsObservable) | **OPTIONS** /leads/observable |
+*Crm.LeadsApi* | [**deleteLead**](docs/LeadsApi.md#deleteLead) | **DELETE** /leads | Delete a Contact
+*Crm.LeadsApi* | [**getLeads**](docs/LeadsApi.md#getLeads) | **GET** /leads | Get a list of contacts
+*Crm.LeadsApi* | [**getLeadsObservable**](docs/LeadsApi.md#getLeadsObservable) | **GET** /leads/observable | Get Taxnexus Leads in an observable array
+*Crm.LeadsApi* | [**postLeads**](docs/LeadsApi.md#postLeads) | **POST** /leads | Add new Leads
+*Crm.LeadsApi* | [**putLeads**](docs/LeadsApi.md#putLeads) | **PUT** /leads | Update Leads
+
+
+## Documentation for Models
+
+ - [Crm.Account](docs/Account.md)
+ - [Crm.AccountBasic](docs/AccountBasic.md)
+ - [Crm.AccountBasicResponse](docs/AccountBasicResponse.md)
+ - [Crm.AccountRequest](docs/AccountRequest.md)
+ - [Crm.AccountResponse](docs/AccountResponse.md)
+ - [Crm.Address](docs/Address.md)
+ - [Crm.Asset](docs/Asset.md)
+ - [Crm.AssetRequest](docs/AssetRequest.md)
+ - [Crm.AssetResponse](docs/AssetResponse.md)
+ - [Crm.Contact](docs/Contact.md)
+ - [Crm.ContactRequest](docs/ContactRequest.md)
+ - [Crm.ContactResponse](docs/ContactResponse.md)
+ - [Crm.Contract](docs/Contract.md)
+ - [Crm.ContractRequest](docs/ContractRequest.md)
+ - [Crm.ContractResponse](docs/ContractResponse.md)
+ - [Crm.DeleteResponse](docs/DeleteResponse.md)
+ - [Crm.Error](docs/Error.md)
+ - [Crm.InvalidError](docs/InvalidError.md)
+ - [Crm.InvalidErrorAllOf](docs/InvalidErrorAllOf.md)
+ - [Crm.Lead](docs/Lead.md)
+ - [Crm.LeadRequest](docs/LeadRequest.md)
+ - [Crm.LeadResponse](docs/LeadResponse.md)
+ - [Crm.Message](docs/Message.md)
+ - [Crm.Pagination](docs/Pagination.md)
+ - [Crm.RequestMeta](docs/RequestMeta.md)
+ - [Crm.ResponseMeta](docs/ResponseMeta.md)
+
+
+## Documentation for Authorization
+
+
+
+### ApiKeyAuth
+
+
+- **Type**: API key
+- **API key parameter name**: X-API-Key
+- **Location**: HTTP header
+
diff --git a/client/crm/docs/Account.md b/client/crm/docs/Account.md
new file mode 100644
index 0000000..cd60c50
--- /dev/null
+++ b/client/crm/docs/Account.md
@@ -0,0 +1,96 @@
+# Crm.Account
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountNumber** | **String** | Account Number | [optional]
+**accountSource** | **String** | The marketing origin of this account | [optional]
+**active** | **Boolean** | Active | [optional]
+**administrativeLevel** | **String** | For tax authorities, this account's administrative level, e.g. Local, County, State or Federal | [optional]
+**amount** | **Number** | Rollup Tax Amount | [optional]
+**amountInvoiced** | **Number** | Amount Invoiced | [optional]
+**amountPaid** | **Number** | Amount Paid | [optional]
+**annualRevenue** | **Number** | Annual Revenue Estimate | [optional]
+**balance** | **Number** | Account Balance | [optional]
+**billingAddress** | [**Address**](Address.md) | | [optional]
+**billingContactID** | **String** | Contact ID | [optional]
+**billingPreference** | **String** | Billing Preference | [optional]
+**businessAddress** | [**Address**](Address.md) | | [optional]
+**cannabisCustomer** | **Boolean** | Is this a cannabis customer? | [optional]
+**channelProgramLevelName** | **String** | Channel Program Level Name | [optional]
+**channelProgramName** | **String** | Channel Program Name | [optional]
+**clientEndDate** | **String** | Client End Date | [optional]
+**clientStartDate** | **String** | Client Start Date | [optional]
+**companyID** | **String** | The Company ID of this Account | [optional]
+**coordinateID** | **String** | The Id of the geo coordinates of this account | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**customerID** | **String** | Customer ID from source system | [optional]
+**customerPriority** | **String** | Customer Priority | [optional]
+**DBA** | **String** | This Account's 'Doing Business As' name | [optional]
+**dUNSNumber** | **String** | D-U-N-S Number | [optional]
+**dandBCompanyID** | **String** | D-n-B Company | [optional]
+**defaultAddress** | [**Address**](Address.md) | | [optional]
+**defaultBackendID** | **String** | Default Backend ID | [optional]
+**defaultDeliveryContactID** | **String** | Default Delivery Address Contact ID | [optional]
+**defaultEndUserID** | **String** | Default End User Contact ID | [optional]
+**description** | **String** | Description | [optional]
+**EIN** | **String** | EIN | [optional]
+**email** | **String** | Main Account Email | [optional]
+**enrollmentStatus** | **String** | Enrollment Status | [optional]
+**fax** | **String** | Fax | [optional]
+**ID** | **String** | Taxnexus Account Id | [optional]
+**iSPCustomer** | **Boolean** | ISP Customer? | [optional]
+**industry** | **String** | Industry | [optional]
+**isCustomerPortal** | **Boolean** | Customer Portal Account | [optional]
+**isPartner** | **Boolean** | Partner Account | [optional]
+**jigSaw** | **String** | Data.com Key | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**mSPCustomer** | **Boolean** | MSP Customer? | [optional]
+**nAICSCode** | **String** | NAICS Code | [optional]
+**nAICSDesc** | **String** | NAICS Description | [optional]
+**name** | **String** | Account Name | [optional]
+**numberOfEmployees** | **Number** | Employee Count Estimate | [optional]
+**numberOfLocations** | **Number** | Number of Locations Estimate | [optional]
+**openCharges** | **Number** | Open Charges | [optional]
+**orderContactID** | **String** | Vendor Order Contact ID | [optional]
+**orderEmail** | **String** | Order Email | [optional]
+**ownerID** | **String** | Account Owner User ID | [optional]
+**ownership** | **String** | Ownership | [optional]
+**parentFK** | **String** | Parent Foreign Key | [optional]
+**parentID** | **String** | Parent Account | [optional]
+**phone** | **String** | Phone | [optional]
+**placeID** | **String** | The ID of the Place situs record that applies to this Account | [optional]
+**preparerID** | **String** | Tax Preparer Contact ID | [optional]
+**rating** | **String** | Rating | [optional]
+**ratingEngineID** | **String** | Rating Engine identifier | [optional]
+**ref** | **String** | External Reference ID | [optional]
+**revenueBase** | **Number** | Rollup Revenue Base | [optional]
+**revenueNet** | **Number** | Rollup Revenue Net | [optional]
+**revenueNotTaxable** | **Number** | Rollup Revenue Not Taxable | [optional]
+**SIC** | **String** | SIC Code | [optional]
+**sICDesc** | **String** | SIC Description | [optional]
+**shippingAddress** | [**Address**](Address.md) | | [optional]
+**shippingCensusTract** | **String** | Shipping Census Tract | [optional]
+**shippingContactID** | **String** | Shipping Contact ID | [optional]
+**shippingCounty** | **String** | Shipping County | [optional]
+**site** | **String** | Account Site | [optional]
+**status** | **String** | Account Status | [optional]
+**taxExemption** | **String** | Tax Exemption | [optional]
+**taxOnTax** | **Number** | Rollup Tax On Tax | [optional]
+**telecomCustomer** | **Boolean** | Telecom Customer? | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+**tickerSymbol** | **String** | Ticker Symbol | [optional]
+**tradeStyle** | **String** | Tradestyle | [optional]
+**type** | **String** | Type | [optional]
+**unappliedPayments** | **Number** | Unapplied Payments | [optional]
+**unitBase** | **Number** | Rollup Unit Base | [optional]
+**upsellOpportunity** | **String** | Upsell Opportunity | [optional]
+**wHMCSClientID** | **Number** | WHMCS Client ID | [optional]
+**website** | **String** | Website | [optional]
+**xeroContactID** | **String** | Xero Contact ID | [optional]
+**yearStarted** | **String** | Year Started | [optional]
+
+
diff --git a/client/crm/docs/AccountBasic.md b/client/crm/docs/AccountBasic.md
new file mode 100644
index 0000000..2f0df34
--- /dev/null
+++ b/client/crm/docs/AccountBasic.md
@@ -0,0 +1,32 @@
+# Crm.AccountBasic
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountNumber** | **String** | Taxnexus Account Number of the OEM/Reseller | [optional]
+**billingAddress** | [**Address**](Address.md) | | [optional]
+**billingContactID** | **String** | Contact ID | [optional]
+**companyID** | **String** | Taxnexus OEM/Reseller Record Id | [optional]
+**coordinateID** | **String** | The id of the Coordinate of the business establishment | [optional]
+**customerID** | **String** | Taxpayer Customer Id designated by OEM/Reseller | [optional]
+**defaultAddress** | [**Address**](Address.md) | | [optional]
+**defaultBackendID** | **String** | Default Backend ID | [optional]
+**defaultDeliveryContactID** | **String** | Default Delivery Address Contact ID | [optional]
+**defaultEndUserID** | **String** | Contact ID | [optional]
+**email** | **String** | Taxpayer Public Email Address | [optional]
+**fax** | **String** | Taxpayer Fax Number | [optional]
+**ID** | **String** | Taxpayer Account Record Id | [optional]
+**name** | **String** | Taxpayer Account Name (ignored for Tax Processing) | [optional]
+**parentFK** | **String** | UUID Reference the master record that owns this item | [optional]
+**phone** | **String** | Taxpayer Public Phone Number | [optional]
+**preparerID** | **String** | Contact ID | [optional]
+**ref** | **String** | Source System identifier for this record, if any | [optional]
+**shippingAddress** | [**Address**](Address.md) | | [optional]
+**shippingContactID** | **String** | Contact ID | [optional]
+**site** | **String** | Taxpayer Location Designation | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+**type** | **String** | Account Type | [optional]
+**website** | **String** | Taxpayer Website | [optional]
+
+
diff --git a/client/crm/docs/AccountBasicResponse.md b/client/crm/docs/AccountBasicResponse.md
new file mode 100644
index 0000000..0c28cb4
--- /dev/null
+++ b/client/crm/docs/AccountBasicResponse.md
@@ -0,0 +1,10 @@
+# Crm.AccountBasicResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[AccountBasic]**](AccountBasic.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/AccountRequest.md b/client/crm/docs/AccountRequest.md
new file mode 100644
index 0000000..9f528f3
--- /dev/null
+++ b/client/crm/docs/AccountRequest.md
@@ -0,0 +1,9 @@
+# Crm.AccountRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Account]**](Account.md) | | [optional]
+
+
diff --git a/client/crm/docs/AccountResponse.md b/client/crm/docs/AccountResponse.md
new file mode 100644
index 0000000..3633fcf
--- /dev/null
+++ b/client/crm/docs/AccountResponse.md
@@ -0,0 +1,10 @@
+# Crm.AccountResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Account]**](Account.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/AccountsApi.md b/client/crm/docs/AccountsApi.md
new file mode 100644
index 0000000..ba90b3a
--- /dev/null
+++ b/client/crm/docs/AccountsApi.md
@@ -0,0 +1,290 @@
+# Crm.AccountsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteAccount**](AccountsApi.md#deleteAccount) | **DELETE** /accounts | Delete An Account
+[**getAccounts**](AccountsApi.md#getAccounts) | **GET** /accounts | Get a list of accounts
+[**getAccountsObservable**](AccountsApi.md#getAccountsObservable) | **GET** /accounts/observable | Get Taxnexus Accounts in an observable array
+[**postAccounts**](AccountsApi.md#postAccounts) | **POST** /accounts | Add a new account to Taxnexus
+[**putAccount**](AccountsApi.md#putAccount) | **PUT** /accounts | Update a single account
+
+
+
+## deleteAccount
+
+> DeleteResponse deleteAccount(opts)
+
+Delete An Account
+
+Delete Taxnexus Account record
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AccountsApi();
+let opts = {
+ 'accountId': "accountId_example" // String | Taxnexus Record Id of an Account
+};
+apiInstance.deleteAccount(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getAccounts
+
+> AccountResponse getAccounts(opts)
+
+Get a list of accounts
+
+Return a list of all available Accounts
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AccountsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'name': "name_example", // String | The Name of this Object
+ 'offset': 789, // Number | How many objects to skip?
+ 'active': true, // Boolean | Only retrieve active records?
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'email': "email_example" // String | Email address used for identity lookup
+};
+apiInstance.getAccounts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getAccountsObservable
+
+> [Account] getAccountsObservable(opts)
+
+Get Taxnexus Accounts in an observable array
+
+A list of accounts in a simple JSON array
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AccountsApi();
+let opts = {
+ 'name': "name_example", // String | The Name of this Object
+ 'active': true, // Boolean | Only retrieve active records?
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'email': "email_example" // String | Email address used for identity lookup
+};
+apiInstance.getAccountsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **name** | **String**| The Name of this Object | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+
+### Return type
+
+[**[Account]**](Account.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postAccounts
+
+> AccountResponse postAccounts(accountRequest)
+
+Add a new account to Taxnexus
+
+Account record to be added
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AccountsApi();
+let accountRequest = new Crm.AccountRequest(); // AccountRequest | An array of new Account records
+apiInstance.postAccounts(accountRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountRequest** | [**AccountRequest**](AccountRequest.md)| An array of new Account records |
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putAccount
+
+> AccountResponse putAccount(accountRequest)
+
+Update a single account
+
+Update a single account specified by accountId
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AccountsApi();
+let accountRequest = new Crm.AccountRequest(); // AccountRequest | An array of new Account records
+apiInstance.putAccount(accountRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountRequest** | [**AccountRequest**](AccountRequest.md)| An array of new Account records |
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/crm/docs/Address.md b/client/crm/docs/Address.md
new file mode 100644
index 0000000..6f08cba
--- /dev/null
+++ b/client/crm/docs/Address.md
@@ -0,0 +1,15 @@
+# Crm.Address
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**city** | **String** | City | [optional]
+**country** | **String** | Country full name | [optional]
+**countryCode** | **String** | Country Code | [optional]
+**postalCode** | **String** | Postal Code | [optional]
+**state** | **String** | State full name | [optional]
+**stateCode** | **String** | State Code | [optional]
+**street** | **String** | Street number and name | [optional]
+
+
diff --git a/client/crm/docs/Asset.md b/client/crm/docs/Asset.md
new file mode 100644
index 0000000..0668d59
--- /dev/null
+++ b/client/crm/docs/Asset.md
@@ -0,0 +1,55 @@
+# Crm.Asset
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**accountID** | **String** | Account | [optional]
+**address** | [**Address**](Address.md) | | [optional]
+**assetLevel** | **Number** | Asset Level | [optional]
+**name** | **String** | Asset Name | [optional]
+**assetProvidedByID** | **String** | Asset Provided By | [optional]
+**assetServicedByID** | **String** | Asset Serviced By | [optional]
+**companyProductID** | **String** | Company Product | [optional]
+**isCompetitorProduct** | **Boolean** | Competitor Asset | [optional]
+**consequenceOfFailure** | **String** | Consequence Of Failure | [optional]
+**contactID** | **String** | Contact | [optional]
+**createdByID** | **String** | Created By | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**currentAmount** | **Number** | Current Amount | [optional]
+**currentLifecycleEndDate** | **String** | Current Lifecycle End Date | [optional]
+**currentMrr** | **Number** | Current Monthly Recurring Revenue | [optional]
+**currentQuantity** | **Number** | Current Quantity | [optional]
+**description** | **String** | Description | [optional]
+**digitalAssetStatus** | **String** | Digital Asset Status | [optional]
+**externalIdentifier** | **String** | External Id | [optional]
+**hasLifecycleManagement** | **Boolean** | Has Lifecycle Management | [optional]
+**installDate** | **String** | Install Date | [optional]
+**isInternal** | **Boolean** | Internal Asset | [optional]
+**lastModifiedByID** | **String** | Last Modified By | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**locationID** | **String** | Location | [optional]
+**manufactureDate** | **String** | Manufacture Date | [optional]
+**mIMEType** | **String** | MIME Type | [optional]
+**parentID** | **String** | Parent Asset | [optional]
+**price** | **Number** | Price | [optional]
+**product2ID** | **String** | Product | [optional]
+**productCode** | **String** | Product Code | [optional]
+**productDescription** | **String** | Product Description | [optional]
+**productFamily** | **String** | Product Family | [optional]
+**stockKeepingUnit** | **String** | Product SKU | [optional]
+**purchaseDate** | **String** | Purchase Date | [optional]
+**quantity** | **Number** | Quantity | [optional]
+**rootAssetID** | **String** | Root Asset | [optional]
+**serialNumber** | **String** | Serial Number | [optional]
+**status** | **String** | Status | [optional]
+**statusReason** | **String** | Status Reason | [optional]
+**tenantID** | **String** | Tenant ID | [optional]
+**totalLifecycleAmount** | **Number** | Total Lifecycle Amount | [optional]
+**type** | **String** | Type | [optional]
+**UUID** | **String** | Unique Identifier | [optional]
+**URL** | **String** | URL | [optional]
+**usageEndDate** | **String** | Usage End Date | [optional]
+
+
diff --git a/client/crm/docs/AssetRequest.md b/client/crm/docs/AssetRequest.md
new file mode 100644
index 0000000..765092c
--- /dev/null
+++ b/client/crm/docs/AssetRequest.md
@@ -0,0 +1,9 @@
+# Crm.AssetRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Asset]**](Asset.md) | | [optional]
+
+
diff --git a/client/crm/docs/AssetResponse.md b/client/crm/docs/AssetResponse.md
new file mode 100644
index 0000000..15df288
--- /dev/null
+++ b/client/crm/docs/AssetResponse.md
@@ -0,0 +1,10 @@
+# Crm.AssetResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Asset]**](Asset.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/AssetsApi.md b/client/crm/docs/AssetsApi.md
new file mode 100644
index 0000000..f30f236
--- /dev/null
+++ b/client/crm/docs/AssetsApi.md
@@ -0,0 +1,282 @@
+# Crm.AssetsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteAsset**](AssetsApi.md#deleteAsset) | **DELETE** /assets | Delete An Asset
+[**getAssets**](AssetsApi.md#getAssets) | **GET** /assets | Get a list of assets
+[**getAssetsObservable**](AssetsApi.md#getAssetsObservable) | **GET** /assets/observable | Get Taxnexus Assets in an observable array
+[**postAssets**](AssetsApi.md#postAssets) | **POST** /assets | Add a new asset to Taxnexus
+[**putAsset**](AssetsApi.md#putAsset) | **PUT** /assets | Update a single asset
+
+
+
+## deleteAsset
+
+> DeleteResponse deleteAsset(opts)
+
+Delete An Asset
+
+Delete Taxnexus Asset record
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AssetsApi();
+let opts = {
+ 'assetId': "assetId_example" // String | Taxnexus Record Id of an Asset
+};
+apiInstance.deleteAsset(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **assetId** | **String**| Taxnexus Record Id of an Asset | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getAssets
+
+> AssetResponse getAssets(opts)
+
+Get a list of assets
+
+Return a list of all available Assets
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AssetsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'assetId': "assetId_example" // String | Taxnexus Record Id of an Asset
+};
+apiInstance.getAssets(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **assetId** | **String**| Taxnexus Record Id of an Asset | [optional]
+
+### Return type
+
+[**AssetResponse**](AssetResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getAssetsObservable
+
+> [Asset] getAssetsObservable(opts)
+
+Get Taxnexus Assets in an observable array
+
+A list of assets in a simple JSON array
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AssetsApi();
+let opts = {
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'assetId': "assetId_example" // String | Taxnexus Record Id of an Asset
+};
+apiInstance.getAssetsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **assetId** | **String**| Taxnexus Record Id of an Asset | [optional]
+
+### Return type
+
+[**[Asset]**](Asset.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postAssets
+
+> AssetResponse postAssets(assetRequest)
+
+Add a new asset to Taxnexus
+
+Asset record to be added
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AssetsApi();
+let assetRequest = new Crm.AssetRequest(); // AssetRequest | An array of new Asset records
+apiInstance.postAssets(assetRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **assetRequest** | [**AssetRequest**](AssetRequest.md)| An array of new Asset records |
+
+### Return type
+
+[**AssetResponse**](AssetResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putAsset
+
+> AssetResponse putAsset(assetRequest)
+
+Update a single asset
+
+Update a single asset specified by assetId
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.AssetsApi();
+let assetRequest = new Crm.AssetRequest(); // AssetRequest | An array of new Asset records
+apiInstance.putAsset(assetRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **assetRequest** | [**AssetRequest**](AssetRequest.md)| An array of new Asset records |
+
+### Return type
+
+[**AssetResponse**](AssetResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/crm/docs/Contact.md b/client/crm/docs/Contact.md
new file mode 100644
index 0000000..3e6c3a5
--- /dev/null
+++ b/client/crm/docs/Contact.md
@@ -0,0 +1,53 @@
+# Crm.Contact
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountID** | **String** | The primary account ID of this contact | [optional]
+**assistantName** | **String** | Assistant Name | [optional]
+**assistantPhone** | **String** | Asst. Phone | [optional]
+**birthDate** | **String** | Birthdate | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**department** | **String** | Department | [optional]
+**description** | **String** | Description | [optional]
+**doNotCall** | **Boolean** | Do Not Call? | [optional]
+**email** | **String** | Email address | [optional]
+**emailBounceDate** | **String** | Email Bounce Date | [optional]
+**emailBouncedReason** | **String** | Email Bounce Reason | [optional]
+**enrollmentStatus** | **String** | Taxnexus Enrollment Status | [optional]
+**fax** | **String** | Fax Number | [optional]
+**firstName** | **String** | First Name | [optional]
+**hasOptedOutOfEmail** | **Boolean** | Email Opt Out | [optional]
+**hasOptedOutOfFax** | **Boolean** | Fax Opt Out | [optional]
+**homePhone** | **String** | Home Phone | [optional]
+**ID** | **String** | Taxnexus Record Id | [optional]
+**isEmailBounced** | **Boolean** | Does this contact have bounced emails? | [optional]
+**isProvisioned** | **Boolean** | Is Provisioned? | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**lastName** | **String** | Last Name | [optional]
+**leadSource** | **String** | Lead Source | [optional]
+**level** | **String** | Level | [optional]
+**linkedIn** | **String** | LinkedIn Page | [optional]
+**mailingAddress** | [**Address**](Address.md) | | [optional]
+**mailingLists** | **String** | Mailing Lists | [optional]
+**mobilePhone** | **String** | Mobile Phone | [optional]
+**name** | **String** | Full Name | [optional]
+**otherAddress** | [**Address**](Address.md) | | [optional]
+**otherPhone** | **String** | Other Phone | [optional]
+**ownerID** | **String** | The User ID of the user who owns this Contact | [optional]
+**personalEmail** | **String** | Personal Email Address for this Contact | [optional]
+**phone** | **String** | Phone Number | [optional]
+**photoURL** | **String** | URL of a photograph of this User | [optional]
+**recruitingStatus** | **String** | Recruiting Status | [optional]
+**ref** | **String** | External reference to this contact, if any | [optional]
+**reportsToID** | **String** | Reports To Contact ID | [optional]
+**salutation** | **String** | Contact Salutation | [optional]
+**status** | **String** | The Contact Status | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+**title** | **String** | Contact Title | [optional]
+**type** | **String** | Contact Type | [optional]
+
+
diff --git a/client/crm/docs/ContactRequest.md b/client/crm/docs/ContactRequest.md
new file mode 100644
index 0000000..33317ba
--- /dev/null
+++ b/client/crm/docs/ContactRequest.md
@@ -0,0 +1,9 @@
+# Crm.ContactRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contact]**](Contact.md) | | [optional]
+
+
diff --git a/client/crm/docs/ContactResponse.md b/client/crm/docs/ContactResponse.md
new file mode 100644
index 0000000..45c6f4a
--- /dev/null
+++ b/client/crm/docs/ContactResponse.md
@@ -0,0 +1,10 @@
+# Crm.ContactResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contact]**](Contact.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/ContactsApi.md b/client/crm/docs/ContactsApi.md
new file mode 100644
index 0000000..8d4d210
--- /dev/null
+++ b/client/crm/docs/ContactsApi.md
@@ -0,0 +1,290 @@
+# Crm.ContactsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteContact**](ContactsApi.md#deleteContact) | **DELETE** /contacts | Delete a Contact
+[**getContacts**](ContactsApi.md#getContacts) | **GET** /contacts | Get a list of contacts
+[**getContactsObservable**](ContactsApi.md#getContactsObservable) | **GET** /contacts/observable | Get Taxnexus Contacts in an observable array
+[**postContacts**](ContactsApi.md#postContacts) | **POST** /contacts | Add new contacts
+[**putContacts**](ContactsApi.md#putContacts) | **PUT** /contacts | Update Contact
+
+
+
+## deleteContact
+
+> DeleteResponse deleteContact(opts)
+
+Delete a Contact
+
+Delete Taxnexus Contact record
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContactsApi();
+let opts = {
+ 'contactId': "contactId_example" // String | Taxnexus Contact record ID
+};
+apiInstance.deleteContact(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactId** | **String**| Taxnexus Contact record ID | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getContacts
+
+> ContactResponse getContacts(opts)
+
+Get a list of contacts
+
+Return a list of all available Contacts
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContactsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'contactId': "contactId_example", // String | Taxnexus Contact record ID
+ 'active': true, // Boolean | Only retrieve active records?
+ 'email': "email_example", // String | Email address used for identity lookup
+ 'name': "name_example" // String | The Name of this Object
+};
+apiInstance.getContacts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **contactId** | **String**| Taxnexus Contact record ID | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+
+### Return type
+
+[**ContactResponse**](ContactResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getContactsObservable
+
+> [Contact] getContactsObservable(opts)
+
+Get Taxnexus Contacts in an observable array
+
+A list of contacts in a simple JSON array
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContactsApi();
+let opts = {
+ 'contactId': "contactId_example", // String | Taxnexus Contact record ID
+ 'active': true, // Boolean | Only retrieve active records?
+ 'email': "email_example", // String | Email address used for identity lookup
+ 'name': "name_example" // String | The Name of this Object
+};
+apiInstance.getContactsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactId** | **String**| Taxnexus Contact record ID | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+
+### Return type
+
+[**[Contact]**](Contact.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postContacts
+
+> ContactResponse postContacts(contactsRequest)
+
+Add new contacts
+
+Contact record to be added
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContactsApi();
+let contactsRequest = new Crm.ContactRequest(); // ContactRequest | An array of new Contact records
+apiInstance.postContacts(contactsRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactsRequest** | [**ContactRequest**](ContactRequest.md)| An array of new Contact records |
+
+### Return type
+
+[**ContactResponse**](ContactResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putContacts
+
+> ContactResponse putContacts(contactsRequest)
+
+Update Contact
+
+Update Contact records
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContactsApi();
+let contactsRequest = new Crm.ContactRequest(); // ContactRequest | An array of new Contact records
+apiInstance.putContacts(contactsRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactsRequest** | [**ContactRequest**](ContactRequest.md)| An array of new Contact records |
+
+### Return type
+
+[**ContactResponse**](ContactResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/crm/docs/Contract.md b/client/crm/docs/Contract.md
new file mode 100644
index 0000000..7ae8f4a
--- /dev/null
+++ b/client/crm/docs/Contract.md
@@ -0,0 +1,38 @@
+# Crm.Contract
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountID** | **String** | Account | [optional]
+**activatedByID** | **String** | Activated By | [optional]
+**activatedDate** | **String** | Activated Date | [optional]
+**billingAddress** | [**Address**](Address.md) | | [optional]
+**billingContactID** | **String** | Billing Contact | [optional]
+**companySignedDate** | **String** | Company Signed Date | [optional]
+**companySignedID** | **String** | Company Signed By | [optional]
+**contractNumber** | **String** | Contract Number | [optional]
+**contractTerm** | **Number** | Contract Term (months) | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**customerSignedDate** | **String** | Customer Signed Date | [optional]
+**customerSignedID** | **String** | Customer Signed By | [optional]
+**customerSignedTitle** | **String** | Customer Signed Title | [optional]
+**defaultEndUserID** | **String** | End User | [optional]
+**description** | **String** | Description | [optional]
+**endDate** | **String** | Contract End Date | [optional]
+**hourlyRate** | **Number** | Hourly Rate | [optional]
+**ID** | **String** | Telnexus Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Contract Name | [optional]
+**paymentMethodID** | **String** | Payment Method | [optional]
+**paymentTerms** | **String** | Payment Terms | [optional]
+**perpetual** | **Boolean** | Perpetual Agreement? | [optional]
+**shippingAddress** | [**Address**](Address.md) | | [optional]
+**shippingContactID** | **String** | Shipping Contact | [optional]
+**startDate** | **String** | Contract Start Date | [optional]
+**status** | **String** | Status | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+
+
diff --git a/client/crm/docs/ContractRequest.md b/client/crm/docs/ContractRequest.md
new file mode 100644
index 0000000..690fa66
--- /dev/null
+++ b/client/crm/docs/ContractRequest.md
@@ -0,0 +1,9 @@
+# Crm.ContractRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contract]**](Contract.md) | | [optional]
+
+
diff --git a/client/crm/docs/ContractResponse.md b/client/crm/docs/ContractResponse.md
new file mode 100644
index 0000000..75fa405
--- /dev/null
+++ b/client/crm/docs/ContractResponse.md
@@ -0,0 +1,10 @@
+# Crm.ContractResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contract]**](Contract.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/ContractsApi.md b/client/crm/docs/ContractsApi.md
new file mode 100644
index 0000000..05fd9e1
--- /dev/null
+++ b/client/crm/docs/ContractsApi.md
@@ -0,0 +1,282 @@
+# Crm.ContractsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteContract**](ContractsApi.md#deleteContract) | **DELETE** /contracts | Delete An Contract
+[**getContracts**](ContractsApi.md#getContracts) | **GET** /contracts | Get a list of contracts
+[**getContractsObservable**](ContractsApi.md#getContractsObservable) | **GET** /contracts/observable | Get Taxnexus Contracts in an observable array
+[**postContracts**](ContractsApi.md#postContracts) | **POST** /contracts | Add a new contract to Taxnexus
+[**putContract**](ContractsApi.md#putContract) | **PUT** /contracts | Update a single contract
+
+
+
+## deleteContract
+
+> DeleteResponse deleteContract(opts)
+
+Delete An Contract
+
+Delete Taxnexus Contract record
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContractsApi();
+let opts = {
+ 'contractId': "contractId_example" // String | Taxnexus Contact record ID
+};
+apiInstance.deleteContract(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contractId** | **String**| Taxnexus Contact record ID | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getContracts
+
+> ContractResponse getContracts(opts)
+
+Get a list of contracts
+
+Return a list of all available Contracts
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContractsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'active': true, // Boolean | Only retrieve active records?
+ 'contractId': "contractId_example" // String | Taxnexus Contact record ID
+};
+apiInstance.getContracts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **contractId** | **String**| Taxnexus Contact record ID | [optional]
+
+### Return type
+
+[**ContractResponse**](ContractResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getContractsObservable
+
+> [Contract] getContractsObservable(opts)
+
+Get Taxnexus Contracts in an observable array
+
+A list of contracts in a simple JSON array
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContractsApi();
+let opts = {
+ 'active': true, // Boolean | Only retrieve active records?
+ 'contractId': "contractId_example" // String | Taxnexus Contact record ID
+};
+apiInstance.getContractsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **contractId** | **String**| Taxnexus Contact record ID | [optional]
+
+### Return type
+
+[**[Contract]**](Contract.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postContracts
+
+> ContractResponse postContracts(contractsRequest)
+
+Add a new contract to Taxnexus
+
+Contract record to be added
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContractsApi();
+let contractsRequest = new Crm.ContractRequest(); // ContractRequest | An array of new Contract records
+apiInstance.postContracts(contractsRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contractsRequest** | [**ContractRequest**](ContractRequest.md)| An array of new Contract records |
+
+### Return type
+
+[**ContractResponse**](ContractResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putContract
+
+> ContractResponse putContract(contractsRequest)
+
+Update a single contract
+
+Update a single contract specified by contractId
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.ContractsApi();
+let contractsRequest = new Crm.ContractRequest(); // ContractRequest | An array of new Contract records
+apiInstance.putContract(contractsRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contractsRequest** | [**ContractRequest**](ContractRequest.md)| An array of new Contract records |
+
+### Return type
+
+[**ContractResponse**](ContractResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/crm/docs/CorsApi.md b/client/crm/docs/CorsApi.md
new file mode 100644
index 0000000..909d5e9
--- /dev/null
+++ b/client/crm/docs/CorsApi.md
@@ -0,0 +1,428 @@
+# Crm.CorsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**accountOptions**](CorsApi.md#accountOptions) | **OPTIONS** /accounts |
+[**accountOptionsObservable**](CorsApi.md#accountOptionsObservable) | **OPTIONS** /accounts/observable |
+[**assetOptions**](CorsApi.md#assetOptions) | **OPTIONS** /assets |
+[**assetOptionsObservable**](CorsApi.md#assetOptionsObservable) | **OPTIONS** /assets/observable |
+[**contactOptions**](CorsApi.md#contactOptions) | **OPTIONS** /contacts |
+[**contactOptionsObservable**](CorsApi.md#contactOptionsObservable) | **OPTIONS** /contacts/observable |
+[**contractOptions**](CorsApi.md#contractOptions) | **OPTIONS** /contracts |
+[**contractOptionsObservable**](CorsApi.md#contractOptionsObservable) | **OPTIONS** /contracts/observable |
+[**leadOptions**](CorsApi.md#leadOptions) | **OPTIONS** /leads |
+[**leadOptionsObservable**](CorsApi.md#leadOptionsObservable) | **OPTIONS** /leads/observable |
+
+
+
+## accountOptions
+
+> accountOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.accountOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## accountOptionsObservable
+
+> accountOptionsObservable()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.accountOptionsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## assetOptions
+
+> assetOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.assetOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## assetOptionsObservable
+
+> assetOptionsObservable()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.assetOptionsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## contactOptions
+
+> contactOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.contactOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## contactOptionsObservable
+
+> contactOptionsObservable()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.contactOptionsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## contractOptions
+
+> contractOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.contractOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## contractOptionsObservable
+
+> contractOptionsObservable()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.contractOptionsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## leadOptions
+
+> leadOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.leadOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## leadOptionsObservable
+
+> leadOptionsObservable()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Crm from 'crm';
+
+let apiInstance = new Crm.CorsApi();
+apiInstance.leadOptionsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
diff --git a/client/crm/docs/DeleteResponse.md b/client/crm/docs/DeleteResponse.md
new file mode 100644
index 0000000..134ddef
--- /dev/null
+++ b/client/crm/docs/DeleteResponse.md
@@ -0,0 +1,10 @@
+# Crm.DeleteResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Message]**](Message.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/Error.md b/client/crm/docs/Error.md
new file mode 100644
index 0000000..350a1c3
--- /dev/null
+++ b/client/crm/docs/Error.md
@@ -0,0 +1,11 @@
+# Crm.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+
+
diff --git a/client/crm/docs/InvalidError.md b/client/crm/docs/InvalidError.md
new file mode 100644
index 0000000..407e226
--- /dev/null
+++ b/client/crm/docs/InvalidError.md
@@ -0,0 +1,12 @@
+# Crm.InvalidError
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/crm/docs/InvalidErrorAllOf.md b/client/crm/docs/InvalidErrorAllOf.md
new file mode 100644
index 0000000..394f50b
--- /dev/null
+++ b/client/crm/docs/InvalidErrorAllOf.md
@@ -0,0 +1,9 @@
+# Crm.InvalidErrorAllOf
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/crm/docs/Lead.md b/client/crm/docs/Lead.md
new file mode 100644
index 0000000..a71666d
--- /dev/null
+++ b/client/crm/docs/Lead.md
@@ -0,0 +1,36 @@
+# Crm.Lead
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**address** | [**Address**](Address.md) | | [optional]
+**company** | **String** | Company | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**description** | **String** | Description | [optional]
+**email** | **String** | Email | [optional]
+**firstName** | **String** | First Name | [optional]
+**ID** | **String** | Taxnexus Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**lastName** | **String** | Last Name | [optional]
+**mobilePhone** | **String** | Mobile | [optional]
+**name** | **String** | Name | [optional]
+**ownerId** | **String** | LeadBasic Owner | [optional]
+**partnerAccountId** | **String** | Partner Account | [optional]
+**phone** | **String** | Phone | [optional]
+**productID** | **String** | Product | [optional]
+**refererURL** | **String** | referer_url | [optional]
+**status** | **String** | LeadBasic Status | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+**title** | **String** | Title | [optional]
+**type** | **String** | Type | [optional]
+**uTMCampaign** | **String** | utm_campaign | [optional]
+**uTMContent** | **String** | utm_content | [optional]
+**uTMMedium** | **String** | utm_medium | [optional]
+**uTMSource** | **String** | utm_source | [optional]
+**uTMTerm** | **String** | utm_term | [optional]
+**website** | **String** | Website | [optional]
+
+
diff --git a/client/crm/docs/LeadRequest.md b/client/crm/docs/LeadRequest.md
new file mode 100644
index 0000000..2f050fd
--- /dev/null
+++ b/client/crm/docs/LeadRequest.md
@@ -0,0 +1,9 @@
+# Crm.LeadRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Lead]**](Lead.md) | | [optional]
+
+
diff --git a/client/crm/docs/LeadResponse.md b/client/crm/docs/LeadResponse.md
new file mode 100644
index 0000000..82f0597
--- /dev/null
+++ b/client/crm/docs/LeadResponse.md
@@ -0,0 +1,10 @@
+# Crm.LeadResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Lead]**](Lead.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/crm/docs/LeadsApi.md b/client/crm/docs/LeadsApi.md
new file mode 100644
index 0000000..8e0a5f4
--- /dev/null
+++ b/client/crm/docs/LeadsApi.md
@@ -0,0 +1,286 @@
+# Crm.LeadsApi
+
+All URIs are relative to *http://crm.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteLead**](LeadsApi.md#deleteLead) | **DELETE** /leads | Delete a Contact
+[**getLeads**](LeadsApi.md#getLeads) | **GET** /leads | Get a list of contacts
+[**getLeadsObservable**](LeadsApi.md#getLeadsObservable) | **GET** /leads/observable | Get Taxnexus Leads in an observable array
+[**postLeads**](LeadsApi.md#postLeads) | **POST** /leads | Add new Leads
+[**putLeads**](LeadsApi.md#putLeads) | **PUT** /leads | Update Leads
+
+
+
+## deleteLead
+
+> DeleteResponse deleteLead(opts)
+
+Delete a Contact
+
+Delete Taxnexus Lead record
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.LeadsApi();
+let opts = {
+ 'leadId': "leadId_example" // String | Taxnexus Lead record ID
+};
+apiInstance.deleteLead(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **leadId** | **String**| Taxnexus Lead record ID | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getLeads
+
+> LeadResponse getLeads(opts)
+
+Get a list of contacts
+
+Return a list of all available Leads
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.LeadsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'leadId': "leadId_example", // String | Taxnexus Lead record ID
+ 'email': "email_example", // String | Email address used for identity lookup
+ 'name': "name_example" // String | The Name of this Object
+};
+apiInstance.getLeads(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **leadId** | **String**| Taxnexus Lead record ID | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+
+### Return type
+
+[**LeadResponse**](LeadResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getLeadsObservable
+
+> [Lead] getLeadsObservable(opts)
+
+Get Taxnexus Leads in an observable array
+
+A list of leads in a simple JSON array
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.LeadsApi();
+let opts = {
+ 'leadId': "leadId_example", // String | Taxnexus Lead record ID
+ 'email': "email_example", // String | Email address used for identity lookup
+ 'name': "name_example" // String | The Name of this Object
+};
+apiInstance.getLeadsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **leadId** | **String**| Taxnexus Lead record ID | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+
+### Return type
+
+[**[Lead]**](Lead.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postLeads
+
+> LeadResponse postLeads(leadRequest)
+
+Add new Leads
+
+Lead records to be added
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.LeadsApi();
+let leadRequest = new Crm.LeadRequest(); // LeadRequest | An array of new Lead records
+apiInstance.postLeads(leadRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **leadRequest** | [**LeadRequest**](LeadRequest.md)| An array of new Lead records |
+
+### Return type
+
+[**LeadResponse**](LeadResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putLeads
+
+> LeadResponse putLeads(leadRequest)
+
+Update Leads
+
+Update Lead records
+
+### Example
+
+```javascript
+import Crm from 'crm';
+let defaultClient = Crm.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Crm.LeadsApi();
+let leadRequest = new Crm.LeadRequest(); // LeadRequest | An array of new Lead records
+apiInstance.putLeads(leadRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **leadRequest** | [**LeadRequest**](LeadRequest.md)| An array of new Lead records |
+
+### Return type
+
+[**LeadResponse**](LeadResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/crm/docs/Message.md b/client/crm/docs/Message.md
new file mode 100644
index 0000000..36099fb
--- /dev/null
+++ b/client/crm/docs/Message.md
@@ -0,0 +1,11 @@
+# Crm.Message
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**message** | **String** | | [optional]
+**ref** | **String** | | [optional]
+**status** | **Number** | | [optional]
+
+
diff --git a/client/crm/docs/Pagination.md b/client/crm/docs/Pagination.md
new file mode 100644
index 0000000..0f5fbfd
--- /dev/null
+++ b/client/crm/docs/Pagination.md
@@ -0,0 +1,12 @@
+# Crm.Pagination
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**limit** | **Number** | | [optional]
+**pagesize** | **Number** | | [optional]
+**poffset** | **Number** | | [optional]
+**setsize** | **Number** | | [optional]
+
+
diff --git a/client/crm/docs/RequestMeta.md b/client/crm/docs/RequestMeta.md
new file mode 100644
index 0000000..3f16e40
--- /dev/null
+++ b/client/crm/docs/RequestMeta.md
@@ -0,0 +1,9 @@
+# Crm.RequestMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**taxnexusAccount** | **String** | Taxnexus Account Number of the Reseller or OEM |
+
+
diff --git a/client/crm/docs/ResponseMeta.md b/client/crm/docs/ResponseMeta.md
new file mode 100644
index 0000000..eeb637b
--- /dev/null
+++ b/client/crm/docs/ResponseMeta.md
@@ -0,0 +1,20 @@
+# Crm.ResponseMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contact** | **String** | Microservice Contact Info | [optional]
+**copyright** | **String** | Copyright Info | [optional]
+**license** | **String** | License Information and Restrictions | [optional]
+**operationID** | **String** | Operation ID | [optional]
+**pagination** | [**Pagination**](Pagination.md) | | [optional]
+**requestIP** | **String** | Request IP Address | [optional]
+**requestType** | **String** | Request Type | [optional]
+**requestURL** | **String** | Request URL | [optional]
+**serverInfo** | **String** | Data Server Info | [optional]
+**serverResponseTime** | **String** | Data Server Response Time (ms) | [optional]
+**serverTimestamp** | **String** | Backend Server Timestamp | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number used for recording transactions | [optional]
+
+
diff --git a/client/crm/git_push.sh b/client/crm/git_push.sh
new file mode 100644
index 0000000..f53a75d
--- /dev/null
+++ b/client/crm/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/client/crm/mocha.opts b/client/crm/mocha.opts
new file mode 100644
index 0000000..9070118
--- /dev/null
+++ b/client/crm/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/client/crm/package.json b/client/crm/package.json
new file mode 100644
index 0000000..a40a4c7
--- /dev/null
+++ b/client/crm/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "crm",
+ "version": "0.0.2",
+ "description": "Customer_Information_Microservice",
+ "license": "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc.",
+ "main": "dist/index.js",
+ "scripts": {
+ "build": "babel src -d dist",
+ "prepare": "npm run build",
+ "test": "mocha --require @babel/register --recursive"
+ },
+ "browser": {
+ "fs": false
+ },
+ "dependencies": {
+ "@babel/cli": "^7.0.0",
+ "superagent": "^5.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-decorators": "^7.0.0",
+ "@babel/plugin-proposal-do-expressions": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
+ "@babel/plugin-proposal-function-bind": "^7.0.0",
+ "@babel/plugin-proposal-function-sent": "^7.0.0",
+ "@babel/plugin-proposal-json-strings": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-import-meta": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "expect.js": "^0.3.1",
+ "mocha": "^8.0.1",
+ "sinon": "^7.2.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/client/crm/src/ApiClient.js b/client/crm/src/ApiClient.js
new file mode 100644
index 0000000..84278a0
--- /dev/null
+++ b/client/crm/src/ApiClient.js
@@ -0,0 +1,692 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import superagent from "superagent";
+import querystring from "querystring";
+
+/**
+* @module ApiClient
+* @version 0.0.2
+*/
+
+/**
+* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
+* application to use this class directly - the *Api and model classes provide the public API for the service. The
+* contents of this file should be regarded as internal but are documented for completeness.
+* @alias module:ApiClient
+* @class
+*/
+class ApiClient {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * Overrides the default value set in spec file if present
+ * @param {String} basePath
+ */
+ constructor(basePath = 'http://crm.vernonkeenan.com:8080/v1') {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * @type {String}
+ * @default http://crm.vernonkeenan.com:8080/v1
+ */
+ this.basePath = basePath.replace(/\/+$/, '');
+
+ /**
+ * The authentication methods to be included for all API calls.
+ * @type {Array.}
+ */
+ this.authentications = {
+ 'ApiKeyAuth': {type: 'apiKey', 'in': 'header', name: 'X-API-Key'}
+ }
+
+ /**
+ * The default HTTP headers to be included for all API calls.
+ * @type {Array.}
+ * @default {}
+ */
+ this.defaultHeaders = {
+ 'User-Agent': 'OpenAPI-Generator/0.0.2/Javascript'
+ };
+
+ /**
+ * The default HTTP timeout for all API calls.
+ * @type {Number}
+ * @default 60000
+ */
+ this.timeout = 60000;
+
+ /**
+ * If set to false an additional timestamp parameter is added to all API GET calls to
+ * prevent browser caching
+ * @type {Boolean}
+ * @default true
+ */
+ this.cache = true;
+
+ /**
+ * If set to true, the client will save the cookies from each server
+ * response, and return them in the next request.
+ * @default false
+ */
+ this.enableCookies = false;
+
+ /*
+ * Used to save and return cookies in a node.js (non-browser) setting,
+ * if this.enableCookies is set to true.
+ */
+ if (typeof window === 'undefined') {
+ this.agent = new superagent.agent();
+ }
+
+ /*
+ * Allow user to override superagent agent
+ */
+ this.requestAgent = null;
+
+ /*
+ * Allow user to add superagent plugins
+ */
+ this.plugins = null;
+
+ }
+
+ /**
+ * Returns a string representation for an actual parameter.
+ * @param param The actual parameter.
+ * @returns {String} The string representation of param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ * - application/json
+ * - application/json; charset=UTF8
+ * - APPLICATION/JSON
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.} contentTypes
+ * @returns {String} The chosen content type, preferring JSON.
+ */
+ jsonPreferredMime(contentTypes) {
+ for (var i = 0; i < contentTypes.length; i++) {
+ if (this.isJsonMime(contentTypes[i])) {
+ return contentTypes[i];
+ }
+ }
+
+ return contentTypes[0];
+ }
+
+ /**
+ * Checks whether the given parameter value represents file-like content.
+ * @param param The parameter to check.
+ * @returns {Boolean} true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ * - remove nils
+ * - keep files and arrays
+ * - format to string with `paramToString` for other cases
+ *
+ * @param {Object.} params The parameters as object properties.
+ * @returns {Object.} normalized parameters.
+ */
+ normalizeParams(params) {
+ var newParams = {};
+ for (var key in params) {
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
+ var value = params[key];
+ if (this.isFileParam(value) || Array.isArray(value)) {
+ newParams[key] = value;
+ } else {
+ newParams[key] = this.paramToString(value);
+ }
+ }
+ }
+
+ return newParams;
+ }
+
+ /**
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
+ * @param {Array} param An array parameter.
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.} authNames An array of authentication method names.
+ */
+ applyAuthToRequest(request, authNames) {
+ authNames.forEach((authName) => {
+ var auth = this.authentications[authName];
+ switch (auth.type) {
+ case 'basic':
+ if (auth.username || auth.password) {
+ request.auth(auth.username || '', auth.password || '');
+ }
+
+ break;
+ case 'bearer':
+ if (auth.accessToken) {
+ var localVarBearerToken = typeof auth.accessToken === 'function'
+ ? auth.accessToken()
+ : auth.accessToken
+ request.set({'Authorization': 'Bearer ' + localVarBearerToken});
+ }
+
+ break;
+ case 'apiKey':
+ if (auth.apiKey) {
+ var data = {};
+ if (auth.apiKeyPrefix) {
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
+ } else {
+ data[auth.name] = auth.apiKey;
+ }
+
+ if (auth['in'] === 'header') {
+ request.set(data);
+ } else {
+ request.query(data);
+ }
+ }
+
+ break;
+ case 'oauth2':
+ if (auth.accessToken) {
+ request.set({'Authorization': 'Bearer ' + auth.accessToken});
+ }
+
+ break;
+ default:
+ throw new Error('Unknown authentication type: ' + auth.type);
+ }
+ });
+ }
+
+ /**
+ * Deserializes an HTTP response body into a value of the specified type.
+ * @param {Object} response A SuperAgent response object.
+ * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://crm.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/crm/src/api/AccountsApi.js b/client/crm/src/api/AccountsApi.js
new file mode 100644
index 0000000..b0eb502
--- /dev/null
+++ b/client/crm/src/api/AccountsApi.js
@@ -0,0 +1,265 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Account from '../model/Account';
+import AccountRequest from '../model/AccountRequest';
+import AccountResponse from '../model/AccountResponse';
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+
+/**
+* Accounts service.
+* @module api/AccountsApi
+* @version 0.0.2
+*/
+export default class AccountsApi {
+
+ /**
+ * Constructs a new AccountsApi.
+ * @alias module:api/AccountsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteAccount operation.
+ * @callback module:api/AccountsApi~deleteAccountCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete An Account
+ * Delete Taxnexus Account record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {module:api/AccountsApi~deleteAccountCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteAccount(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'accountId': opts['accountId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getAccounts operation.
+ * @callback module:api/AccountsApi~getAccountsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of accounts
+ * Return a list of all available Accounts
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {String} opts.name The Name of this Object
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {module:api/AccountsApi~getAccountsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ getAccounts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'name': opts['name'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'accountId': opts['accountId'],
+ 'email': opts['email']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getAccountsObservable operation.
+ * @callback module:api/AccountsApi~getAccountsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Accounts in an observable array
+ * A list of accounts in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.name The Name of this Object
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {module:api/AccountsApi~getAccountsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getAccountsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'name': opts['name'],
+ 'active': opts['active'],
+ 'accountId': opts['accountId'],
+ 'email': opts['email']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Account];
+ return this.apiClient.callApi(
+ '/accounts/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postAccounts operation.
+ * @callback module:api/AccountsApi~postAccountsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new account to Taxnexus
+ * Account record to be added
+ * @param {module:model/AccountRequest} accountRequest An array of new Account records
+ * @param {module:api/AccountsApi~postAccountsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ postAccounts(accountRequest, callback) {
+ let postBody = accountRequest;
+ // verify the required parameter 'accountRequest' is set
+ if (accountRequest === undefined || accountRequest === null) {
+ throw new Error("Missing the required parameter 'accountRequest' when calling postAccounts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putAccount operation.
+ * @callback module:api/AccountsApi~putAccountCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update a single account
+ * Update a single account specified by accountId
+ * @param {module:model/AccountRequest} accountRequest An array of new Account records
+ * @param {module:api/AccountsApi~putAccountCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ putAccount(accountRequest, callback) {
+ let postBody = accountRequest;
+ // verify the required parameter 'accountRequest' is set
+ if (accountRequest === undefined || accountRequest === null) {
+ throw new Error("Missing the required parameter 'accountRequest' when calling putAccount");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/api/AssetsApi.js b/client/crm/src/api/AssetsApi.js
new file mode 100644
index 0000000..028c719
--- /dev/null
+++ b/client/crm/src/api/AssetsApi.js
@@ -0,0 +1,257 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Asset from '../model/Asset';
+import AssetRequest from '../model/AssetRequest';
+import AssetResponse from '../model/AssetResponse';
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+
+/**
+* Assets service.
+* @module api/AssetsApi
+* @version 0.0.2
+*/
+export default class AssetsApi {
+
+ /**
+ * Constructs a new AssetsApi.
+ * @alias module:api/AssetsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteAsset operation.
+ * @callback module:api/AssetsApi~deleteAssetCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete An Asset
+ * Delete Taxnexus Asset record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.assetId Taxnexus Record Id of an Asset
+ * @param {module:api/AssetsApi~deleteAssetCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteAsset(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'assetId': opts['assetId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/assets', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getAssets operation.
+ * @callback module:api/AssetsApi~getAssetsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AssetResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of assets
+ * Return a list of all available Assets
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.assetId Taxnexus Record Id of an Asset
+ * @param {module:api/AssetsApi~getAssetsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AssetResponse}
+ */
+ getAssets(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'accountId': opts['accountId'],
+ 'assetId': opts['assetId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = AssetResponse;
+ return this.apiClient.callApi(
+ '/assets', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getAssetsObservable operation.
+ * @callback module:api/AssetsApi~getAssetsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Assets in an observable array
+ * A list of assets in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.assetId Taxnexus Record Id of an Asset
+ * @param {module:api/AssetsApi~getAssetsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getAssetsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'accountId': opts['accountId'],
+ 'assetId': opts['assetId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Asset];
+ return this.apiClient.callApi(
+ '/assets/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postAssets operation.
+ * @callback module:api/AssetsApi~postAssetsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AssetResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new asset to Taxnexus
+ * Asset record to be added
+ * @param {module:model/AssetRequest} assetRequest An array of new Asset records
+ * @param {module:api/AssetsApi~postAssetsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AssetResponse}
+ */
+ postAssets(assetRequest, callback) {
+ let postBody = assetRequest;
+ // verify the required parameter 'assetRequest' is set
+ if (assetRequest === undefined || assetRequest === null) {
+ throw new Error("Missing the required parameter 'assetRequest' when calling postAssets");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AssetResponse;
+ return this.apiClient.callApi(
+ '/assets', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putAsset operation.
+ * @callback module:api/AssetsApi~putAssetCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AssetResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update a single asset
+ * Update a single asset specified by assetId
+ * @param {module:model/AssetRequest} assetRequest An array of new Asset records
+ * @param {module:api/AssetsApi~putAssetCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AssetResponse}
+ */
+ putAsset(assetRequest, callback) {
+ let postBody = assetRequest;
+ // verify the required parameter 'assetRequest' is set
+ if (assetRequest === undefined || assetRequest === null) {
+ throw new Error("Missing the required parameter 'assetRequest' when calling putAsset");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AssetResponse;
+ return this.apiClient.callApi(
+ '/assets', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/api/ContactsApi.js b/client/crm/src/api/ContactsApi.js
new file mode 100644
index 0000000..a68b5a8
--- /dev/null
+++ b/client/crm/src/api/ContactsApi.js
@@ -0,0 +1,265 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Contact from '../model/Contact';
+import ContactRequest from '../model/ContactRequest';
+import ContactResponse from '../model/ContactResponse';
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+
+/**
+* Contacts service.
+* @module api/ContactsApi
+* @version 0.0.2
+*/
+export default class ContactsApi {
+
+ /**
+ * Constructs a new ContactsApi.
+ * @alias module:api/ContactsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteContact operation.
+ * @callback module:api/ContactsApi~deleteContactCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete a Contact
+ * Delete Taxnexus Contact record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.contactId Taxnexus Contact record ID
+ * @param {module:api/ContactsApi~deleteContactCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteContact(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'contactId': opts['contactId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getContacts operation.
+ * @callback module:api/ContactsApi~getContactsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContactResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of contacts
+ * Return a list of all available Contacts
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.contactId Taxnexus Contact record ID
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {String} opts.name The Name of this Object
+ * @param {module:api/ContactsApi~getContactsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContactResponse}
+ */
+ getContacts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'contactId': opts['contactId'],
+ 'active': opts['active'],
+ 'email': opts['email'],
+ 'name': opts['name']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ContactResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getContactsObservable operation.
+ * @callback module:api/ContactsApi~getContactsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Contacts in an observable array
+ * A list of contacts in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.contactId Taxnexus Contact record ID
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {String} opts.name The Name of this Object
+ * @param {module:api/ContactsApi~getContactsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getContactsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'contactId': opts['contactId'],
+ 'active': opts['active'],
+ 'email': opts['email'],
+ 'name': opts['name']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Contact];
+ return this.apiClient.callApi(
+ '/contacts/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postContacts operation.
+ * @callback module:api/ContactsApi~postContactsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContactResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add new contacts
+ * Contact record to be added
+ * @param {module:model/ContactRequest} contactsRequest An array of new Contact records
+ * @param {module:api/ContactsApi~postContactsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContactResponse}
+ */
+ postContacts(contactsRequest, callback) {
+ let postBody = contactsRequest;
+ // verify the required parameter 'contactsRequest' is set
+ if (contactsRequest === undefined || contactsRequest === null) {
+ throw new Error("Missing the required parameter 'contactsRequest' when calling postContacts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContactResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putContacts operation.
+ * @callback module:api/ContactsApi~putContactsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContactResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Contact
+ * Update Contact records
+ * @param {module:model/ContactRequest} contactsRequest An array of new Contact records
+ * @param {module:api/ContactsApi~putContactsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContactResponse}
+ */
+ putContacts(contactsRequest, callback) {
+ let postBody = contactsRequest;
+ // verify the required parameter 'contactsRequest' is set
+ if (contactsRequest === undefined || contactsRequest === null) {
+ throw new Error("Missing the required parameter 'contactsRequest' when calling putContacts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContactResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/api/ContractsApi.js b/client/crm/src/api/ContractsApi.js
new file mode 100644
index 0000000..8c04a6f
--- /dev/null
+++ b/client/crm/src/api/ContractsApi.js
@@ -0,0 +1,257 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Contract from '../model/Contract';
+import ContractRequest from '../model/ContractRequest';
+import ContractResponse from '../model/ContractResponse';
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+
+/**
+* Contracts service.
+* @module api/ContractsApi
+* @version 0.0.2
+*/
+export default class ContractsApi {
+
+ /**
+ * Constructs a new ContractsApi.
+ * @alias module:api/ContractsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteContract operation.
+ * @callback module:api/ContractsApi~deleteContractCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete An Contract
+ * Delete Taxnexus Contract record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.contractId Taxnexus Contact record ID
+ * @param {module:api/ContractsApi~deleteContractCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteContract(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'contractId': opts['contractId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getContracts operation.
+ * @callback module:api/ContractsApi~getContractsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContractResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of contracts
+ * Return a list of all available Contracts
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.contractId Taxnexus Contact record ID
+ * @param {module:api/ContractsApi~getContractsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContractResponse}
+ */
+ getContracts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'contractId': opts['contractId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ContractResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getContractsObservable operation.
+ * @callback module:api/ContractsApi~getContractsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Contracts in an observable array
+ * A list of contracts in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.contractId Taxnexus Contact record ID
+ * @param {module:api/ContractsApi~getContractsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getContractsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'active': opts['active'],
+ 'contractId': opts['contractId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Contract];
+ return this.apiClient.callApi(
+ '/contracts/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postContracts operation.
+ * @callback module:api/ContractsApi~postContractsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContractResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new contract to Taxnexus
+ * Contract record to be added
+ * @param {module:model/ContractRequest} contractsRequest An array of new Contract records
+ * @param {module:api/ContractsApi~postContractsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContractResponse}
+ */
+ postContracts(contractsRequest, callback) {
+ let postBody = contractsRequest;
+ // verify the required parameter 'contractsRequest' is set
+ if (contractsRequest === undefined || contractsRequest === null) {
+ throw new Error("Missing the required parameter 'contractsRequest' when calling postContracts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContractResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putContract operation.
+ * @callback module:api/ContractsApi~putContractCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContractResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update a single contract
+ * Update a single contract specified by contractId
+ * @param {module:model/ContractRequest} contractsRequest An array of new Contract records
+ * @param {module:api/ContractsApi~putContractCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContractResponse}
+ */
+ putContract(contractsRequest, callback) {
+ let postBody = contractsRequest;
+ // verify the required parameter 'contractsRequest' is set
+ if (contractsRequest === undefined || contractsRequest === null) {
+ throw new Error("Missing the required parameter 'contractsRequest' when calling putContract");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContractResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/api/CorsApi.js b/client/crm/src/api/CorsApi.js
new file mode 100644
index 0000000..4f4178a
--- /dev/null
+++ b/client/crm/src/api/CorsApi.js
@@ -0,0 +1,387 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+
+/**
+* Cors service.
+* @module api/CorsApi
+* @version 0.0.2
+*/
+export default class CorsApi {
+
+ /**
+ * Constructs a new CorsApi.
+ * @alias module:api/CorsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the accountOptions operation.
+ * @callback module:api/CorsApi~accountOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~accountOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ accountOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/accounts', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the accountOptionsObservable operation.
+ * @callback module:api/CorsApi~accountOptionsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~accountOptionsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ accountOptionsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/accounts/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the assetOptions operation.
+ * @callback module:api/CorsApi~assetOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~assetOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ assetOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/assets', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the assetOptionsObservable operation.
+ * @callback module:api/CorsApi~assetOptionsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~assetOptionsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ assetOptionsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/assets/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the contactOptions operation.
+ * @callback module:api/CorsApi~contactOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~contactOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ contactOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/contacts', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the contactOptionsObservable operation.
+ * @callback module:api/CorsApi~contactOptionsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~contactOptionsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ contactOptionsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/contacts/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the contractOptions operation.
+ * @callback module:api/CorsApi~contractOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~contractOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ contractOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/contracts', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the contractOptionsObservable operation.
+ * @callback module:api/CorsApi~contractOptionsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~contractOptionsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ contractOptionsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/contracts/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the leadOptions operation.
+ * @callback module:api/CorsApi~leadOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~leadOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ leadOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/leads', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the leadOptionsObservable operation.
+ * @callback module:api/CorsApi~leadOptionsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~leadOptionsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ leadOptionsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/leads/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/api/LeadsApi.js b/client/crm/src/api/LeadsApi.js
new file mode 100644
index 0000000..b3108ce
--- /dev/null
+++ b/client/crm/src/api/LeadsApi.js
@@ -0,0 +1,261 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+import Lead from '../model/Lead';
+import LeadRequest from '../model/LeadRequest';
+import LeadResponse from '../model/LeadResponse';
+
+/**
+* Leads service.
+* @module api/LeadsApi
+* @version 0.0.2
+*/
+export default class LeadsApi {
+
+ /**
+ * Constructs a new LeadsApi.
+ * @alias module:api/LeadsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteLead operation.
+ * @callback module:api/LeadsApi~deleteLeadCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete a Contact
+ * Delete Taxnexus Lead record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.leadId Taxnexus Lead record ID
+ * @param {module:api/LeadsApi~deleteLeadCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteLead(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'leadId': opts['leadId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/leads', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getLeads operation.
+ * @callback module:api/LeadsApi~getLeadsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/LeadResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of contacts
+ * Return a list of all available Leads
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.leadId Taxnexus Lead record ID
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {String} opts.name The Name of this Object
+ * @param {module:api/LeadsApi~getLeadsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/LeadResponse}
+ */
+ getLeads(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'leadId': opts['leadId'],
+ 'email': opts['email'],
+ 'name': opts['name']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = LeadResponse;
+ return this.apiClient.callApi(
+ '/leads', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getLeadsObservable operation.
+ * @callback module:api/LeadsApi~getLeadsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Leads in an observable array
+ * A list of leads in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.leadId Taxnexus Lead record ID
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {String} opts.name The Name of this Object
+ * @param {module:api/LeadsApi~getLeadsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getLeadsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'leadId': opts['leadId'],
+ 'email': opts['email'],
+ 'name': opts['name']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Lead];
+ return this.apiClient.callApi(
+ '/leads/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postLeads operation.
+ * @callback module:api/LeadsApi~postLeadsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/LeadResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add new Leads
+ * Lead records to be added
+ * @param {module:model/LeadRequest} leadRequest An array of new Lead records
+ * @param {module:api/LeadsApi~postLeadsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/LeadResponse}
+ */
+ postLeads(leadRequest, callback) {
+ let postBody = leadRequest;
+ // verify the required parameter 'leadRequest' is set
+ if (leadRequest === undefined || leadRequest === null) {
+ throw new Error("Missing the required parameter 'leadRequest' when calling postLeads");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = LeadResponse;
+ return this.apiClient.callApi(
+ '/leads', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putLeads operation.
+ * @callback module:api/LeadsApi~putLeadsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/LeadResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Leads
+ * Update Lead records
+ * @param {module:model/LeadRequest} leadRequest An array of new Lead records
+ * @param {module:api/LeadsApi~putLeadsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/LeadResponse}
+ */
+ putLeads(leadRequest, callback) {
+ let postBody = leadRequest;
+ // verify the required parameter 'leadRequest' is set
+ if (leadRequest === undefined || leadRequest === null) {
+ throw new Error("Missing the required parameter 'leadRequest' when calling putLeads");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = LeadResponse;
+ return this.apiClient.callApi(
+ '/leads', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/crm/src/index.js b/client/crm/src/index.js
new file mode 100644
index 0000000..6aed925
--- /dev/null
+++ b/client/crm/src/index.js
@@ -0,0 +1,279 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Account from './model/Account';
+import AccountBasic from './model/AccountBasic';
+import AccountBasicResponse from './model/AccountBasicResponse';
+import AccountRequest from './model/AccountRequest';
+import AccountResponse from './model/AccountResponse';
+import Address from './model/Address';
+import Asset from './model/Asset';
+import AssetRequest from './model/AssetRequest';
+import AssetResponse from './model/AssetResponse';
+import Contact from './model/Contact';
+import ContactRequest from './model/ContactRequest';
+import ContactResponse from './model/ContactResponse';
+import Contract from './model/Contract';
+import ContractRequest from './model/ContractRequest';
+import ContractResponse from './model/ContractResponse';
+import DeleteResponse from './model/DeleteResponse';
+import Error from './model/Error';
+import InvalidError from './model/InvalidError';
+import InvalidErrorAllOf from './model/InvalidErrorAllOf';
+import Lead from './model/Lead';
+import LeadRequest from './model/LeadRequest';
+import LeadResponse from './model/LeadResponse';
+import Message from './model/Message';
+import Pagination from './model/Pagination';
+import RequestMeta from './model/RequestMeta';
+import ResponseMeta from './model/ResponseMeta';
+import AccountsApi from './api/AccountsApi';
+import AssetsApi from './api/AssetsApi';
+import ContactsApi from './api/ContactsApi';
+import ContractsApi from './api/ContractsApi';
+import CorsApi from './api/CorsApi';
+import LeadsApi from './api/LeadsApi';
+
+
+/**
+* Customer_Information_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var Crm = require('index'); // See note below*.
+* var xxxSvc = new Crm.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Crm.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new Crm.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new Crm.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Account model constructor.
+ * @property {module:model/Account}
+ */
+ Account,
+
+ /**
+ * The AccountBasic model constructor.
+ * @property {module:model/AccountBasic}
+ */
+ AccountBasic,
+
+ /**
+ * The AccountBasicResponse model constructor.
+ * @property {module:model/AccountBasicResponse}
+ */
+ AccountBasicResponse,
+
+ /**
+ * The AccountRequest model constructor.
+ * @property {module:model/AccountRequest}
+ */
+ AccountRequest,
+
+ /**
+ * The AccountResponse model constructor.
+ * @property {module:model/AccountResponse}
+ */
+ AccountResponse,
+
+ /**
+ * The Address model constructor.
+ * @property {module:model/Address}
+ */
+ Address,
+
+ /**
+ * The Asset model constructor.
+ * @property {module:model/Asset}
+ */
+ Asset,
+
+ /**
+ * The AssetRequest model constructor.
+ * @property {module:model/AssetRequest}
+ */
+ AssetRequest,
+
+ /**
+ * The AssetResponse model constructor.
+ * @property {module:model/AssetResponse}
+ */
+ AssetResponse,
+
+ /**
+ * The Contact model constructor.
+ * @property {module:model/Contact}
+ */
+ Contact,
+
+ /**
+ * The ContactRequest model constructor.
+ * @property {module:model/ContactRequest}
+ */
+ ContactRequest,
+
+ /**
+ * The ContactResponse model constructor.
+ * @property {module:model/ContactResponse}
+ */
+ ContactResponse,
+
+ /**
+ * The Contract model constructor.
+ * @property {module:model/Contract}
+ */
+ Contract,
+
+ /**
+ * The ContractRequest model constructor.
+ * @property {module:model/ContractRequest}
+ */
+ ContractRequest,
+
+ /**
+ * The ContractResponse model constructor.
+ * @property {module:model/ContractResponse}
+ */
+ ContractResponse,
+
+ /**
+ * The DeleteResponse model constructor.
+ * @property {module:model/DeleteResponse}
+ */
+ DeleteResponse,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The InvalidError model constructor.
+ * @property {module:model/InvalidError}
+ */
+ InvalidError,
+
+ /**
+ * The InvalidErrorAllOf model constructor.
+ * @property {module:model/InvalidErrorAllOf}
+ */
+ InvalidErrorAllOf,
+
+ /**
+ * The Lead model constructor.
+ * @property {module:model/Lead}
+ */
+ Lead,
+
+ /**
+ * The LeadRequest model constructor.
+ * @property {module:model/LeadRequest}
+ */
+ LeadRequest,
+
+ /**
+ * The LeadResponse model constructor.
+ * @property {module:model/LeadResponse}
+ */
+ LeadResponse,
+
+ /**
+ * The Message model constructor.
+ * @property {module:model/Message}
+ */
+ Message,
+
+ /**
+ * The Pagination model constructor.
+ * @property {module:model/Pagination}
+ */
+ Pagination,
+
+ /**
+ * The RequestMeta model constructor.
+ * @property {module:model/RequestMeta}
+ */
+ RequestMeta,
+
+ /**
+ * The ResponseMeta model constructor.
+ * @property {module:model/ResponseMeta}
+ */
+ ResponseMeta,
+
+ /**
+ * The AccountsApi service constructor.
+ * @property {module:api/AccountsApi}
+ */
+ AccountsApi,
+
+ /**
+ * The AssetsApi service constructor.
+ * @property {module:api/AssetsApi}
+ */
+ AssetsApi,
+
+ /**
+ * The ContactsApi service constructor.
+ * @property {module:api/ContactsApi}
+ */
+ ContactsApi,
+
+ /**
+ * The ContractsApi service constructor.
+ * @property {module:api/ContractsApi}
+ */
+ ContractsApi,
+
+ /**
+ * The CorsApi service constructor.
+ * @property {module:api/CorsApi}
+ */
+ CorsApi,
+
+ /**
+ * The LeadsApi service constructor.
+ * @property {module:api/LeadsApi}
+ */
+ LeadsApi
+};
diff --git a/client/crm/src/model/Account.js b/client/crm/src/model/Account.js
new file mode 100644
index 0000000..3f3ca08
--- /dev/null
+++ b/client/crm/src/model/Account.js
@@ -0,0 +1,852 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Account model module.
+ * @module model/Account
+ * @version 0.0.2
+ */
+class Account {
+ /**
+ * Constructs a new Account
.
+ * @alias module:model/Account
+ */
+ constructor() {
+
+ Account.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Account
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Account} obj Optional instance to populate.
+ * @return {module:model/Account} The populated Account
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Account();
+
+ if (data.hasOwnProperty('AccountNumber')) {
+ obj['AccountNumber'] = ApiClient.convertToType(data['AccountNumber'], 'String');
+ }
+ if (data.hasOwnProperty('AccountSource')) {
+ obj['AccountSource'] = ApiClient.convertToType(data['AccountSource'], 'String');
+ }
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('AdministrativeLevel')) {
+ obj['AdministrativeLevel'] = ApiClient.convertToType(data['AdministrativeLevel'], 'String');
+ }
+ if (data.hasOwnProperty('Amount')) {
+ obj['Amount'] = ApiClient.convertToType(data['Amount'], 'Number');
+ }
+ if (data.hasOwnProperty('AmountInvoiced')) {
+ obj['AmountInvoiced'] = ApiClient.convertToType(data['AmountInvoiced'], 'Number');
+ }
+ if (data.hasOwnProperty('AmountPaid')) {
+ obj['AmountPaid'] = ApiClient.convertToType(data['AmountPaid'], 'Number');
+ }
+ if (data.hasOwnProperty('AnnualRevenue')) {
+ obj['AnnualRevenue'] = ApiClient.convertToType(data['AnnualRevenue'], 'Number');
+ }
+ if (data.hasOwnProperty('Balance')) {
+ obj['Balance'] = ApiClient.convertToType(data['Balance'], 'Number');
+ }
+ if (data.hasOwnProperty('BillingAddress')) {
+ obj['BillingAddress'] = Address.constructFromObject(data['BillingAddress']);
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('BillingPreference')) {
+ obj['BillingPreference'] = ApiClient.convertToType(data['BillingPreference'], 'String');
+ }
+ if (data.hasOwnProperty('BusinessAddress')) {
+ obj['BusinessAddress'] = Address.constructFromObject(data['BusinessAddress']);
+ }
+ if (data.hasOwnProperty('CannabisCustomer')) {
+ obj['CannabisCustomer'] = ApiClient.convertToType(data['CannabisCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ChannelProgramLevelName')) {
+ obj['ChannelProgramLevelName'] = ApiClient.convertToType(data['ChannelProgramLevelName'], 'String');
+ }
+ if (data.hasOwnProperty('ChannelProgramName')) {
+ obj['ChannelProgramName'] = ApiClient.convertToType(data['ChannelProgramName'], 'String');
+ }
+ if (data.hasOwnProperty('ClientEndDate')) {
+ obj['ClientEndDate'] = ApiClient.convertToType(data['ClientEndDate'], 'String');
+ }
+ if (data.hasOwnProperty('ClientStartDate')) {
+ obj['ClientStartDate'] = ApiClient.convertToType(data['ClientStartDate'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('CoordinateID')) {
+ obj['CoordinateID'] = ApiClient.convertToType(data['CoordinateID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerID')) {
+ obj['CustomerID'] = ApiClient.convertToType(data['CustomerID'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerPriority')) {
+ obj['CustomerPriority'] = ApiClient.convertToType(data['CustomerPriority'], 'String');
+ }
+ if (data.hasOwnProperty('DBA')) {
+ obj['DBA'] = ApiClient.convertToType(data['DBA'], 'String');
+ }
+ if (data.hasOwnProperty('DUNSNumber')) {
+ obj['DUNSNumber'] = ApiClient.convertToType(data['DUNSNumber'], 'String');
+ }
+ if (data.hasOwnProperty('DandBCompanyID')) {
+ obj['DandBCompanyID'] = ApiClient.convertToType(data['DandBCompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultAddress')) {
+ obj['DefaultAddress'] = Address.constructFromObject(data['DefaultAddress']);
+ }
+ if (data.hasOwnProperty('DefaultBackendID')) {
+ obj['DefaultBackendID'] = ApiClient.convertToType(data['DefaultBackendID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultDeliveryContactID')) {
+ obj['DefaultDeliveryContactID'] = ApiClient.convertToType(data['DefaultDeliveryContactID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultEndUserID')) {
+ obj['DefaultEndUserID'] = ApiClient.convertToType(data['DefaultEndUserID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('EIN')) {
+ obj['EIN'] = ApiClient.convertToType(data['EIN'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EnrollmentStatus')) {
+ obj['EnrollmentStatus'] = ApiClient.convertToType(data['EnrollmentStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('ISPCustomer')) {
+ obj['ISPCustomer'] = ApiClient.convertToType(data['ISPCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('Industry')) {
+ obj['Industry'] = ApiClient.convertToType(data['Industry'], 'String');
+ }
+ if (data.hasOwnProperty('IsCustomerPortal')) {
+ obj['IsCustomerPortal'] = ApiClient.convertToType(data['IsCustomerPortal'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsPartner')) {
+ obj['IsPartner'] = ApiClient.convertToType(data['IsPartner'], 'Boolean');
+ }
+ if (data.hasOwnProperty('JigSaw')) {
+ obj['JigSaw'] = ApiClient.convertToType(data['JigSaw'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('MSPCustomer')) {
+ obj['MSPCustomer'] = ApiClient.convertToType(data['MSPCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('NAICSCode')) {
+ obj['NAICSCode'] = ApiClient.convertToType(data['NAICSCode'], 'String');
+ }
+ if (data.hasOwnProperty('NAICSDesc')) {
+ obj['NAICSDesc'] = ApiClient.convertToType(data['NAICSDesc'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('NumberOfEmployees')) {
+ obj['NumberOfEmployees'] = ApiClient.convertToType(data['NumberOfEmployees'], 'Number');
+ }
+ if (data.hasOwnProperty('NumberOfLocations')) {
+ obj['NumberOfLocations'] = ApiClient.convertToType(data['NumberOfLocations'], 'Number');
+ }
+ if (data.hasOwnProperty('OpenCharges')) {
+ obj['OpenCharges'] = ApiClient.convertToType(data['OpenCharges'], 'Number');
+ }
+ if (data.hasOwnProperty('OrderContactID')) {
+ obj['OrderContactID'] = ApiClient.convertToType(data['OrderContactID'], 'String');
+ }
+ if (data.hasOwnProperty('OrderEmail')) {
+ obj['OrderEmail'] = ApiClient.convertToType(data['OrderEmail'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('Ownership')) {
+ obj['Ownership'] = ApiClient.convertToType(data['Ownership'], 'String');
+ }
+ if (data.hasOwnProperty('ParentFK')) {
+ obj['ParentFK'] = ApiClient.convertToType(data['ParentFK'], 'String');
+ }
+ if (data.hasOwnProperty('ParentID')) {
+ obj['ParentID'] = ApiClient.convertToType(data['ParentID'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PlaceID')) {
+ obj['PlaceID'] = ApiClient.convertToType(data['PlaceID'], 'String');
+ }
+ if (data.hasOwnProperty('PreparerID')) {
+ obj['PreparerID'] = ApiClient.convertToType(data['PreparerID'], 'String');
+ }
+ if (data.hasOwnProperty('Rating')) {
+ obj['Rating'] = ApiClient.convertToType(data['Rating'], 'String');
+ }
+ if (data.hasOwnProperty('RatingEngineID')) {
+ obj['RatingEngineID'] = ApiClient.convertToType(data['RatingEngineID'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('RevenueBase')) {
+ obj['RevenueBase'] = ApiClient.convertToType(data['RevenueBase'], 'Number');
+ }
+ if (data.hasOwnProperty('RevenueNet')) {
+ obj['RevenueNet'] = ApiClient.convertToType(data['RevenueNet'], 'Number');
+ }
+ if (data.hasOwnProperty('RevenueNotTaxable')) {
+ obj['RevenueNotTaxable'] = ApiClient.convertToType(data['RevenueNotTaxable'], 'Number');
+ }
+ if (data.hasOwnProperty('SIC')) {
+ obj['SIC'] = ApiClient.convertToType(data['SIC'], 'String');
+ }
+ if (data.hasOwnProperty('SICDesc')) {
+ obj['SICDesc'] = ApiClient.convertToType(data['SICDesc'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingAddress')) {
+ obj['ShippingAddress'] = Address.constructFromObject(data['ShippingAddress']);
+ }
+ if (data.hasOwnProperty('ShippingCensusTract')) {
+ obj['ShippingCensusTract'] = ApiClient.convertToType(data['ShippingCensusTract'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingContactID')) {
+ obj['ShippingContactID'] = ApiClient.convertToType(data['ShippingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingCounty')) {
+ obj['ShippingCounty'] = ApiClient.convertToType(data['ShippingCounty'], 'String');
+ }
+ if (data.hasOwnProperty('Site')) {
+ obj['Site'] = ApiClient.convertToType(data['Site'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TaxExemption')) {
+ obj['TaxExemption'] = ApiClient.convertToType(data['TaxExemption'], 'String');
+ }
+ if (data.hasOwnProperty('TaxOnTax')) {
+ obj['TaxOnTax'] = ApiClient.convertToType(data['TaxOnTax'], 'Number');
+ }
+ if (data.hasOwnProperty('TelecomCustomer')) {
+ obj['TelecomCustomer'] = ApiClient.convertToType(data['TelecomCustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TickerSymbol')) {
+ obj['TickerSymbol'] = ApiClient.convertToType(data['TickerSymbol'], 'String');
+ }
+ if (data.hasOwnProperty('TradeStyle')) {
+ obj['TradeStyle'] = ApiClient.convertToType(data['TradeStyle'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('UnappliedPayments')) {
+ obj['UnappliedPayments'] = ApiClient.convertToType(data['UnappliedPayments'], 'Number');
+ }
+ if (data.hasOwnProperty('UnitBase')) {
+ obj['UnitBase'] = ApiClient.convertToType(data['UnitBase'], 'Number');
+ }
+ if (data.hasOwnProperty('UpsellOpportunity')) {
+ obj['UpsellOpportunity'] = ApiClient.convertToType(data['UpsellOpportunity'], 'String');
+ }
+ if (data.hasOwnProperty('WHMCSClientID')) {
+ obj['WHMCSClientID'] = ApiClient.convertToType(data['WHMCSClientID'], 'Number');
+ }
+ if (data.hasOwnProperty('Website')) {
+ obj['Website'] = ApiClient.convertToType(data['Website'], 'String');
+ }
+ if (data.hasOwnProperty('XeroContactID')) {
+ obj['XeroContactID'] = ApiClient.convertToType(data['XeroContactID'], 'String');
+ }
+ if (data.hasOwnProperty('YearStarted')) {
+ obj['YearStarted'] = ApiClient.convertToType(data['YearStarted'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account Number
+ * @member {String} AccountNumber
+ */
+Account.prototype['AccountNumber'] = undefined;
+
+/**
+ * The marketing origin of this account
+ * @member {String} AccountSource
+ */
+Account.prototype['AccountSource'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} Active
+ */
+Account.prototype['Active'] = undefined;
+
+/**
+ * For tax authorities, this account's administrative level, e.g. Local, County, State or Federal
+ * @member {String} AdministrativeLevel
+ */
+Account.prototype['AdministrativeLevel'] = undefined;
+
+/**
+ * Rollup Tax Amount
+ * @member {Number} Amount
+ */
+Account.prototype['Amount'] = undefined;
+
+/**
+ * Amount Invoiced
+ * @member {Number} AmountInvoiced
+ */
+Account.prototype['AmountInvoiced'] = undefined;
+
+/**
+ * Amount Paid
+ * @member {Number} AmountPaid
+ */
+Account.prototype['AmountPaid'] = undefined;
+
+/**
+ * Annual Revenue Estimate
+ * @member {Number} AnnualRevenue
+ */
+Account.prototype['AnnualRevenue'] = undefined;
+
+/**
+ * Account Balance
+ * @member {Number} Balance
+ */
+Account.prototype['Balance'] = undefined;
+
+/**
+ * @member {module:model/Address} BillingAddress
+ */
+Account.prototype['BillingAddress'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} BillingContactID
+ */
+Account.prototype['BillingContactID'] = undefined;
+
+/**
+ * Billing Preference
+ * @member {String} BillingPreference
+ */
+Account.prototype['BillingPreference'] = undefined;
+
+/**
+ * @member {module:model/Address} BusinessAddress
+ */
+Account.prototype['BusinessAddress'] = undefined;
+
+/**
+ * Is this a cannabis customer?
+ * @member {Boolean} CannabisCustomer
+ */
+Account.prototype['CannabisCustomer'] = undefined;
+
+/**
+ * Channel Program Level Name
+ * @member {String} ChannelProgramLevelName
+ */
+Account.prototype['ChannelProgramLevelName'] = undefined;
+
+/**
+ * Channel Program Name
+ * @member {String} ChannelProgramName
+ */
+Account.prototype['ChannelProgramName'] = undefined;
+
+/**
+ * Client End Date
+ * @member {String} ClientEndDate
+ */
+Account.prototype['ClientEndDate'] = undefined;
+
+/**
+ * Client Start Date
+ * @member {String} ClientStartDate
+ */
+Account.prototype['ClientStartDate'] = undefined;
+
+/**
+ * The Company ID of this Account
+ * @member {String} CompanyID
+ */
+Account.prototype['CompanyID'] = undefined;
+
+/**
+ * The Id of the geo coordinates of this account
+ * @member {String} CoordinateID
+ */
+Account.prototype['CoordinateID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Account.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Account.prototype['CreatedDate'] = undefined;
+
+/**
+ * Customer ID from source system
+ * @member {String} CustomerID
+ */
+Account.prototype['CustomerID'] = undefined;
+
+/**
+ * Customer Priority
+ * @member {String} CustomerPriority
+ */
+Account.prototype['CustomerPriority'] = undefined;
+
+/**
+ * This Account's 'Doing Business As' name
+ * @member {String} DBA
+ */
+Account.prototype['DBA'] = undefined;
+
+/**
+ * D-U-N-S Number
+ * @member {String} DUNSNumber
+ */
+Account.prototype['DUNSNumber'] = undefined;
+
+/**
+ * D-n-B Company
+ * @member {String} DandBCompanyID
+ */
+Account.prototype['DandBCompanyID'] = undefined;
+
+/**
+ * @member {module:model/Address} DefaultAddress
+ */
+Account.prototype['DefaultAddress'] = undefined;
+
+/**
+ * Default Backend ID
+ * @member {String} DefaultBackendID
+ */
+Account.prototype['DefaultBackendID'] = undefined;
+
+/**
+ * Default Delivery Address Contact ID
+ * @member {String} DefaultDeliveryContactID
+ */
+Account.prototype['DefaultDeliveryContactID'] = undefined;
+
+/**
+ * Default End User Contact ID
+ * @member {String} DefaultEndUserID
+ */
+Account.prototype['DefaultEndUserID'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Account.prototype['Description'] = undefined;
+
+/**
+ * EIN
+ * @member {String} EIN
+ */
+Account.prototype['EIN'] = undefined;
+
+/**
+ * Main Account Email
+ * @member {String} Email
+ */
+Account.prototype['Email'] = undefined;
+
+/**
+ * Enrollment Status
+ * @member {String} EnrollmentStatus
+ */
+Account.prototype['EnrollmentStatus'] = undefined;
+
+/**
+ * Fax
+ * @member {String} Fax
+ */
+Account.prototype['Fax'] = undefined;
+
+/**
+ * Taxnexus Account Id
+ * @member {String} ID
+ */
+Account.prototype['ID'] = undefined;
+
+/**
+ * ISP Customer?
+ * @member {Boolean} ISPCustomer
+ */
+Account.prototype['ISPCustomer'] = undefined;
+
+/**
+ * Industry
+ * @member {String} Industry
+ */
+Account.prototype['Industry'] = undefined;
+
+/**
+ * Customer Portal Account
+ * @member {Boolean} IsCustomerPortal
+ */
+Account.prototype['IsCustomerPortal'] = undefined;
+
+/**
+ * Partner Account
+ * @member {Boolean} IsPartner
+ */
+Account.prototype['IsPartner'] = undefined;
+
+/**
+ * Data.com Key
+ * @member {String} JigSaw
+ */
+Account.prototype['JigSaw'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Account.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Account.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * MSP Customer?
+ * @member {Boolean} MSPCustomer
+ */
+Account.prototype['MSPCustomer'] = undefined;
+
+/**
+ * NAICS Code
+ * @member {String} NAICSCode
+ */
+Account.prototype['NAICSCode'] = undefined;
+
+/**
+ * NAICS Description
+ * @member {String} NAICSDesc
+ */
+Account.prototype['NAICSDesc'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} Name
+ */
+Account.prototype['Name'] = undefined;
+
+/**
+ * Employee Count Estimate
+ * @member {Number} NumberOfEmployees
+ */
+Account.prototype['NumberOfEmployees'] = undefined;
+
+/**
+ * Number of Locations Estimate
+ * @member {Number} NumberOfLocations
+ */
+Account.prototype['NumberOfLocations'] = undefined;
+
+/**
+ * Open Charges
+ * @member {Number} OpenCharges
+ */
+Account.prototype['OpenCharges'] = undefined;
+
+/**
+ * Vendor Order Contact ID
+ * @member {String} OrderContactID
+ */
+Account.prototype['OrderContactID'] = undefined;
+
+/**
+ * Order Email
+ * @member {String} OrderEmail
+ */
+Account.prototype['OrderEmail'] = undefined;
+
+/**
+ * Account Owner User ID
+ * @member {String} OwnerID
+ */
+Account.prototype['OwnerID'] = undefined;
+
+/**
+ * Ownership
+ * @member {String} Ownership
+ */
+Account.prototype['Ownership'] = undefined;
+
+/**
+ * Parent Foreign Key
+ * @member {String} ParentFK
+ */
+Account.prototype['ParentFK'] = undefined;
+
+/**
+ * Parent Account
+ * @member {String} ParentID
+ */
+Account.prototype['ParentID'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+Account.prototype['Phone'] = undefined;
+
+/**
+ * The ID of the Place situs record that applies to this Account
+ * @member {String} PlaceID
+ */
+Account.prototype['PlaceID'] = undefined;
+
+/**
+ * Tax Preparer Contact ID
+ * @member {String} PreparerID
+ */
+Account.prototype['PreparerID'] = undefined;
+
+/**
+ * Rating
+ * @member {String} Rating
+ */
+Account.prototype['Rating'] = undefined;
+
+/**
+ * Rating Engine identifier
+ * @member {String} RatingEngineID
+ */
+Account.prototype['RatingEngineID'] = undefined;
+
+/**
+ * External Reference ID
+ * @member {String} Ref
+ */
+Account.prototype['Ref'] = undefined;
+
+/**
+ * Rollup Revenue Base
+ * @member {Number} RevenueBase
+ */
+Account.prototype['RevenueBase'] = undefined;
+
+/**
+ * Rollup Revenue Net
+ * @member {Number} RevenueNet
+ */
+Account.prototype['RevenueNet'] = undefined;
+
+/**
+ * Rollup Revenue Not Taxable
+ * @member {Number} RevenueNotTaxable
+ */
+Account.prototype['RevenueNotTaxable'] = undefined;
+
+/**
+ * SIC Code
+ * @member {String} SIC
+ */
+Account.prototype['SIC'] = undefined;
+
+/**
+ * SIC Description
+ * @member {String} SICDesc
+ */
+Account.prototype['SICDesc'] = undefined;
+
+/**
+ * @member {module:model/Address} ShippingAddress
+ */
+Account.prototype['ShippingAddress'] = undefined;
+
+/**
+ * Shipping Census Tract
+ * @member {String} ShippingCensusTract
+ */
+Account.prototype['ShippingCensusTract'] = undefined;
+
+/**
+ * Shipping Contact ID
+ * @member {String} ShippingContactID
+ */
+Account.prototype['ShippingContactID'] = undefined;
+
+/**
+ * Shipping County
+ * @member {String} ShippingCounty
+ */
+Account.prototype['ShippingCounty'] = undefined;
+
+/**
+ * Account Site
+ * @member {String} Site
+ */
+Account.prototype['Site'] = undefined;
+
+/**
+ * Account Status
+ * @member {String} Status
+ */
+Account.prototype['Status'] = undefined;
+
+/**
+ * Tax Exemption
+ * @member {String} TaxExemption
+ */
+Account.prototype['TaxExemption'] = undefined;
+
+/**
+ * Rollup Tax On Tax
+ * @member {Number} TaxOnTax
+ */
+Account.prototype['TaxOnTax'] = undefined;
+
+/**
+ * Telecom Customer?
+ * @member {Boolean} TelecomCustomer
+ */
+Account.prototype['TelecomCustomer'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Account.prototype['TenantID'] = undefined;
+
+/**
+ * Ticker Symbol
+ * @member {String} TickerSymbol
+ */
+Account.prototype['TickerSymbol'] = undefined;
+
+/**
+ * Tradestyle
+ * @member {String} TradeStyle
+ */
+Account.prototype['TradeStyle'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Account.prototype['Type'] = undefined;
+
+/**
+ * Unapplied Payments
+ * @member {Number} UnappliedPayments
+ */
+Account.prototype['UnappliedPayments'] = undefined;
+
+/**
+ * Rollup Unit Base
+ * @member {Number} UnitBase
+ */
+Account.prototype['UnitBase'] = undefined;
+
+/**
+ * Upsell Opportunity
+ * @member {String} UpsellOpportunity
+ */
+Account.prototype['UpsellOpportunity'] = undefined;
+
+/**
+ * WHMCS Client ID
+ * @member {Number} WHMCSClientID
+ */
+Account.prototype['WHMCSClientID'] = undefined;
+
+/**
+ * Website
+ * @member {String} Website
+ */
+Account.prototype['Website'] = undefined;
+
+/**
+ * Xero Contact ID
+ * @member {String} XeroContactID
+ */
+Account.prototype['XeroContactID'] = undefined;
+
+/**
+ * Year Started
+ * @member {String} YearStarted
+ */
+Account.prototype['YearStarted'] = undefined;
+
+
+
+
+
+
+export default Account;
+
diff --git a/client/crm/src/model/AccountBasic.js b/client/crm/src/model/AccountBasic.js
new file mode 100644
index 0000000..e32e828
--- /dev/null
+++ b/client/crm/src/model/AccountBasic.js
@@ -0,0 +1,277 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The AccountBasic model module.
+ * @module model/AccountBasic
+ * @version 0.0.2
+ */
+class AccountBasic {
+ /**
+ * Constructs a new AccountBasic
.
+ * @alias module:model/AccountBasic
+ */
+ constructor() {
+
+ AccountBasic.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountBasic
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountBasic} obj Optional instance to populate.
+ * @return {module:model/AccountBasic} The populated AccountBasic
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountBasic();
+
+ if (data.hasOwnProperty('AccountNumber')) {
+ obj['AccountNumber'] = ApiClient.convertToType(data['AccountNumber'], 'String');
+ }
+ if (data.hasOwnProperty('BillingAddress')) {
+ obj['BillingAddress'] = Address.constructFromObject(data['BillingAddress']);
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('CoordinateID')) {
+ obj['CoordinateID'] = ApiClient.convertToType(data['CoordinateID'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerID')) {
+ obj['CustomerID'] = ApiClient.convertToType(data['CustomerID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultAddress')) {
+ obj['DefaultAddress'] = Address.constructFromObject(data['DefaultAddress']);
+ }
+ if (data.hasOwnProperty('DefaultBackendID')) {
+ obj['DefaultBackendID'] = ApiClient.convertToType(data['DefaultBackendID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultDeliveryContactID')) {
+ obj['DefaultDeliveryContactID'] = ApiClient.convertToType(data['DefaultDeliveryContactID'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultEndUserID')) {
+ obj['DefaultEndUserID'] = ApiClient.convertToType(data['DefaultEndUserID'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('ParentFK')) {
+ obj['ParentFK'] = ApiClient.convertToType(data['ParentFK'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PreparerID')) {
+ obj['PreparerID'] = ApiClient.convertToType(data['PreparerID'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('ShippingAddress')) {
+ obj['ShippingAddress'] = Address.constructFromObject(data['ShippingAddress']);
+ }
+ if (data.hasOwnProperty('ShippingContactID')) {
+ obj['ShippingContactID'] = ApiClient.convertToType(data['ShippingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('Site')) {
+ obj['Site'] = ApiClient.convertToType(data['Site'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('Website')) {
+ obj['Website'] = ApiClient.convertToType(data['Website'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the OEM/Reseller
+ * @member {String} AccountNumber
+ */
+AccountBasic.prototype['AccountNumber'] = undefined;
+
+/**
+ * @member {module:model/Address} BillingAddress
+ */
+AccountBasic.prototype['BillingAddress'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} BillingContactID
+ */
+AccountBasic.prototype['BillingContactID'] = undefined;
+
+/**
+ * Taxnexus OEM/Reseller Record Id
+ * @member {String} CompanyID
+ */
+AccountBasic.prototype['CompanyID'] = undefined;
+
+/**
+ * The id of the Coordinate of the business establishment
+ * @member {String} CoordinateID
+ */
+AccountBasic.prototype['CoordinateID'] = undefined;
+
+/**
+ * Taxpayer Customer Id designated by OEM/Reseller
+ * @member {String} CustomerID
+ */
+AccountBasic.prototype['CustomerID'] = undefined;
+
+/**
+ * @member {module:model/Address} DefaultAddress
+ */
+AccountBasic.prototype['DefaultAddress'] = undefined;
+
+/**
+ * Default Backend ID
+ * @member {String} DefaultBackendID
+ */
+AccountBasic.prototype['DefaultBackendID'] = undefined;
+
+/**
+ * Default Delivery Address Contact ID
+ * @member {String} DefaultDeliveryContactID
+ */
+AccountBasic.prototype['DefaultDeliveryContactID'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} DefaultEndUserID
+ */
+AccountBasic.prototype['DefaultEndUserID'] = undefined;
+
+/**
+ * Taxpayer Public Email Address
+ * @member {String} Email
+ */
+AccountBasic.prototype['Email'] = undefined;
+
+/**
+ * Taxpayer Fax Number
+ * @member {String} Fax
+ */
+AccountBasic.prototype['Fax'] = undefined;
+
+/**
+ * Taxpayer Account Record Id
+ * @member {String} ID
+ */
+AccountBasic.prototype['ID'] = undefined;
+
+/**
+ * Taxpayer Account Name (ignored for Tax Processing)
+ * @member {String} Name
+ */
+AccountBasic.prototype['Name'] = undefined;
+
+/**
+ * UUID Reference the master record that owns this item
+ * @member {String} ParentFK
+ */
+AccountBasic.prototype['ParentFK'] = undefined;
+
+/**
+ * Taxpayer Public Phone Number
+ * @member {String} Phone
+ */
+AccountBasic.prototype['Phone'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} PreparerID
+ */
+AccountBasic.prototype['PreparerID'] = undefined;
+
+/**
+ * Source System identifier for this record, if any
+ * @member {String} Ref
+ */
+AccountBasic.prototype['Ref'] = undefined;
+
+/**
+ * @member {module:model/Address} ShippingAddress
+ */
+AccountBasic.prototype['ShippingAddress'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ShippingContactID
+ */
+AccountBasic.prototype['ShippingContactID'] = undefined;
+
+/**
+ * Taxpayer Location Designation
+ * @member {String} Site
+ */
+AccountBasic.prototype['Site'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+AccountBasic.prototype['TenantID'] = undefined;
+
+/**
+ * Account Type
+ * @member {String} Type
+ */
+AccountBasic.prototype['Type'] = undefined;
+
+/**
+ * Taxpayer Website
+ * @member {String} Website
+ */
+AccountBasic.prototype['Website'] = undefined;
+
+
+
+
+
+
+export default AccountBasic;
+
diff --git a/client/crm/src/model/AccountBasicResponse.js b/client/crm/src/model/AccountBasicResponse.js
new file mode 100644
index 0000000..74ffda6
--- /dev/null
+++ b/client/crm/src/model/AccountBasicResponse.js
@@ -0,0 +1,81 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import AccountBasic from './AccountBasic';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The AccountBasicResponse model module.
+ * @module model/AccountBasicResponse
+ * @version 0.0.2
+ */
+class AccountBasicResponse {
+ /**
+ * Constructs a new AccountBasicResponse
.
+ * @alias module:model/AccountBasicResponse
+ */
+ constructor() {
+
+ AccountBasicResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountBasicResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountBasicResponse} obj Optional instance to populate.
+ * @return {module:model/AccountBasicResponse} The populated AccountBasicResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountBasicResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [AccountBasic]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+AccountBasicResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+AccountBasicResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default AccountBasicResponse;
+
diff --git a/client/crm/src/model/AccountRequest.js b/client/crm/src/model/AccountRequest.js
new file mode 100644
index 0000000..9632eab
--- /dev/null
+++ b/client/crm/src/model/AccountRequest.js
@@ -0,0 +1,73 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+
+/**
+ * The AccountRequest model module.
+ * @module model/AccountRequest
+ * @version 0.0.2
+ */
+class AccountRequest {
+ /**
+ * Constructs a new AccountRequest
.
+ * An array of Account objects with Contacts
+ * @alias module:model/AccountRequest
+ */
+ constructor() {
+
+ AccountRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountRequest} obj Optional instance to populate.
+ * @return {module:model/AccountRequest} The populated AccountRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Account]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+AccountRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default AccountRequest;
+
diff --git a/client/crm/src/model/AccountResponse.js b/client/crm/src/model/AccountResponse.js
new file mode 100644
index 0000000..e14a3d0
--- /dev/null
+++ b/client/crm/src/model/AccountResponse.js
@@ -0,0 +1,82 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The AccountResponse model module.
+ * @module model/AccountResponse
+ * @version 0.0.2
+ */
+class AccountResponse {
+ /**
+ * Constructs a new AccountResponse
.
+ * An array of Account objects with Contacts
+ * @alias module:model/AccountResponse
+ */
+ constructor() {
+
+ AccountResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountResponse} obj Optional instance to populate.
+ * @return {module:model/AccountResponse} The populated AccountResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Account]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+AccountResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+AccountResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default AccountResponse;
+
diff --git a/client/crm/src/model/Address.js b/client/crm/src/model/Address.js
new file mode 100644
index 0000000..41b9d94
--- /dev/null
+++ b/client/crm/src/model/Address.js
@@ -0,0 +1,126 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Address model module.
+ * @module model/Address
+ * @version 0.0.2
+ */
+class Address {
+ /**
+ * Constructs a new Address
.
+ * @alias module:model/Address
+ */
+ constructor() {
+
+ Address.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('City')) {
+ obj['City'] = ApiClient.convertToType(data['City'], 'String');
+ }
+ if (data.hasOwnProperty('Country')) {
+ obj['Country'] = ApiClient.convertToType(data['Country'], 'String');
+ }
+ if (data.hasOwnProperty('CountryCode')) {
+ obj['CountryCode'] = ApiClient.convertToType(data['CountryCode'], 'String');
+ }
+ if (data.hasOwnProperty('PostalCode')) {
+ obj['PostalCode'] = ApiClient.convertToType(data['PostalCode'], 'String');
+ }
+ if (data.hasOwnProperty('State')) {
+ obj['State'] = ApiClient.convertToType(data['State'], 'String');
+ }
+ if (data.hasOwnProperty('StateCode')) {
+ obj['StateCode'] = ApiClient.convertToType(data['StateCode'], 'String');
+ }
+ if (data.hasOwnProperty('Street')) {
+ obj['Street'] = ApiClient.convertToType(data['Street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} City
+ */
+Address.prototype['City'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} Country
+ */
+Address.prototype['Country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} CountryCode
+ */
+Address.prototype['CountryCode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} PostalCode
+ */
+Address.prototype['PostalCode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} State
+ */
+Address.prototype['State'] = undefined;
+
+/**
+ * State Code
+ * @member {String} StateCode
+ */
+Address.prototype['StateCode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} Street
+ */
+Address.prototype['Street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/crm/src/model/Asset.js b/client/crm/src/model/Asset.js
new file mode 100644
index 0000000..c94b759
--- /dev/null
+++ b/client/crm/src/model/Asset.js
@@ -0,0 +1,486 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Asset model module.
+ * @module model/Asset
+ * @version 0.0.2
+ */
+class Asset {
+ /**
+ * Constructs a new Asset
.
+ * @alias module:model/Asset
+ */
+ constructor() {
+
+ Asset.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Asset
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Asset} obj Optional instance to populate.
+ * @return {module:model/Asset} The populated Asset
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Asset();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('AssetLevel')) {
+ obj['AssetLevel'] = ApiClient.convertToType(data['AssetLevel'], 'Number');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('AssetProvidedByID')) {
+ obj['AssetProvidedByID'] = ApiClient.convertToType(data['AssetProvidedByID'], 'String');
+ }
+ if (data.hasOwnProperty('AssetServicedByID')) {
+ obj['AssetServicedByID'] = ApiClient.convertToType(data['AssetServicedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyProductID')) {
+ obj['CompanyProductID'] = ApiClient.convertToType(data['CompanyProductID'], 'String');
+ }
+ if (data.hasOwnProperty('IsCompetitorProduct')) {
+ obj['IsCompetitorProduct'] = ApiClient.convertToType(data['IsCompetitorProduct'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ConsequenceOfFailure')) {
+ obj['ConsequenceOfFailure'] = ApiClient.convertToType(data['ConsequenceOfFailure'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CurrentAmount')) {
+ obj['CurrentAmount'] = ApiClient.convertToType(data['CurrentAmount'], 'Number');
+ }
+ if (data.hasOwnProperty('CurrentLifecycleEndDate')) {
+ obj['CurrentLifecycleEndDate'] = ApiClient.convertToType(data['CurrentLifecycleEndDate'], 'String');
+ }
+ if (data.hasOwnProperty('CurrentMrr')) {
+ obj['CurrentMrr'] = ApiClient.convertToType(data['CurrentMrr'], 'Number');
+ }
+ if (data.hasOwnProperty('CurrentQuantity')) {
+ obj['CurrentQuantity'] = ApiClient.convertToType(data['CurrentQuantity'], 'Number');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('DigitalAssetStatus')) {
+ obj['DigitalAssetStatus'] = ApiClient.convertToType(data['DigitalAssetStatus'], 'String');
+ }
+ if (data.hasOwnProperty('ExternalIdentifier')) {
+ obj['ExternalIdentifier'] = ApiClient.convertToType(data['ExternalIdentifier'], 'String');
+ }
+ if (data.hasOwnProperty('HasLifecycleManagement')) {
+ obj['HasLifecycleManagement'] = ApiClient.convertToType(data['HasLifecycleManagement'], 'Boolean');
+ }
+ if (data.hasOwnProperty('InstallDate')) {
+ obj['InstallDate'] = ApiClient.convertToType(data['InstallDate'], 'String');
+ }
+ if (data.hasOwnProperty('IsInternal')) {
+ obj['IsInternal'] = ApiClient.convertToType(data['IsInternal'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LocationID')) {
+ obj['LocationID'] = ApiClient.convertToType(data['LocationID'], 'String');
+ }
+ if (data.hasOwnProperty('ManufactureDate')) {
+ obj['ManufactureDate'] = ApiClient.convertToType(data['ManufactureDate'], 'String');
+ }
+ if (data.hasOwnProperty('MIMEType')) {
+ obj['MIMEType'] = ApiClient.convertToType(data['MIMEType'], 'String');
+ }
+ if (data.hasOwnProperty('ParentID')) {
+ obj['ParentID'] = ApiClient.convertToType(data['ParentID'], 'String');
+ }
+ if (data.hasOwnProperty('Price')) {
+ obj['Price'] = ApiClient.convertToType(data['Price'], 'Number');
+ }
+ if (data.hasOwnProperty('Product2ID')) {
+ obj['Product2ID'] = ApiClient.convertToType(data['Product2ID'], 'String');
+ }
+ if (data.hasOwnProperty('ProductCode')) {
+ obj['ProductCode'] = ApiClient.convertToType(data['ProductCode'], 'String');
+ }
+ if (data.hasOwnProperty('ProductDescription')) {
+ obj['ProductDescription'] = ApiClient.convertToType(data['ProductDescription'], 'String');
+ }
+ if (data.hasOwnProperty('ProductFamily')) {
+ obj['ProductFamily'] = ApiClient.convertToType(data['ProductFamily'], 'String');
+ }
+ if (data.hasOwnProperty('StockKeepingUnit')) {
+ obj['StockKeepingUnit'] = ApiClient.convertToType(data['StockKeepingUnit'], 'String');
+ }
+ if (data.hasOwnProperty('PurchaseDate')) {
+ obj['PurchaseDate'] = ApiClient.convertToType(data['PurchaseDate'], 'String');
+ }
+ if (data.hasOwnProperty('Quantity')) {
+ obj['Quantity'] = ApiClient.convertToType(data['Quantity'], 'Number');
+ }
+ if (data.hasOwnProperty('RootAssetID')) {
+ obj['RootAssetID'] = ApiClient.convertToType(data['RootAssetID'], 'String');
+ }
+ if (data.hasOwnProperty('SerialNumber')) {
+ obj['SerialNumber'] = ApiClient.convertToType(data['SerialNumber'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('StatusReason')) {
+ obj['StatusReason'] = ApiClient.convertToType(data['StatusReason'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TotalLifecycleAmount')) {
+ obj['TotalLifecycleAmount'] = ApiClient.convertToType(data['TotalLifecycleAmount'], 'Number');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('UUID')) {
+ obj['UUID'] = ApiClient.convertToType(data['UUID'], 'String');
+ }
+ if (data.hasOwnProperty('URL')) {
+ obj['URL'] = ApiClient.convertToType(data['URL'], 'String');
+ }
+ if (data.hasOwnProperty('UsageEndDate')) {
+ obj['UsageEndDate'] = ApiClient.convertToType(data['UsageEndDate'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Asset.prototype['ID'] = undefined;
+
+/**
+ * Account
+ * @member {String} AccountID
+ */
+Asset.prototype['AccountID'] = undefined;
+
+/**
+ * @member {module:model/Address} Address
+ */
+Asset.prototype['Address'] = undefined;
+
+/**
+ * Asset Level
+ * @member {Number} AssetLevel
+ */
+Asset.prototype['AssetLevel'] = undefined;
+
+/**
+ * Asset Name
+ * @member {String} Name
+ */
+Asset.prototype['Name'] = undefined;
+
+/**
+ * Asset Provided By
+ * @member {String} AssetProvidedByID
+ */
+Asset.prototype['AssetProvidedByID'] = undefined;
+
+/**
+ * Asset Serviced By
+ * @member {String} AssetServicedByID
+ */
+Asset.prototype['AssetServicedByID'] = undefined;
+
+/**
+ * Company Product
+ * @member {String} CompanyProductID
+ */
+Asset.prototype['CompanyProductID'] = undefined;
+
+/**
+ * Competitor Asset
+ * @member {Boolean} IsCompetitorProduct
+ */
+Asset.prototype['IsCompetitorProduct'] = undefined;
+
+/**
+ * Consequence Of Failure
+ * @member {String} ConsequenceOfFailure
+ */
+Asset.prototype['ConsequenceOfFailure'] = undefined;
+
+/**
+ * Contact
+ * @member {String} ContactID
+ */
+Asset.prototype['ContactID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Asset.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Asset.prototype['CreatedDate'] = undefined;
+
+/**
+ * Current Amount
+ * @member {Number} CurrentAmount
+ */
+Asset.prototype['CurrentAmount'] = undefined;
+
+/**
+ * Current Lifecycle End Date
+ * @member {String} CurrentLifecycleEndDate
+ */
+Asset.prototype['CurrentLifecycleEndDate'] = undefined;
+
+/**
+ * Current Monthly Recurring Revenue
+ * @member {Number} CurrentMrr
+ */
+Asset.prototype['CurrentMrr'] = undefined;
+
+/**
+ * Current Quantity
+ * @member {Number} CurrentQuantity
+ */
+Asset.prototype['CurrentQuantity'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Asset.prototype['Description'] = undefined;
+
+/**
+ * Digital Asset Status
+ * @member {String} DigitalAssetStatus
+ */
+Asset.prototype['DigitalAssetStatus'] = undefined;
+
+/**
+ * External Id
+ * @member {String} ExternalIdentifier
+ */
+Asset.prototype['ExternalIdentifier'] = undefined;
+
+/**
+ * Has Lifecycle Management
+ * @member {Boolean} HasLifecycleManagement
+ */
+Asset.prototype['HasLifecycleManagement'] = undefined;
+
+/**
+ * Install Date
+ * @member {String} InstallDate
+ */
+Asset.prototype['InstallDate'] = undefined;
+
+/**
+ * Internal Asset
+ * @member {Boolean} IsInternal
+ */
+Asset.prototype['IsInternal'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Asset.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Asset.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Location
+ * @member {String} LocationID
+ */
+Asset.prototype['LocationID'] = undefined;
+
+/**
+ * Manufacture Date
+ * @member {String} ManufactureDate
+ */
+Asset.prototype['ManufactureDate'] = undefined;
+
+/**
+ * MIME Type
+ * @member {String} MIMEType
+ */
+Asset.prototype['MIMEType'] = undefined;
+
+/**
+ * Parent Asset
+ * @member {String} ParentID
+ */
+Asset.prototype['ParentID'] = undefined;
+
+/**
+ * Price
+ * @member {Number} Price
+ */
+Asset.prototype['Price'] = undefined;
+
+/**
+ * Product
+ * @member {String} Product2ID
+ */
+Asset.prototype['Product2ID'] = undefined;
+
+/**
+ * Product Code
+ * @member {String} ProductCode
+ */
+Asset.prototype['ProductCode'] = undefined;
+
+/**
+ * Product Description
+ * @member {String} ProductDescription
+ */
+Asset.prototype['ProductDescription'] = undefined;
+
+/**
+ * Product Family
+ * @member {String} ProductFamily
+ */
+Asset.prototype['ProductFamily'] = undefined;
+
+/**
+ * Product SKU
+ * @member {String} StockKeepingUnit
+ */
+Asset.prototype['StockKeepingUnit'] = undefined;
+
+/**
+ * Purchase Date
+ * @member {String} PurchaseDate
+ */
+Asset.prototype['PurchaseDate'] = undefined;
+
+/**
+ * Quantity
+ * @member {Number} Quantity
+ */
+Asset.prototype['Quantity'] = undefined;
+
+/**
+ * Root Asset
+ * @member {String} RootAssetID
+ */
+Asset.prototype['RootAssetID'] = undefined;
+
+/**
+ * Serial Number
+ * @member {String} SerialNumber
+ */
+Asset.prototype['SerialNumber'] = undefined;
+
+/**
+ * Status
+ * @member {String} Status
+ */
+Asset.prototype['Status'] = undefined;
+
+/**
+ * Status Reason
+ * @member {String} StatusReason
+ */
+Asset.prototype['StatusReason'] = undefined;
+
+/**
+ * Tenant ID
+ * @member {String} TenantID
+ */
+Asset.prototype['TenantID'] = undefined;
+
+/**
+ * Total Lifecycle Amount
+ * @member {Number} TotalLifecycleAmount
+ */
+Asset.prototype['TotalLifecycleAmount'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Asset.prototype['Type'] = undefined;
+
+/**
+ * Unique Identifier
+ * @member {String} UUID
+ */
+Asset.prototype['UUID'] = undefined;
+
+/**
+ * URL
+ * @member {String} URL
+ */
+Asset.prototype['URL'] = undefined;
+
+/**
+ * Usage End Date
+ * @member {String} UsageEndDate
+ */
+Asset.prototype['UsageEndDate'] = undefined;
+
+
+
+
+
+
+export default Asset;
+
diff --git a/client/crm/src/model/AssetRequest.js b/client/crm/src/model/AssetRequest.js
new file mode 100644
index 0000000..1846737
--- /dev/null
+++ b/client/crm/src/model/AssetRequest.js
@@ -0,0 +1,73 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Asset from './Asset';
+
+/**
+ * The AssetRequest model module.
+ * @module model/AssetRequest
+ * @version 0.0.2
+ */
+class AssetRequest {
+ /**
+ * Constructs a new AssetRequest
.
+ * An array of Asset objects with Contacts
+ * @alias module:model/AssetRequest
+ */
+ constructor() {
+
+ AssetRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AssetRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AssetRequest} obj Optional instance to populate.
+ * @return {module:model/AssetRequest} The populated AssetRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AssetRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Asset]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+AssetRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default AssetRequest;
+
diff --git a/client/crm/src/model/AssetResponse.js b/client/crm/src/model/AssetResponse.js
new file mode 100644
index 0000000..3e666e9
--- /dev/null
+++ b/client/crm/src/model/AssetResponse.js
@@ -0,0 +1,82 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Asset from './Asset';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The AssetResponse model module.
+ * @module model/AssetResponse
+ * @version 0.0.2
+ */
+class AssetResponse {
+ /**
+ * Constructs a new AssetResponse
.
+ * An array of Asset objects with Contacts
+ * @alias module:model/AssetResponse
+ */
+ constructor() {
+
+ AssetResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AssetResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AssetResponse} obj Optional instance to populate.
+ * @return {module:model/AssetResponse} The populated AssetResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AssetResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Asset]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+AssetResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+AssetResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default AssetResponse;
+
diff --git a/client/crm/src/model/Contact.js b/client/crm/src/model/Contact.js
new file mode 100644
index 0000000..d8d22b7
--- /dev/null
+++ b/client/crm/src/model/Contact.js
@@ -0,0 +1,467 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Contact model module.
+ * @module model/Contact
+ * @version 0.0.2
+ */
+class Contact {
+ /**
+ * Constructs a new Contact
.
+ * @alias module:model/Contact
+ */
+ constructor() {
+
+ Contact.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Contact
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Contact} obj Optional instance to populate.
+ * @return {module:model/Contact} The populated Contact
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Contact();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('AssistantName')) {
+ obj['AssistantName'] = ApiClient.convertToType(data['AssistantName'], 'String');
+ }
+ if (data.hasOwnProperty('AssistantPhone')) {
+ obj['AssistantPhone'] = ApiClient.convertToType(data['AssistantPhone'], 'String');
+ }
+ if (data.hasOwnProperty('BirthDate')) {
+ obj['BirthDate'] = ApiClient.convertToType(data['BirthDate'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Department')) {
+ obj['Department'] = ApiClient.convertToType(data['Department'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('DoNotCall')) {
+ obj['DoNotCall'] = ApiClient.convertToType(data['DoNotCall'], 'Boolean');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EmailBounceDate')) {
+ obj['EmailBounceDate'] = ApiClient.convertToType(data['EmailBounceDate'], 'String');
+ }
+ if (data.hasOwnProperty('EmailBouncedReason')) {
+ obj['EmailBouncedReason'] = ApiClient.convertToType(data['EmailBouncedReason'], 'String');
+ }
+ if (data.hasOwnProperty('EnrollmentStatus')) {
+ obj['EnrollmentStatus'] = ApiClient.convertToType(data['EnrollmentStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('HasOptedOutOfEmail')) {
+ obj['HasOptedOutOfEmail'] = ApiClient.convertToType(data['HasOptedOutOfEmail'], 'Boolean');
+ }
+ if (data.hasOwnProperty('HasOptedOutOfFax')) {
+ obj['HasOptedOutOfFax'] = ApiClient.convertToType(data['HasOptedOutOfFax'], 'Boolean');
+ }
+ if (data.hasOwnProperty('HomePhone')) {
+ obj['HomePhone'] = ApiClient.convertToType(data['HomePhone'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsEmailBounced')) {
+ obj['IsEmailBounced'] = ApiClient.convertToType(data['IsEmailBounced'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsProvisioned')) {
+ obj['IsProvisioned'] = ApiClient.convertToType(data['IsProvisioned'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('LeadSource')) {
+ obj['LeadSource'] = ApiClient.convertToType(data['LeadSource'], 'String');
+ }
+ if (data.hasOwnProperty('Level')) {
+ obj['Level'] = ApiClient.convertToType(data['Level'], 'String');
+ }
+ if (data.hasOwnProperty('LinkedIn')) {
+ obj['LinkedIn'] = ApiClient.convertToType(data['LinkedIn'], 'String');
+ }
+ if (data.hasOwnProperty('MailingAddress')) {
+ obj['MailingAddress'] = Address.constructFromObject(data['MailingAddress']);
+ }
+ if (data.hasOwnProperty('MailingLists')) {
+ obj['MailingLists'] = ApiClient.convertToType(data['MailingLists'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OtherAddress')) {
+ obj['OtherAddress'] = Address.constructFromObject(data['OtherAddress']);
+ }
+ if (data.hasOwnProperty('OtherPhone')) {
+ obj['OtherPhone'] = ApiClient.convertToType(data['OtherPhone'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('PersonalEmail')) {
+ obj['PersonalEmail'] = ApiClient.convertToType(data['PersonalEmail'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PhotoURL')) {
+ obj['PhotoURL'] = ApiClient.convertToType(data['PhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('RecruitingStatus')) {
+ obj['RecruitingStatus'] = ApiClient.convertToType(data['RecruitingStatus'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('ReportsToID')) {
+ obj['ReportsToID'] = ApiClient.convertToType(data['ReportsToID'], 'String');
+ }
+ if (data.hasOwnProperty('Salutation')) {
+ obj['Salutation'] = ApiClient.convertToType(data['Salutation'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The primary account ID of this contact
+ * @member {String} AccountID
+ */
+Contact.prototype['AccountID'] = undefined;
+
+/**
+ * Assistant Name
+ * @member {String} AssistantName
+ */
+Contact.prototype['AssistantName'] = undefined;
+
+/**
+ * Asst. Phone
+ * @member {String} AssistantPhone
+ */
+Contact.prototype['AssistantPhone'] = undefined;
+
+/**
+ * Birthdate
+ * @member {String} BirthDate
+ */
+Contact.prototype['BirthDate'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Contact.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Contact.prototype['CreatedDate'] = undefined;
+
+/**
+ * Department
+ * @member {String} Department
+ */
+Contact.prototype['Department'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Contact.prototype['Description'] = undefined;
+
+/**
+ * Do Not Call?
+ * @member {Boolean} DoNotCall
+ */
+Contact.prototype['DoNotCall'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+Contact.prototype['Email'] = undefined;
+
+/**
+ * Email Bounce Date
+ * @member {String} EmailBounceDate
+ */
+Contact.prototype['EmailBounceDate'] = undefined;
+
+/**
+ * Email Bounce Reason
+ * @member {String} EmailBouncedReason
+ */
+Contact.prototype['EmailBouncedReason'] = undefined;
+
+/**
+ * Taxnexus Enrollment Status
+ * @member {String} EnrollmentStatus
+ */
+Contact.prototype['EnrollmentStatus'] = undefined;
+
+/**
+ * Fax Number
+ * @member {String} Fax
+ */
+Contact.prototype['Fax'] = undefined;
+
+/**
+ * First Name
+ * @member {String} FirstName
+ */
+Contact.prototype['FirstName'] = undefined;
+
+/**
+ * Email Opt Out
+ * @member {Boolean} HasOptedOutOfEmail
+ */
+Contact.prototype['HasOptedOutOfEmail'] = undefined;
+
+/**
+ * Fax Opt Out
+ * @member {Boolean} HasOptedOutOfFax
+ */
+Contact.prototype['HasOptedOutOfFax'] = undefined;
+
+/**
+ * Home Phone
+ * @member {String} HomePhone
+ */
+Contact.prototype['HomePhone'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Contact.prototype['ID'] = undefined;
+
+/**
+ * Does this contact have bounced emails?
+ * @member {Boolean} IsEmailBounced
+ */
+Contact.prototype['IsEmailBounced'] = undefined;
+
+/**
+ * Is Provisioned?
+ * @member {Boolean} IsProvisioned
+ */
+Contact.prototype['IsProvisioned'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Contact.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Contact.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Last Name
+ * @member {String} LastName
+ */
+Contact.prototype['LastName'] = undefined;
+
+/**
+ * Lead Source
+ * @member {String} LeadSource
+ */
+Contact.prototype['LeadSource'] = undefined;
+
+/**
+ * Level
+ * @member {String} Level
+ */
+Contact.prototype['Level'] = undefined;
+
+/**
+ * LinkedIn Page
+ * @member {String} LinkedIn
+ */
+Contact.prototype['LinkedIn'] = undefined;
+
+/**
+ * @member {module:model/Address} MailingAddress
+ */
+Contact.prototype['MailingAddress'] = undefined;
+
+/**
+ * Mailing Lists
+ * @member {String} MailingLists
+ */
+Contact.prototype['MailingLists'] = undefined;
+
+/**
+ * Mobile Phone
+ * @member {String} MobilePhone
+ */
+Contact.prototype['MobilePhone'] = undefined;
+
+/**
+ * Full Name
+ * @member {String} Name
+ */
+Contact.prototype['Name'] = undefined;
+
+/**
+ * @member {module:model/Address} OtherAddress
+ */
+Contact.prototype['OtherAddress'] = undefined;
+
+/**
+ * Other Phone
+ * @member {String} OtherPhone
+ */
+Contact.prototype['OtherPhone'] = undefined;
+
+/**
+ * The User ID of the user who owns this Contact
+ * @member {String} OwnerID
+ */
+Contact.prototype['OwnerID'] = undefined;
+
+/**
+ * Personal Email Address for this Contact
+ * @member {String} PersonalEmail
+ */
+Contact.prototype['PersonalEmail'] = undefined;
+
+/**
+ * Phone Number
+ * @member {String} Phone
+ */
+Contact.prototype['Phone'] = undefined;
+
+/**
+ * URL of a photograph of this User
+ * @member {String} PhotoURL
+ */
+Contact.prototype['PhotoURL'] = undefined;
+
+/**
+ * Recruiting Status
+ * @member {String} RecruitingStatus
+ */
+Contact.prototype['RecruitingStatus'] = undefined;
+
+/**
+ * External reference to this contact, if any
+ * @member {String} Ref
+ */
+Contact.prototype['Ref'] = undefined;
+
+/**
+ * Reports To Contact ID
+ * @member {String} ReportsToID
+ */
+Contact.prototype['ReportsToID'] = undefined;
+
+/**
+ * Contact Salutation
+ * @member {String} Salutation
+ */
+Contact.prototype['Salutation'] = undefined;
+
+/**
+ * The Contact Status
+ * @member {String} Status
+ */
+Contact.prototype['Status'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Contact.prototype['TenantID'] = undefined;
+
+/**
+ * Contact Title
+ * @member {String} Title
+ */
+Contact.prototype['Title'] = undefined;
+
+/**
+ * Contact Type
+ * @member {String} Type
+ */
+Contact.prototype['Type'] = undefined;
+
+
+
+
+
+
+export default Contact;
+
diff --git a/client/crm/src/model/ContactRequest.js b/client/crm/src/model/ContactRequest.js
new file mode 100644
index 0000000..bbf2558
--- /dev/null
+++ b/client/crm/src/model/ContactRequest.js
@@ -0,0 +1,72 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contact from './Contact';
+
+/**
+ * The ContactRequest model module.
+ * @module model/ContactRequest
+ * @version 0.0.2
+ */
+class ContactRequest {
+ /**
+ * Constructs a new ContactRequest
.
+ * @alias module:model/ContactRequest
+ */
+ constructor() {
+
+ ContactRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContactRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContactRequest} obj Optional instance to populate.
+ * @return {module:model/ContactRequest} The populated ContactRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContactRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contact]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContactRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default ContactRequest;
+
diff --git a/client/crm/src/model/ContactResponse.js b/client/crm/src/model/ContactResponse.js
new file mode 100644
index 0000000..30dacb6
--- /dev/null
+++ b/client/crm/src/model/ContactResponse.js
@@ -0,0 +1,81 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contact from './Contact';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ContactResponse model module.
+ * @module model/ContactResponse
+ * @version 0.0.2
+ */
+class ContactResponse {
+ /**
+ * Constructs a new ContactResponse
.
+ * @alias module:model/ContactResponse
+ */
+ constructor() {
+
+ ContactResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContactResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContactResponse} obj Optional instance to populate.
+ * @return {module:model/ContactResponse} The populated ContactResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContactResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contact]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContactResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+ContactResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default ContactResponse;
+
diff --git a/client/crm/src/model/Contract.js b/client/crm/src/model/Contract.js
new file mode 100644
index 0000000..d373815
--- /dev/null
+++ b/client/crm/src/model/Contract.js
@@ -0,0 +1,332 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Contract model module.
+ * @module model/Contract
+ * @version 0.0.2
+ */
+class Contract {
+ /**
+ * Constructs a new Contract
.
+ * @alias module:model/Contract
+ */
+ constructor() {
+
+ Contract.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Contract
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Contract} obj Optional instance to populate.
+ * @return {module:model/Contract} The populated Contract
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Contract();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('ActivatedByID')) {
+ obj['ActivatedByID'] = ApiClient.convertToType(data['ActivatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('ActivatedDate')) {
+ obj['ActivatedDate'] = ApiClient.convertToType(data['ActivatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('BillingAddress')) {
+ obj['BillingAddress'] = Address.constructFromObject(data['BillingAddress']);
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanySignedDate')) {
+ obj['CompanySignedDate'] = ApiClient.convertToType(data['CompanySignedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CompanySignedID')) {
+ obj['CompanySignedID'] = ApiClient.convertToType(data['CompanySignedID'], 'String');
+ }
+ if (data.hasOwnProperty('ContractNumber')) {
+ obj['ContractNumber'] = ApiClient.convertToType(data['ContractNumber'], 'String');
+ }
+ if (data.hasOwnProperty('ContractTerm')) {
+ obj['ContractTerm'] = ApiClient.convertToType(data['ContractTerm'], 'Number');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedDate')) {
+ obj['CustomerSignedDate'] = ApiClient.convertToType(data['CustomerSignedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedID')) {
+ obj['CustomerSignedID'] = ApiClient.convertToType(data['CustomerSignedID'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedTitle')) {
+ obj['CustomerSignedTitle'] = ApiClient.convertToType(data['CustomerSignedTitle'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultEndUserID')) {
+ obj['DefaultEndUserID'] = ApiClient.convertToType(data['DefaultEndUserID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('EndDate')) {
+ obj['EndDate'] = ApiClient.convertToType(data['EndDate'], 'String');
+ }
+ if (data.hasOwnProperty('HourlyRate')) {
+ obj['HourlyRate'] = ApiClient.convertToType(data['HourlyRate'], 'Number');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('PaymentMethodID')) {
+ obj['PaymentMethodID'] = ApiClient.convertToType(data['PaymentMethodID'], 'String');
+ }
+ if (data.hasOwnProperty('PaymentTerms')) {
+ obj['PaymentTerms'] = ApiClient.convertToType(data['PaymentTerms'], 'String');
+ }
+ if (data.hasOwnProperty('Perpetual')) {
+ obj['Perpetual'] = ApiClient.convertToType(data['Perpetual'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ShippingAddress')) {
+ obj['ShippingAddress'] = Address.constructFromObject(data['ShippingAddress']);
+ }
+ if (data.hasOwnProperty('ShippingContactID')) {
+ obj['ShippingContactID'] = ApiClient.convertToType(data['ShippingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('StartDate')) {
+ obj['StartDate'] = ApiClient.convertToType(data['StartDate'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account
+ * @member {String} AccountID
+ */
+Contract.prototype['AccountID'] = undefined;
+
+/**
+ * Activated By
+ * @member {String} ActivatedByID
+ */
+Contract.prototype['ActivatedByID'] = undefined;
+
+/**
+ * Activated Date
+ * @member {String} ActivatedDate
+ */
+Contract.prototype['ActivatedDate'] = undefined;
+
+/**
+ * @member {module:model/Address} BillingAddress
+ */
+Contract.prototype['BillingAddress'] = undefined;
+
+/**
+ * Billing Contact
+ * @member {String} BillingContactID
+ */
+Contract.prototype['BillingContactID'] = undefined;
+
+/**
+ * Company Signed Date
+ * @member {String} CompanySignedDate
+ */
+Contract.prototype['CompanySignedDate'] = undefined;
+
+/**
+ * Company Signed By
+ * @member {String} CompanySignedID
+ */
+Contract.prototype['CompanySignedID'] = undefined;
+
+/**
+ * Contract Number
+ * @member {String} ContractNumber
+ */
+Contract.prototype['ContractNumber'] = undefined;
+
+/**
+ * Contract Term (months)
+ * @member {Number} ContractTerm
+ */
+Contract.prototype['ContractTerm'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Contract.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Contract.prototype['CreatedDate'] = undefined;
+
+/**
+ * Customer Signed Date
+ * @member {String} CustomerSignedDate
+ */
+Contract.prototype['CustomerSignedDate'] = undefined;
+
+/**
+ * Customer Signed By
+ * @member {String} CustomerSignedID
+ */
+Contract.prototype['CustomerSignedID'] = undefined;
+
+/**
+ * Customer Signed Title
+ * @member {String} CustomerSignedTitle
+ */
+Contract.prototype['CustomerSignedTitle'] = undefined;
+
+/**
+ * End User
+ * @member {String} DefaultEndUserID
+ */
+Contract.prototype['DefaultEndUserID'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Contract.prototype['Description'] = undefined;
+
+/**
+ * Contract End Date
+ * @member {String} EndDate
+ */
+Contract.prototype['EndDate'] = undefined;
+
+/**
+ * Hourly Rate
+ * @member {Number} HourlyRate
+ */
+Contract.prototype['HourlyRate'] = undefined;
+
+/**
+ * Telnexus Record Id
+ * @member {String} ID
+ */
+Contract.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Contract.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Contract.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Contract Name
+ * @member {String} Name
+ */
+Contract.prototype['Name'] = undefined;
+
+/**
+ * Payment Method
+ * @member {String} PaymentMethodID
+ */
+Contract.prototype['PaymentMethodID'] = undefined;
+
+/**
+ * Payment Terms
+ * @member {String} PaymentTerms
+ */
+Contract.prototype['PaymentTerms'] = undefined;
+
+/**
+ * Perpetual Agreement?
+ * @member {Boolean} Perpetual
+ */
+Contract.prototype['Perpetual'] = undefined;
+
+/**
+ * @member {module:model/Address} ShippingAddress
+ */
+Contract.prototype['ShippingAddress'] = undefined;
+
+/**
+ * Shipping Contact
+ * @member {String} ShippingContactID
+ */
+Contract.prototype['ShippingContactID'] = undefined;
+
+/**
+ * Contract Start Date
+ * @member {String} StartDate
+ */
+Contract.prototype['StartDate'] = undefined;
+
+/**
+ * Status
+ * @member {String} Status
+ */
+Contract.prototype['Status'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Contract.prototype['TenantID'] = undefined;
+
+
+
+
+
+
+export default Contract;
+
diff --git a/client/crm/src/model/ContractRequest.js b/client/crm/src/model/ContractRequest.js
new file mode 100644
index 0000000..b90a3ff
--- /dev/null
+++ b/client/crm/src/model/ContractRequest.js
@@ -0,0 +1,72 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contract from './Contract';
+
+/**
+ * The ContractRequest model module.
+ * @module model/ContractRequest
+ * @version 0.0.2
+ */
+class ContractRequest {
+ /**
+ * Constructs a new ContractRequest
.
+ * @alias module:model/ContractRequest
+ */
+ constructor() {
+
+ ContractRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContractRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContractRequest} obj Optional instance to populate.
+ * @return {module:model/ContractRequest} The populated ContractRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContractRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contract]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContractRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default ContractRequest;
+
diff --git a/client/crm/src/model/ContractResponse.js b/client/crm/src/model/ContractResponse.js
new file mode 100644
index 0000000..9def005
--- /dev/null
+++ b/client/crm/src/model/ContractResponse.js
@@ -0,0 +1,81 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contract from './Contract';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ContractResponse model module.
+ * @module model/ContractResponse
+ * @version 0.0.2
+ */
+class ContractResponse {
+ /**
+ * Constructs a new ContractResponse
.
+ * @alias module:model/ContractResponse
+ */
+ constructor() {
+
+ ContractResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContractResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContractResponse} obj Optional instance to populate.
+ * @return {module:model/ContractResponse} The populated ContractResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContractResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contract]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContractResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+ContractResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default ContractResponse;
+
diff --git a/client/crm/src/model/DeleteResponse.js b/client/crm/src/model/DeleteResponse.js
new file mode 100644
index 0000000..1286933
--- /dev/null
+++ b/client/crm/src/model/DeleteResponse.js
@@ -0,0 +1,81 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Message from './Message';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DeleteResponse model module.
+ * @module model/DeleteResponse
+ * @version 0.0.2
+ */
+class DeleteResponse {
+ /**
+ * Constructs a new DeleteResponse
.
+ * @alias module:model/DeleteResponse
+ */
+ constructor() {
+
+ DeleteResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DeleteResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DeleteResponse} obj Optional instance to populate.
+ * @return {module:model/DeleteResponse} The populated DeleteResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DeleteResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Message]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DeleteResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DeleteResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DeleteResponse;
+
diff --git a/client/crm/src/model/Error.js b/client/crm/src/model/Error.js
new file mode 100644
index 0000000..6970300
--- /dev/null
+++ b/client/crm/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/crm/src/model/InvalidError.js b/client/crm/src/model/InvalidError.js
new file mode 100644
index 0000000..d83cd68
--- /dev/null
+++ b/client/crm/src/model/InvalidError.js
@@ -0,0 +1,119 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Error from './Error';
+import InvalidErrorAllOf from './InvalidErrorAllOf';
+
+/**
+ * The InvalidError model module.
+ * @module model/InvalidError
+ * @version 0.0.2
+ */
+class InvalidError {
+ /**
+ * Constructs a new InvalidError
.
+ * @alias module:model/InvalidError
+ * @implements module:model/Error
+ * @implements module:model/InvalidErrorAllOf
+ */
+ constructor() {
+ Error.initialize(this);InvalidErrorAllOf.initialize(this);
+ InvalidError.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidError
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidError} obj Optional instance to populate.
+ * @return {module:model/InvalidError} The populated InvalidError
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidError();
+ Error.constructFromObject(data, obj);
+ InvalidErrorAllOf.constructFromObject(data, obj);
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+InvalidError.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+InvalidError.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+InvalidError.prototype['Message'] = undefined;
+
+/**
+ * @member {Array.} details
+ */
+InvalidError.prototype['details'] = undefined;
+
+
+// Implement Error interface:
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+// Implement InvalidErrorAllOf interface:
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+export default InvalidError;
+
diff --git a/client/crm/src/model/InvalidErrorAllOf.js b/client/crm/src/model/InvalidErrorAllOf.js
new file mode 100644
index 0000000..50e4e36
--- /dev/null
+++ b/client/crm/src/model/InvalidErrorAllOf.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The InvalidErrorAllOf model module.
+ * @module model/InvalidErrorAllOf
+ * @version 0.0.2
+ */
+class InvalidErrorAllOf {
+ /**
+ * Constructs a new InvalidErrorAllOf
.
+ * @alias module:model/InvalidErrorAllOf
+ */
+ constructor() {
+
+ InvalidErrorAllOf.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidErrorAllOf
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidErrorAllOf} obj Optional instance to populate.
+ * @return {module:model/InvalidErrorAllOf} The populated InvalidErrorAllOf
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidErrorAllOf();
+
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+
+
+export default InvalidErrorAllOf;
+
diff --git a/client/crm/src/model/Lead.js b/client/crm/src/model/Lead.js
new file mode 100644
index 0000000..94fa7e3
--- /dev/null
+++ b/client/crm/src/model/Lead.js
@@ -0,0 +1,315 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Lead model module.
+ * @module model/Lead
+ * @version 0.0.2
+ */
+class Lead {
+ /**
+ * Constructs a new Lead
.
+ * @alias module:model/Lead
+ */
+ constructor() {
+
+ Lead.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Lead
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Lead} obj Optional instance to populate.
+ * @return {module:model/Lead} The populated Lead
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Lead();
+
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('Company')) {
+ obj['Company'] = ApiClient.convertToType(data['Company'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerId')) {
+ obj['OwnerId'] = ApiClient.convertToType(data['OwnerId'], 'String');
+ }
+ if (data.hasOwnProperty('PartnerAccountId')) {
+ obj['PartnerAccountId'] = ApiClient.convertToType(data['PartnerAccountId'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('ProductID')) {
+ obj['ProductID'] = ApiClient.convertToType(data['ProductID'], 'String');
+ }
+ if (data.hasOwnProperty('RefererURL')) {
+ obj['RefererURL'] = ApiClient.convertToType(data['RefererURL'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('UTMCampaign')) {
+ obj['UTMCampaign'] = ApiClient.convertToType(data['UTMCampaign'], 'String');
+ }
+ if (data.hasOwnProperty('UTMContent')) {
+ obj['UTMContent'] = ApiClient.convertToType(data['UTMContent'], 'String');
+ }
+ if (data.hasOwnProperty('UTMMedium')) {
+ obj['UTMMedium'] = ApiClient.convertToType(data['UTMMedium'], 'String');
+ }
+ if (data.hasOwnProperty('UTMSource')) {
+ obj['UTMSource'] = ApiClient.convertToType(data['UTMSource'], 'String');
+ }
+ if (data.hasOwnProperty('UTMTerm')) {
+ obj['UTMTerm'] = ApiClient.convertToType(data['UTMTerm'], 'String');
+ }
+ if (data.hasOwnProperty('Website')) {
+ obj['Website'] = ApiClient.convertToType(data['Website'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {module:model/Address} Address
+ */
+Lead.prototype['Address'] = undefined;
+
+/**
+ * Company
+ * @member {String} Company
+ */
+Lead.prototype['Company'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Lead.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Lead.prototype['CreatedDate'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Lead.prototype['Description'] = undefined;
+
+/**
+ * Email
+ * @member {String} Email
+ */
+Lead.prototype['Email'] = undefined;
+
+/**
+ * First Name
+ * @member {String} FirstName
+ */
+Lead.prototype['FirstName'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Lead.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Lead.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Lead.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Last Name
+ * @member {String} LastName
+ */
+Lead.prototype['LastName'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} MobilePhone
+ */
+Lead.prototype['MobilePhone'] = undefined;
+
+/**
+ * Name
+ * @member {String} Name
+ */
+Lead.prototype['Name'] = undefined;
+
+/**
+ * LeadBasic Owner
+ * @member {String} OwnerId
+ */
+Lead.prototype['OwnerId'] = undefined;
+
+/**
+ * Partner Account
+ * @member {String} PartnerAccountId
+ */
+Lead.prototype['PartnerAccountId'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+Lead.prototype['Phone'] = undefined;
+
+/**
+ * Product
+ * @member {String} ProductID
+ */
+Lead.prototype['ProductID'] = undefined;
+
+/**
+ * referer_url
+ * @member {String} RefererURL
+ */
+Lead.prototype['RefererURL'] = undefined;
+
+/**
+ * LeadBasic Status
+ * @member {String} Status
+ */
+Lead.prototype['Status'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Lead.prototype['TenantID'] = undefined;
+
+/**
+ * Title
+ * @member {String} Title
+ */
+Lead.prototype['Title'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Lead.prototype['Type'] = undefined;
+
+/**
+ * utm_campaign
+ * @member {String} UTMCampaign
+ */
+Lead.prototype['UTMCampaign'] = undefined;
+
+/**
+ * utm_content
+ * @member {String} UTMContent
+ */
+Lead.prototype['UTMContent'] = undefined;
+
+/**
+ * utm_medium
+ * @member {String} UTMMedium
+ */
+Lead.prototype['UTMMedium'] = undefined;
+
+/**
+ * utm_source
+ * @member {String} UTMSource
+ */
+Lead.prototype['UTMSource'] = undefined;
+
+/**
+ * utm_term
+ * @member {String} UTMTerm
+ */
+Lead.prototype['UTMTerm'] = undefined;
+
+/**
+ * Website
+ * @member {String} Website
+ */
+Lead.prototype['Website'] = undefined;
+
+
+
+
+
+
+export default Lead;
+
diff --git a/client/crm/src/model/LeadRequest.js b/client/crm/src/model/LeadRequest.js
new file mode 100644
index 0000000..5099ef9
--- /dev/null
+++ b/client/crm/src/model/LeadRequest.js
@@ -0,0 +1,72 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Lead from './Lead';
+
+/**
+ * The LeadRequest model module.
+ * @module model/LeadRequest
+ * @version 0.0.2
+ */
+class LeadRequest {
+ /**
+ * Constructs a new LeadRequest
.
+ * @alias module:model/LeadRequest
+ */
+ constructor() {
+
+ LeadRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a LeadRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/LeadRequest} obj Optional instance to populate.
+ * @return {module:model/LeadRequest} The populated LeadRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new LeadRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Lead]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+LeadRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default LeadRequest;
+
diff --git a/client/crm/src/model/LeadResponse.js b/client/crm/src/model/LeadResponse.js
new file mode 100644
index 0000000..b86f07f
--- /dev/null
+++ b/client/crm/src/model/LeadResponse.js
@@ -0,0 +1,81 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Lead from './Lead';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The LeadResponse model module.
+ * @module model/LeadResponse
+ * @version 0.0.2
+ */
+class LeadResponse {
+ /**
+ * Constructs a new LeadResponse
.
+ * @alias module:model/LeadResponse
+ */
+ constructor() {
+
+ LeadResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a LeadResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/LeadResponse} obj Optional instance to populate.
+ * @return {module:model/LeadResponse} The populated LeadResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new LeadResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Lead]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+LeadResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+LeadResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default LeadResponse;
+
diff --git a/client/crm/src/model/Message.js b/client/crm/src/model/Message.js
new file mode 100644
index 0000000..ce60ad8
--- /dev/null
+++ b/client/crm/src/model/Message.js
@@ -0,0 +1,87 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Message model module.
+ * @module model/Message
+ * @version 0.0.2
+ */
+class Message {
+ /**
+ * Constructs a new Message
.
+ * @alias module:model/Message
+ */
+ constructor() {
+
+ Message.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Message
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Message} obj Optional instance to populate.
+ * @return {module:model/Message} The populated Message
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Message();
+
+ if (data.hasOwnProperty('message')) {
+ obj['message'] = ApiClient.convertToType(data['message'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} message
+ */
+Message.prototype['message'] = undefined;
+
+/**
+ * @member {String} ref
+ */
+Message.prototype['ref'] = undefined;
+
+/**
+ * @member {Number} status
+ */
+Message.prototype['status'] = undefined;
+
+
+
+
+
+
+export default Message;
+
diff --git a/client/crm/src/model/Pagination.js b/client/crm/src/model/Pagination.js
new file mode 100644
index 0000000..a004ac5
--- /dev/null
+++ b/client/crm/src/model/Pagination.js
@@ -0,0 +1,95 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Pagination model module.
+ * @module model/Pagination
+ * @version 0.0.2
+ */
+class Pagination {
+ /**
+ * Constructs a new Pagination
.
+ * @alias module:model/Pagination
+ */
+ constructor() {
+
+ Pagination.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Pagination
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Pagination} obj Optional instance to populate.
+ * @return {module:model/Pagination} The populated Pagination
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Pagination();
+
+ if (data.hasOwnProperty('limit')) {
+ obj['limit'] = ApiClient.convertToType(data['limit'], 'Number');
+ }
+ if (data.hasOwnProperty('pagesize')) {
+ obj['pagesize'] = ApiClient.convertToType(data['pagesize'], 'Number');
+ }
+ if (data.hasOwnProperty('poffset')) {
+ obj['poffset'] = ApiClient.convertToType(data['poffset'], 'Number');
+ }
+ if (data.hasOwnProperty('setsize')) {
+ obj['setsize'] = ApiClient.convertToType(data['setsize'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} limit
+ */
+Pagination.prototype['limit'] = undefined;
+
+/**
+ * @member {Number} pagesize
+ */
+Pagination.prototype['pagesize'] = undefined;
+
+/**
+ * @member {Number} poffset
+ */
+Pagination.prototype['poffset'] = undefined;
+
+/**
+ * @member {Number} setsize
+ */
+Pagination.prototype['setsize'] = undefined;
+
+
+
+
+
+
+export default Pagination;
+
diff --git a/client/crm/src/model/RequestMeta.js b/client/crm/src/model/RequestMeta.js
new file mode 100644
index 0000000..7184d63
--- /dev/null
+++ b/client/crm/src/model/RequestMeta.js
@@ -0,0 +1,74 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RequestMeta model module.
+ * @module model/RequestMeta
+ * @version 0.0.2
+ */
+class RequestMeta {
+ /**
+ * Constructs a new RequestMeta
.
+ * @alias module:model/RequestMeta
+ * @param taxnexusAccount {String} Taxnexus Account Number of the Reseller or OEM
+ */
+ constructor(taxnexusAccount) {
+
+ RequestMeta.initialize(this, taxnexusAccount);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, taxnexusAccount) {
+ obj['TaxnexusAccount'] = taxnexusAccount;
+ }
+
+ /**
+ * Constructs a RequestMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RequestMeta} obj Optional instance to populate.
+ * @return {module:model/RequestMeta} The populated RequestMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RequestMeta();
+
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the Reseller or OEM
+ * @member {String} TaxnexusAccount
+ */
+RequestMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default RequestMeta;
+
diff --git a/client/crm/src/model/ResponseMeta.js b/client/crm/src/model/ResponseMeta.js
new file mode 100644
index 0000000..63628b5
--- /dev/null
+++ b/client/crm/src/model/ResponseMeta.js
@@ -0,0 +1,171 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Pagination from './Pagination';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('Pagination')) {
+ obj['Pagination'] = Pagination.constructFromObject(data['Pagination']);
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * @member {module:model/Pagination} Pagination
+ */
+ResponseMeta.prototype['Pagination'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/crm/test/api/AccountsApi.spec.js b/client/crm/test/api/AccountsApi.spec.js
new file mode 100644
index 0000000..a4ae6b5
--- /dev/null
+++ b/client/crm/test/api/AccountsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AccountsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountsApi', function() {
+ describe('deleteAccount', function() {
+ it('should call deleteAccount successfully', function(done) {
+ //uncomment below and update the code to test deleteAccount
+ //instance.deleteAccount(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getAccounts', function() {
+ it('should call getAccounts successfully', function(done) {
+ //uncomment below and update the code to test getAccounts
+ //instance.getAccounts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getAccountsObservable', function() {
+ it('should call getAccountsObservable successfully', function(done) {
+ //uncomment below and update the code to test getAccountsObservable
+ //instance.getAccountsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postAccounts', function() {
+ it('should call postAccounts successfully', function(done) {
+ //uncomment below and update the code to test postAccounts
+ //instance.postAccounts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putAccount', function() {
+ it('should call putAccount successfully', function(done) {
+ //uncomment below and update the code to test putAccount
+ //instance.putAccount(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/api/AssetsApi.spec.js b/client/crm/test/api/AssetsApi.spec.js
new file mode 100644
index 0000000..0b865f4
--- /dev/null
+++ b/client/crm/test/api/AssetsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AssetsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AssetsApi', function() {
+ describe('deleteAsset', function() {
+ it('should call deleteAsset successfully', function(done) {
+ //uncomment below and update the code to test deleteAsset
+ //instance.deleteAsset(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getAssets', function() {
+ it('should call getAssets successfully', function(done) {
+ //uncomment below and update the code to test getAssets
+ //instance.getAssets(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getAssetsObservable', function() {
+ it('should call getAssetsObservable successfully', function(done) {
+ //uncomment below and update the code to test getAssetsObservable
+ //instance.getAssetsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postAssets', function() {
+ it('should call postAssets successfully', function(done) {
+ //uncomment below and update the code to test postAssets
+ //instance.postAssets(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putAsset', function() {
+ it('should call putAsset successfully', function(done) {
+ //uncomment below and update the code to test putAsset
+ //instance.putAsset(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/api/ContactsApi.spec.js b/client/crm/test/api/ContactsApi.spec.js
new file mode 100644
index 0000000..767e068
--- /dev/null
+++ b/client/crm/test/api/ContactsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContactsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactsApi', function() {
+ describe('deleteContact', function() {
+ it('should call deleteContact successfully', function(done) {
+ //uncomment below and update the code to test deleteContact
+ //instance.deleteContact(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getContacts', function() {
+ it('should call getContacts successfully', function(done) {
+ //uncomment below and update the code to test getContacts
+ //instance.getContacts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getContactsObservable', function() {
+ it('should call getContactsObservable successfully', function(done) {
+ //uncomment below and update the code to test getContactsObservable
+ //instance.getContactsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postContacts', function() {
+ it('should call postContacts successfully', function(done) {
+ //uncomment below and update the code to test postContacts
+ //instance.postContacts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putContacts', function() {
+ it('should call putContacts successfully', function(done) {
+ //uncomment below and update the code to test putContacts
+ //instance.putContacts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/api/ContractsApi.spec.js b/client/crm/test/api/ContractsApi.spec.js
new file mode 100644
index 0000000..2e4d795
--- /dev/null
+++ b/client/crm/test/api/ContractsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContractsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractsApi', function() {
+ describe('deleteContract', function() {
+ it('should call deleteContract successfully', function(done) {
+ //uncomment below and update the code to test deleteContract
+ //instance.deleteContract(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getContracts', function() {
+ it('should call getContracts successfully', function(done) {
+ //uncomment below and update the code to test getContracts
+ //instance.getContracts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getContractsObservable', function() {
+ it('should call getContractsObservable successfully', function(done) {
+ //uncomment below and update the code to test getContractsObservable
+ //instance.getContractsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postContracts', function() {
+ it('should call postContracts successfully', function(done) {
+ //uncomment below and update the code to test postContracts
+ //instance.postContracts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putContract', function() {
+ it('should call putContract successfully', function(done) {
+ //uncomment below and update the code to test putContract
+ //instance.putContract(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/api/CorsApi.spec.js b/client/crm/test/api/CorsApi.spec.js
new file mode 100644
index 0000000..151f4d3
--- /dev/null
+++ b/client/crm/test/api/CorsApi.spec.js
@@ -0,0 +1,153 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.CorsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('CorsApi', function() {
+ describe('accountOptions', function() {
+ it('should call accountOptions successfully', function(done) {
+ //uncomment below and update the code to test accountOptions
+ //instance.accountOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('accountOptionsObservable', function() {
+ it('should call accountOptionsObservable successfully', function(done) {
+ //uncomment below and update the code to test accountOptionsObservable
+ //instance.accountOptionsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('assetOptions', function() {
+ it('should call assetOptions successfully', function(done) {
+ //uncomment below and update the code to test assetOptions
+ //instance.assetOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('assetOptionsObservable', function() {
+ it('should call assetOptionsObservable successfully', function(done) {
+ //uncomment below and update the code to test assetOptionsObservable
+ //instance.assetOptionsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('contactOptions', function() {
+ it('should call contactOptions successfully', function(done) {
+ //uncomment below and update the code to test contactOptions
+ //instance.contactOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('contactOptionsObservable', function() {
+ it('should call contactOptionsObservable successfully', function(done) {
+ //uncomment below and update the code to test contactOptionsObservable
+ //instance.contactOptionsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('contractOptions', function() {
+ it('should call contractOptions successfully', function(done) {
+ //uncomment below and update the code to test contractOptions
+ //instance.contractOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('contractOptionsObservable', function() {
+ it('should call contractOptionsObservable successfully', function(done) {
+ //uncomment below and update the code to test contractOptionsObservable
+ //instance.contractOptionsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('leadOptions', function() {
+ it('should call leadOptions successfully', function(done) {
+ //uncomment below and update the code to test leadOptions
+ //instance.leadOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('leadOptionsObservable', function() {
+ it('should call leadOptionsObservable successfully', function(done) {
+ //uncomment below and update the code to test leadOptionsObservable
+ //instance.leadOptionsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/api/LeadsApi.spec.js b/client/crm/test/api/LeadsApi.spec.js
new file mode 100644
index 0000000..7fa3b2e
--- /dev/null
+++ b/client/crm/test/api/LeadsApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.LeadsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('LeadsApi', function() {
+ describe('deleteLead', function() {
+ it('should call deleteLead successfully', function(done) {
+ //uncomment below and update the code to test deleteLead
+ //instance.deleteLead(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getLeads', function() {
+ it('should call getLeads successfully', function(done) {
+ //uncomment below and update the code to test getLeads
+ //instance.getLeads(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getLeadsObservable', function() {
+ it('should call getLeadsObservable successfully', function(done) {
+ //uncomment below and update the code to test getLeadsObservable
+ //instance.getLeadsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postLeads', function() {
+ it('should call postLeads successfully', function(done) {
+ //uncomment below and update the code to test postLeads
+ //instance.postLeads(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putLeads', function() {
+ it('should call putLeads successfully', function(done) {
+ //uncomment below and update the code to test putLeads
+ //instance.putLeads(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/crm/test/model/Account.spec.js b/client/crm/test/model/Account.spec.js
new file mode 100644
index 0000000..51b6a7a
--- /dev/null
+++ b/client/crm/test/model/Account.spec.js
@@ -0,0 +1,587 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Account();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Account', function() {
+ it('should create an instance of Account', function() {
+ // uncomment below and update the code to test Account
+ //var instance = new Crm.Account();
+ //expect(instance).to.be.a(Crm.Account);
+ });
+
+ it('should have the property accountNumber (base name: "AccountNumber")', function() {
+ // uncomment below and update the code to test the property accountNumber
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountSource (base name: "AccountSource")', function() {
+ // uncomment below and update the code to test the property accountSource
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property administrativeLevel (base name: "AdministrativeLevel")', function() {
+ // uncomment below and update the code to test the property administrativeLevel
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amount (base name: "Amount")', function() {
+ // uncomment below and update the code to test the property amount
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountInvoiced (base name: "AmountInvoiced")', function() {
+ // uncomment below and update the code to test the property amountInvoiced
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountPaid (base name: "AmountPaid")', function() {
+ // uncomment below and update the code to test the property amountPaid
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property annualRevenue (base name: "AnnualRevenue")', function() {
+ // uncomment below and update the code to test the property annualRevenue
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property balance (base name: "Balance")', function() {
+ // uncomment below and update the code to test the property balance
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingAddress (base name: "BillingAddress")', function() {
+ // uncomment below and update the code to test the property billingAddress
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingPreference (base name: "BillingPreference")', function() {
+ // uncomment below and update the code to test the property billingPreference
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property businessAddress (base name: "BusinessAddress")', function() {
+ // uncomment below and update the code to test the property businessAddress
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property cannabisCustomer (base name: "CannabisCustomer")', function() {
+ // uncomment below and update the code to test the property cannabisCustomer
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelProgramLevelName (base name: "ChannelProgramLevelName")', function() {
+ // uncomment below and update the code to test the property channelProgramLevelName
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelProgramName (base name: "ChannelProgramName")', function() {
+ // uncomment below and update the code to test the property channelProgramName
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientEndDate (base name: "ClientEndDate")', function() {
+ // uncomment below and update the code to test the property clientEndDate
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientStartDate (base name: "ClientStartDate")', function() {
+ // uncomment below and update the code to test the property clientStartDate
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property coordinateID (base name: "CoordinateID")', function() {
+ // uncomment below and update the code to test the property coordinateID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerID (base name: "CustomerID")', function() {
+ // uncomment below and update the code to test the property customerID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerPriority (base name: "CustomerPriority")', function() {
+ // uncomment below and update the code to test the property customerPriority
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property DBA (base name: "DBA")', function() {
+ // uncomment below and update the code to test the property DBA
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dUNSNumber (base name: "DUNSNumber")', function() {
+ // uncomment below and update the code to test the property dUNSNumber
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dandBCompanyID (base name: "DandBCompanyID")', function() {
+ // uncomment below and update the code to test the property dandBCompanyID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultAddress (base name: "DefaultAddress")', function() {
+ // uncomment below and update the code to test the property defaultAddress
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultBackendID (base name: "DefaultBackendID")', function() {
+ // uncomment below and update the code to test the property defaultBackendID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultDeliveryContactID (base name: "DefaultDeliveryContactID")', function() {
+ // uncomment below and update the code to test the property defaultDeliveryContactID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultEndUserID (base name: "DefaultEndUserID")', function() {
+ // uncomment below and update the code to test the property defaultEndUserID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property EIN (base name: "EIN")', function() {
+ // uncomment below and update the code to test the property EIN
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentStatus (base name: "EnrollmentStatus")', function() {
+ // uncomment below and update the code to test the property enrollmentStatus
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property iSPCustomer (base name: "ISPCustomer")', function() {
+ // uncomment below and update the code to test the property iSPCustomer
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property industry (base name: "Industry")', function() {
+ // uncomment below and update the code to test the property industry
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isCustomerPortal (base name: "IsCustomerPortal")', function() {
+ // uncomment below and update the code to test the property isCustomerPortal
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isPartner (base name: "IsPartner")', function() {
+ // uncomment below and update the code to test the property isPartner
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property jigSaw (base name: "JigSaw")', function() {
+ // uncomment below and update the code to test the property jigSaw
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mSPCustomer (base name: "MSPCustomer")', function() {
+ // uncomment below and update the code to test the property mSPCustomer
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property nAICSCode (base name: "NAICSCode")', function() {
+ // uncomment below and update the code to test the property nAICSCode
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property nAICSDesc (base name: "NAICSDesc")', function() {
+ // uncomment below and update the code to test the property nAICSDesc
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberOfEmployees (base name: "NumberOfEmployees")', function() {
+ // uncomment below and update the code to test the property numberOfEmployees
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberOfLocations (base name: "NumberOfLocations")', function() {
+ // uncomment below and update the code to test the property numberOfLocations
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property openCharges (base name: "OpenCharges")', function() {
+ // uncomment below and update the code to test the property openCharges
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property orderContactID (base name: "OrderContactID")', function() {
+ // uncomment below and update the code to test the property orderContactID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property orderEmail (base name: "OrderEmail")', function() {
+ // uncomment below and update the code to test the property orderEmail
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownership (base name: "Ownership")', function() {
+ // uncomment below and update the code to test the property ownership
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentFK (base name: "ParentFK")', function() {
+ // uncomment below and update the code to test the property parentFK
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentID (base name: "ParentID")', function() {
+ // uncomment below and update the code to test the property parentID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property placeID (base name: "PlaceID")', function() {
+ // uncomment below and update the code to test the property placeID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property preparerID (base name: "PreparerID")', function() {
+ // uncomment below and update the code to test the property preparerID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property rating (base name: "Rating")', function() {
+ // uncomment below and update the code to test the property rating
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ratingEngineID (base name: "RatingEngineID")', function() {
+ // uncomment below and update the code to test the property ratingEngineID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueBase (base name: "RevenueBase")', function() {
+ // uncomment below and update the code to test the property revenueBase
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueNet (base name: "RevenueNet")', function() {
+ // uncomment below and update the code to test the property revenueNet
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenueNotTaxable (base name: "RevenueNotTaxable")', function() {
+ // uncomment below and update the code to test the property revenueNotTaxable
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property SIC (base name: "SIC")', function() {
+ // uncomment below and update the code to test the property SIC
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sICDesc (base name: "SICDesc")', function() {
+ // uncomment below and update the code to test the property sICDesc
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingAddress (base name: "ShippingAddress")', function() {
+ // uncomment below and update the code to test the property shippingAddress
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingCensusTract (base name: "ShippingCensusTract")', function() {
+ // uncomment below and update the code to test the property shippingCensusTract
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingContactID (base name: "ShippingContactID")', function() {
+ // uncomment below and update the code to test the property shippingContactID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingCounty (base name: "ShippingCounty")', function() {
+ // uncomment below and update the code to test the property shippingCounty
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property site (base name: "Site")', function() {
+ // uncomment below and update the code to test the property site
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxExemption (base name: "TaxExemption")', function() {
+ // uncomment below and update the code to test the property taxExemption
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxOnTax (base name: "TaxOnTax")', function() {
+ // uncomment below and update the code to test the property taxOnTax
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property telecomCustomer (base name: "TelecomCustomer")', function() {
+ // uncomment below and update the code to test the property telecomCustomer
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tickerSymbol (base name: "TickerSymbol")', function() {
+ // uncomment below and update the code to test the property tickerSymbol
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tradeStyle (base name: "TradeStyle")', function() {
+ // uncomment below and update the code to test the property tradeStyle
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unappliedPayments (base name: "UnappliedPayments")', function() {
+ // uncomment below and update the code to test the property unappliedPayments
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unitBase (base name: "UnitBase")', function() {
+ // uncomment below and update the code to test the property unitBase
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property upsellOpportunity (base name: "UpsellOpportunity")', function() {
+ // uncomment below and update the code to test the property upsellOpportunity
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property wHMCSClientID (base name: "WHMCSClientID")', function() {
+ // uncomment below and update the code to test the property wHMCSClientID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "Website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property xeroContactID (base name: "XeroContactID")', function() {
+ // uncomment below and update the code to test the property xeroContactID
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property yearStarted (base name: "YearStarted")', function() {
+ // uncomment below and update the code to test the property yearStarted
+ //var instance = new Crm.Account();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AccountBasic.spec.js b/client/crm/test/model/AccountBasic.spec.js
new file mode 100644
index 0000000..e6a05ee
--- /dev/null
+++ b/client/crm/test/model/AccountBasic.spec.js
@@ -0,0 +1,203 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AccountBasic();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountBasic', function() {
+ it('should create an instance of AccountBasic', function() {
+ // uncomment below and update the code to test AccountBasic
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be.a(Crm.AccountBasic);
+ });
+
+ it('should have the property accountNumber (base name: "AccountNumber")', function() {
+ // uncomment below and update the code to test the property accountNumber
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingAddress (base name: "BillingAddress")', function() {
+ // uncomment below and update the code to test the property billingAddress
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property coordinateID (base name: "CoordinateID")', function() {
+ // uncomment below and update the code to test the property coordinateID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerID (base name: "CustomerID")', function() {
+ // uncomment below and update the code to test the property customerID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultAddress (base name: "DefaultAddress")', function() {
+ // uncomment below and update the code to test the property defaultAddress
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultBackendID (base name: "DefaultBackendID")', function() {
+ // uncomment below and update the code to test the property defaultBackendID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultDeliveryContactID (base name: "DefaultDeliveryContactID")', function() {
+ // uncomment below and update the code to test the property defaultDeliveryContactID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultEndUserID (base name: "DefaultEndUserID")', function() {
+ // uncomment below and update the code to test the property defaultEndUserID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentFK (base name: "ParentFK")', function() {
+ // uncomment below and update the code to test the property parentFK
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property preparerID (base name: "PreparerID")', function() {
+ // uncomment below and update the code to test the property preparerID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingAddress (base name: "ShippingAddress")', function() {
+ // uncomment below and update the code to test the property shippingAddress
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingContactID (base name: "ShippingContactID")', function() {
+ // uncomment below and update the code to test the property shippingContactID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property site (base name: "Site")', function() {
+ // uncomment below and update the code to test the property site
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "Website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new Crm.AccountBasic();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AccountBasicResponse.spec.js b/client/crm/test/model/AccountBasicResponse.spec.js
new file mode 100644
index 0000000..0f9c24b
--- /dev/null
+++ b/client/crm/test/model/AccountBasicResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AccountBasicResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountBasicResponse', function() {
+ it('should create an instance of AccountBasicResponse', function() {
+ // uncomment below and update the code to test AccountBasicResponse
+ //var instance = new Crm.AccountBasicResponse();
+ //expect(instance).to.be.a(Crm.AccountBasicResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.AccountBasicResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.AccountBasicResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AccountRequest.spec.js b/client/crm/test/model/AccountRequest.spec.js
new file mode 100644
index 0000000..0b71c12
--- /dev/null
+++ b/client/crm/test/model/AccountRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AccountRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountRequest', function() {
+ it('should create an instance of AccountRequest', function() {
+ // uncomment below and update the code to test AccountRequest
+ //var instance = new Crm.AccountRequest();
+ //expect(instance).to.be.a(Crm.AccountRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.AccountRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AccountResponse.spec.js b/client/crm/test/model/AccountResponse.spec.js
new file mode 100644
index 0000000..80f0e2c
--- /dev/null
+++ b/client/crm/test/model/AccountResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AccountResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountResponse', function() {
+ it('should create an instance of AccountResponse', function() {
+ // uncomment below and update the code to test AccountResponse
+ //var instance = new Crm.AccountResponse();
+ //expect(instance).to.be.a(Crm.AccountResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.AccountResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.AccountResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Address.spec.js b/client/crm/test/model/Address.spec.js
new file mode 100644
index 0000000..7c9240d
--- /dev/null
+++ b/client/crm/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new Crm.Address();
+ //expect(instance).to.be.a(Crm.Address);
+ });
+
+ it('should have the property city (base name: "City")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "Country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countryCode (base name: "CountryCode")', function() {
+ // uncomment below and update the code to test the property countryCode
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalCode (base name: "PostalCode")', function() {
+ // uncomment below and update the code to test the property postalCode
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "State")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stateCode (base name: "StateCode")', function() {
+ // uncomment below and update the code to test the property stateCode
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "Street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new Crm.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Asset.spec.js b/client/crm/test/model/Asset.spec.js
new file mode 100644
index 0000000..ab74694
--- /dev/null
+++ b/client/crm/test/model/Asset.spec.js
@@ -0,0 +1,341 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Asset();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Asset', function() {
+ it('should create an instance of Asset', function() {
+ // uncomment below and update the code to test Asset
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be.a(Crm.Asset);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assetLevel (base name: "AssetLevel")', function() {
+ // uncomment below and update the code to test the property assetLevel
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assetProvidedByID (base name: "AssetProvidedByID")', function() {
+ // uncomment below and update the code to test the property assetProvidedByID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assetServicedByID (base name: "AssetServicedByID")', function() {
+ // uncomment below and update the code to test the property assetServicedByID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyProductID (base name: "CompanyProductID")', function() {
+ // uncomment below and update the code to test the property companyProductID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isCompetitorProduct (base name: "IsCompetitorProduct")', function() {
+ // uncomment below and update the code to test the property isCompetitorProduct
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property consequenceOfFailure (base name: "ConsequenceOfFailure")', function() {
+ // uncomment below and update the code to test the property consequenceOfFailure
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property currentAmount (base name: "CurrentAmount")', function() {
+ // uncomment below and update the code to test the property currentAmount
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property currentLifecycleEndDate (base name: "CurrentLifecycleEndDate")', function() {
+ // uncomment below and update the code to test the property currentLifecycleEndDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property currentMrr (base name: "CurrentMrr")', function() {
+ // uncomment below and update the code to test the property currentMrr
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property currentQuantity (base name: "CurrentQuantity")', function() {
+ // uncomment below and update the code to test the property currentQuantity
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property digitalAssetStatus (base name: "DigitalAssetStatus")', function() {
+ // uncomment below and update the code to test the property digitalAssetStatus
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property externalIdentifier (base name: "ExternalIdentifier")', function() {
+ // uncomment below and update the code to test the property externalIdentifier
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasLifecycleManagement (base name: "HasLifecycleManagement")', function() {
+ // uncomment below and update the code to test the property hasLifecycleManagement
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property installDate (base name: "InstallDate")', function() {
+ // uncomment below and update the code to test the property installDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isInternal (base name: "IsInternal")', function() {
+ // uncomment below and update the code to test the property isInternal
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property locationID (base name: "LocationID")', function() {
+ // uncomment below and update the code to test the property locationID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property manufactureDate (base name: "ManufactureDate")', function() {
+ // uncomment below and update the code to test the property manufactureDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mIMEType (base name: "MIMEType")', function() {
+ // uncomment below and update the code to test the property mIMEType
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentID (base name: "ParentID")', function() {
+ // uncomment below and update the code to test the property parentID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property price (base name: "Price")', function() {
+ // uncomment below and update the code to test the property price
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property product2ID (base name: "Product2ID")', function() {
+ // uncomment below and update the code to test the property product2ID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property productCode (base name: "ProductCode")', function() {
+ // uncomment below and update the code to test the property productCode
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property productDescription (base name: "ProductDescription")', function() {
+ // uncomment below and update the code to test the property productDescription
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property productFamily (base name: "ProductFamily")', function() {
+ // uncomment below and update the code to test the property productFamily
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stockKeepingUnit (base name: "StockKeepingUnit")', function() {
+ // uncomment below and update the code to test the property stockKeepingUnit
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property purchaseDate (base name: "PurchaseDate")', function() {
+ // uncomment below and update the code to test the property purchaseDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property quantity (base name: "Quantity")', function() {
+ // uncomment below and update the code to test the property quantity
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property rootAssetID (base name: "RootAssetID")', function() {
+ // uncomment below and update the code to test the property rootAssetID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serialNumber (base name: "SerialNumber")', function() {
+ // uncomment below and update the code to test the property serialNumber
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property statusReason (base name: "StatusReason")', function() {
+ // uncomment below and update the code to test the property statusReason
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property totalLifecycleAmount (base name: "TotalLifecycleAmount")', function() {
+ // uncomment below and update the code to test the property totalLifecycleAmount
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property UUID (base name: "UUID")', function() {
+ // uncomment below and update the code to test the property UUID
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property URL (base name: "URL")', function() {
+ // uncomment below and update the code to test the property URL
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property usageEndDate (base name: "UsageEndDate")', function() {
+ // uncomment below and update the code to test the property usageEndDate
+ //var instance = new Crm.Asset();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AssetRequest.spec.js b/client/crm/test/model/AssetRequest.spec.js
new file mode 100644
index 0000000..a35eff2
--- /dev/null
+++ b/client/crm/test/model/AssetRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AssetRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AssetRequest', function() {
+ it('should create an instance of AssetRequest', function() {
+ // uncomment below and update the code to test AssetRequest
+ //var instance = new Crm.AssetRequest();
+ //expect(instance).to.be.a(Crm.AssetRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.AssetRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/AssetResponse.spec.js b/client/crm/test/model/AssetResponse.spec.js
new file mode 100644
index 0000000..93dad17
--- /dev/null
+++ b/client/crm/test/model/AssetResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.AssetResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AssetResponse', function() {
+ it('should create an instance of AssetResponse', function() {
+ // uncomment below and update the code to test AssetResponse
+ //var instance = new Crm.AssetResponse();
+ //expect(instance).to.be.a(Crm.AssetResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.AssetResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.AssetResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Contact.spec.js b/client/crm/test/model/Contact.spec.js
new file mode 100644
index 0000000..5eb7ba4
--- /dev/null
+++ b/client/crm/test/model/Contact.spec.js
@@ -0,0 +1,329 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Contact();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Contact', function() {
+ it('should create an instance of Contact', function() {
+ // uncomment below and update the code to test Contact
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be.a(Crm.Contact);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantName (base name: "AssistantName")', function() {
+ // uncomment below and update the code to test the property assistantName
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantPhone (base name: "AssistantPhone")', function() {
+ // uncomment below and update the code to test the property assistantPhone
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property birthDate (base name: "BirthDate")', function() {
+ // uncomment below and update the code to test the property birthDate
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "Department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property doNotCall (base name: "DoNotCall")', function() {
+ // uncomment below and update the code to test the property doNotCall
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailBounceDate (base name: "EmailBounceDate")', function() {
+ // uncomment below and update the code to test the property emailBounceDate
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailBouncedReason (base name: "EmailBouncedReason")', function() {
+ // uncomment below and update the code to test the property emailBouncedReason
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentStatus (base name: "EnrollmentStatus")', function() {
+ // uncomment below and update the code to test the property enrollmentStatus
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasOptedOutOfEmail (base name: "HasOptedOutOfEmail")', function() {
+ // uncomment below and update the code to test the property hasOptedOutOfEmail
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasOptedOutOfFax (base name: "HasOptedOutOfFax")', function() {
+ // uncomment below and update the code to test the property hasOptedOutOfFax
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property homePhone (base name: "HomePhone")', function() {
+ // uncomment below and update the code to test the property homePhone
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isEmailBounced (base name: "IsEmailBounced")', function() {
+ // uncomment below and update the code to test the property isEmailBounced
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isProvisioned (base name: "IsProvisioned")', function() {
+ // uncomment below and update the code to test the property isProvisioned
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property leadSource (base name: "LeadSource")', function() {
+ // uncomment below and update the code to test the property leadSource
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property level (base name: "Level")', function() {
+ // uncomment below and update the code to test the property level
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property linkedIn (base name: "LinkedIn")', function() {
+ // uncomment below and update the code to test the property linkedIn
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailingAddress (base name: "MailingAddress")', function() {
+ // uncomment below and update the code to test the property mailingAddress
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailingLists (base name: "MailingLists")', function() {
+ // uncomment below and update the code to test the property mailingLists
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otherAddress (base name: "OtherAddress")', function() {
+ // uncomment below and update the code to test the property otherAddress
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otherPhone (base name: "OtherPhone")', function() {
+ // uncomment below and update the code to test the property otherPhone
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property personalEmail (base name: "PersonalEmail")', function() {
+ // uncomment below and update the code to test the property personalEmail
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property photoURL (base name: "PhotoURL")', function() {
+ // uncomment below and update the code to test the property photoURL
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recruitingStatus (base name: "RecruitingStatus")', function() {
+ // uncomment below and update the code to test the property recruitingStatus
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property reportsToID (base name: "ReportsToID")', function() {
+ // uncomment below and update the code to test the property reportsToID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property salutation (base name: "Salutation")', function() {
+ // uncomment below and update the code to test the property salutation
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Crm.Contact();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/ContactRequest.spec.js b/client/crm/test/model/ContactRequest.spec.js
new file mode 100644
index 0000000..b24b40b
--- /dev/null
+++ b/client/crm/test/model/ContactRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContactRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactRequest', function() {
+ it('should create an instance of ContactRequest', function() {
+ // uncomment below and update the code to test ContactRequest
+ //var instance = new Crm.ContactRequest();
+ //expect(instance).to.be.a(Crm.ContactRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.ContactRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/ContactResponse.spec.js b/client/crm/test/model/ContactResponse.spec.js
new file mode 100644
index 0000000..3391afd
--- /dev/null
+++ b/client/crm/test/model/ContactResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContactResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactResponse', function() {
+ it('should create an instance of ContactResponse', function() {
+ // uncomment below and update the code to test ContactResponse
+ //var instance = new Crm.ContactResponse();
+ //expect(instance).to.be.a(Crm.ContactResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.ContactResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.ContactResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Contract.spec.js b/client/crm/test/model/Contract.spec.js
new file mode 100644
index 0000000..1c2a21b
--- /dev/null
+++ b/client/crm/test/model/Contract.spec.js
@@ -0,0 +1,239 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Contract();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Contract', function() {
+ it('should create an instance of Contract', function() {
+ // uncomment below and update the code to test Contract
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be.a(Crm.Contract);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property activatedByID (base name: "ActivatedByID")', function() {
+ // uncomment below and update the code to test the property activatedByID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property activatedDate (base name: "ActivatedDate")', function() {
+ // uncomment below and update the code to test the property activatedDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingAddress (base name: "BillingAddress")', function() {
+ // uncomment below and update the code to test the property billingAddress
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companySignedDate (base name: "CompanySignedDate")', function() {
+ // uncomment below and update the code to test the property companySignedDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companySignedID (base name: "CompanySignedID")', function() {
+ // uncomment below and update the code to test the property companySignedID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contractNumber (base name: "ContractNumber")', function() {
+ // uncomment below and update the code to test the property contractNumber
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contractTerm (base name: "ContractTerm")', function() {
+ // uncomment below and update the code to test the property contractTerm
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedDate (base name: "CustomerSignedDate")', function() {
+ // uncomment below and update the code to test the property customerSignedDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedID (base name: "CustomerSignedID")', function() {
+ // uncomment below and update the code to test the property customerSignedID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedTitle (base name: "CustomerSignedTitle")', function() {
+ // uncomment below and update the code to test the property customerSignedTitle
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultEndUserID (base name: "DefaultEndUserID")', function() {
+ // uncomment below and update the code to test the property defaultEndUserID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endDate (base name: "EndDate")', function() {
+ // uncomment below and update the code to test the property endDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hourlyRate (base name: "HourlyRate")', function() {
+ // uncomment below and update the code to test the property hourlyRate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentMethodID (base name: "PaymentMethodID")', function() {
+ // uncomment below and update the code to test the property paymentMethodID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentTerms (base name: "PaymentTerms")', function() {
+ // uncomment below and update the code to test the property paymentTerms
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property perpetual (base name: "Perpetual")', function() {
+ // uncomment below and update the code to test the property perpetual
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingAddress (base name: "ShippingAddress")', function() {
+ // uncomment below and update the code to test the property shippingAddress
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingContactID (base name: "ShippingContactID")', function() {
+ // uncomment below and update the code to test the property shippingContactID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startDate (base name: "StartDate")', function() {
+ // uncomment below and update the code to test the property startDate
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.Contract();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/ContractRequest.spec.js b/client/crm/test/model/ContractRequest.spec.js
new file mode 100644
index 0000000..547c649
--- /dev/null
+++ b/client/crm/test/model/ContractRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContractRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractRequest', function() {
+ it('should create an instance of ContractRequest', function() {
+ // uncomment below and update the code to test ContractRequest
+ //var instance = new Crm.ContractRequest();
+ //expect(instance).to.be.a(Crm.ContractRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.ContractRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/ContractResponse.spec.js b/client/crm/test/model/ContractResponse.spec.js
new file mode 100644
index 0000000..c0e19c2
--- /dev/null
+++ b/client/crm/test/model/ContractResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ContractResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractResponse', function() {
+ it('should create an instance of ContractResponse', function() {
+ // uncomment below and update the code to test ContractResponse
+ //var instance = new Crm.ContractResponse();
+ //expect(instance).to.be.a(Crm.ContractResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.ContractResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.ContractResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/DeleteResponse.spec.js b/client/crm/test/model/DeleteResponse.spec.js
new file mode 100644
index 0000000..eab0e78
--- /dev/null
+++ b/client/crm/test/model/DeleteResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.DeleteResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DeleteResponse', function() {
+ it('should create an instance of DeleteResponse', function() {
+ // uncomment below and update the code to test DeleteResponse
+ //var instance = new Crm.DeleteResponse();
+ //expect(instance).to.be.a(Crm.DeleteResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Error.spec.js b/client/crm/test/model/Error.spec.js
new file mode 100644
index 0000000..1f75672
--- /dev/null
+++ b/client/crm/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Crm.Error();
+ //expect(instance).to.be.a(Crm.Error);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Crm.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Crm.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Crm.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/InvalidError.spec.js b/client/crm/test/model/InvalidError.spec.js
new file mode 100644
index 0000000..af2fd46
--- /dev/null
+++ b/client/crm/test/model/InvalidError.spec.js
@@ -0,0 +1,83 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.InvalidError();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidError', function() {
+ it('should create an instance of InvalidError', function() {
+ // uncomment below and update the code to test InvalidError
+ //var instance = new Crm.InvalidError();
+ //expect(instance).to.be.a(Crm.InvalidError);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Crm.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Crm.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Crm.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new Crm.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/InvalidErrorAllOf.spec.js b/client/crm/test/model/InvalidErrorAllOf.spec.js
new file mode 100644
index 0000000..e634284
--- /dev/null
+++ b/client/crm/test/model/InvalidErrorAllOf.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.InvalidErrorAllOf();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidErrorAllOf', function() {
+ it('should create an instance of InvalidErrorAllOf', function() {
+ // uncomment below and update the code to test InvalidErrorAllOf
+ //var instance = new Crm.InvalidErrorAllOf();
+ //expect(instance).to.be.a(Crm.InvalidErrorAllOf);
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new Crm.InvalidErrorAllOf();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Lead.spec.js b/client/crm/test/model/Lead.spec.js
new file mode 100644
index 0000000..c778317
--- /dev/null
+++ b/client/crm/test/model/Lead.spec.js
@@ -0,0 +1,227 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Lead();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Lead', function() {
+ it('should create an instance of Lead', function() {
+ // uncomment below and update the code to test Lead
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be.a(Crm.Lead);
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property company (base name: "Company")', function() {
+ // uncomment below and update the code to test the property company
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerId (base name: "OwnerId")', function() {
+ // uncomment below and update the code to test the property ownerId
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property partnerAccountId (base name: "PartnerAccountId")', function() {
+ // uncomment below and update the code to test the property partnerAccountId
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property productID (base name: "ProductID")', function() {
+ // uncomment below and update the code to test the property productID
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property refererURL (base name: "RefererURL")', function() {
+ // uncomment below and update the code to test the property refererURL
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMCampaign (base name: "UTMCampaign")', function() {
+ // uncomment below and update the code to test the property uTMCampaign
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMContent (base name: "UTMContent")', function() {
+ // uncomment below and update the code to test the property uTMContent
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMMedium (base name: "UTMMedium")', function() {
+ // uncomment below and update the code to test the property uTMMedium
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMSource (base name: "UTMSource")', function() {
+ // uncomment below and update the code to test the property uTMSource
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property uTMTerm (base name: "UTMTerm")', function() {
+ // uncomment below and update the code to test the property uTMTerm
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "Website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new Crm.Lead();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/LeadRequest.spec.js b/client/crm/test/model/LeadRequest.spec.js
new file mode 100644
index 0000000..061a82c
--- /dev/null
+++ b/client/crm/test/model/LeadRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.LeadRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('LeadRequest', function() {
+ it('should create an instance of LeadRequest', function() {
+ // uncomment below and update the code to test LeadRequest
+ //var instance = new Crm.LeadRequest();
+ //expect(instance).to.be.a(Crm.LeadRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.LeadRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/LeadResponse.spec.js b/client/crm/test/model/LeadResponse.spec.js
new file mode 100644
index 0000000..e8dca97
--- /dev/null
+++ b/client/crm/test/model/LeadResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.LeadResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('LeadResponse', function() {
+ it('should create an instance of LeadResponse', function() {
+ // uncomment below and update the code to test LeadResponse
+ //var instance = new Crm.LeadResponse();
+ //expect(instance).to.be.a(Crm.LeadResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Crm.LeadResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Crm.LeadResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Message.spec.js b/client/crm/test/model/Message.spec.js
new file mode 100644
index 0000000..f9eee76
--- /dev/null
+++ b/client/crm/test/model/Message.spec.js
@@ -0,0 +1,77 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Message();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Message', function() {
+ it('should create an instance of Message', function() {
+ // uncomment below and update the code to test Message
+ //var instance = new Crm.Message();
+ //expect(instance).to.be.a(Crm.Message);
+ });
+
+ it('should have the property message (base name: "message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Crm.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Crm.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Crm.Message();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/Pagination.spec.js b/client/crm/test/model/Pagination.spec.js
new file mode 100644
index 0000000..bf1a14f
--- /dev/null
+++ b/client/crm/test/model/Pagination.spec.js
@@ -0,0 +1,83 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.Pagination();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Pagination', function() {
+ it('should create an instance of Pagination', function() {
+ // uncomment below and update the code to test Pagination
+ //var instance = new Crm.Pagination();
+ //expect(instance).to.be.a(Crm.Pagination);
+ });
+
+ it('should have the property limit (base name: "limit")', function() {
+ // uncomment below and update the code to test the property limit
+ //var instance = new Crm.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagesize (base name: "pagesize")', function() {
+ // uncomment below and update the code to test the property pagesize
+ //var instance = new Crm.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property poffset (base name: "poffset")', function() {
+ // uncomment below and update the code to test the property poffset
+ //var instance = new Crm.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property setsize (base name: "setsize")', function() {
+ // uncomment below and update the code to test the property setsize
+ //var instance = new Crm.Pagination();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/RequestMeta.spec.js b/client/crm/test/model/RequestMeta.spec.js
new file mode 100644
index 0000000..4340f06
--- /dev/null
+++ b/client/crm/test/model/RequestMeta.spec.js
@@ -0,0 +1,65 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.RequestMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RequestMeta', function() {
+ it('should create an instance of RequestMeta', function() {
+ // uncomment below and update the code to test RequestMeta
+ //var instance = new Crm.RequestMeta();
+ //expect(instance).to.be.a(Crm.RequestMeta);
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Crm.RequestMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/crm/test/model/ResponseMeta.spec.js b/client/crm/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..7176c83
--- /dev/null
+++ b/client/crm/test/model/ResponseMeta.spec.js
@@ -0,0 +1,131 @@
+/**
+ * crm
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Crm);
+ }
+}(this, function(expect, Crm) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Crm.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be.a(Crm.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagination (base name: "Pagination")', function() {
+ // uncomment below and update the code to test the property pagination
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Crm.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/.babelrc b/client/devops/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/devops/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/devops/.gitignore b/client/devops/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/devops/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/devops/.openapi-generator-ignore b/client/devops/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/devops/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/devops/.openapi-generator/FILES b/client/devops/.openapi-generator/FILES
new file mode 100644
index 0000000..9e5b17c
--- /dev/null
+++ b/client/devops/.openapi-generator/FILES
@@ -0,0 +1,109 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Address.md
+docs/Cluster.md
+docs/ClusterApi.md
+docs/ClusterRequest.md
+docs/ClusterResponse.md
+docs/CorsApi.md
+docs/Database.md
+docs/DatabaseApi.md
+docs/DatabaseRequest.md
+docs/DatabaseResponse.md
+docs/DeleteResponse.md
+docs/Error.md
+docs/Message.md
+docs/Pagination.md
+docs/RequestMeta.md
+docs/ResponseMeta.md
+docs/Role.md
+docs/RoleRequest.md
+docs/RoleResponse.md
+docs/Template.md
+docs/TemplateApi.md
+docs/TemplateRequest.md
+docs/TemplateResponse.md
+docs/Tenant.md
+docs/TenantApi.md
+docs/TenantRequest.md
+docs/TenantResponse.md
+docs/TenantUser.md
+docs/User.md
+docs/UserApi.md
+docs/UserRequest.md
+docs/UserResponse.md
+docs/UserRole.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/ClusterApi.js
+src/api/CorsApi.js
+src/api/DatabaseApi.js
+src/api/TemplateApi.js
+src/api/TenantApi.js
+src/api/UserApi.js
+src/index.js
+src/model/Address.js
+src/model/Cluster.js
+src/model/ClusterRequest.js
+src/model/ClusterResponse.js
+src/model/Database.js
+src/model/DatabaseRequest.js
+src/model/DatabaseResponse.js
+src/model/DeleteResponse.js
+src/model/Error.js
+src/model/Message.js
+src/model/Pagination.js
+src/model/RequestMeta.js
+src/model/ResponseMeta.js
+src/model/Role.js
+src/model/RoleRequest.js
+src/model/RoleResponse.js
+src/model/Template.js
+src/model/TemplateRequest.js
+src/model/TemplateResponse.js
+src/model/Tenant.js
+src/model/TenantRequest.js
+src/model/TenantResponse.js
+src/model/TenantUser.js
+src/model/User.js
+src/model/UserRequest.js
+src/model/UserResponse.js
+src/model/UserRole.js
+test/api/ClusterApi.spec.js
+test/api/CorsApi.spec.js
+test/api/DatabaseApi.spec.js
+test/api/TemplateApi.spec.js
+test/api/TenantApi.spec.js
+test/api/UserApi.spec.js
+test/model/Address.spec.js
+test/model/Cluster.spec.js
+test/model/ClusterRequest.spec.js
+test/model/ClusterResponse.spec.js
+test/model/Database.spec.js
+test/model/DatabaseRequest.spec.js
+test/model/DatabaseResponse.spec.js
+test/model/DeleteResponse.spec.js
+test/model/Error.spec.js
+test/model/Message.spec.js
+test/model/Pagination.spec.js
+test/model/RequestMeta.spec.js
+test/model/ResponseMeta.spec.js
+test/model/Role.spec.js
+test/model/RoleRequest.spec.js
+test/model/RoleResponse.spec.js
+test/model/Template.spec.js
+test/model/TemplateRequest.spec.js
+test/model/TemplateResponse.spec.js
+test/model/Tenant.spec.js
+test/model/TenantRequest.spec.js
+test/model/TenantResponse.spec.js
+test/model/TenantUser.spec.js
+test/model/User.spec.js
+test/model/UserRequest.spec.js
+test/model/UserResponse.spec.js
+test/model/UserRole.spec.js
diff --git a/client/devops/.openapi-generator/VERSION b/client/devops/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/devops/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/devops/.travis.yml b/client/devops/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/devops/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/devops/README.md b/client/devops/README.md
new file mode 100644
index 0000000..41b1d3c
--- /dev/null
+++ b/client/devops/README.md
@@ -0,0 +1,206 @@
+# devops
+
+Devops - JavaScript client for devops
+System Operations Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install devops --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your devops from, and run:
+
+```shell
+npm link /path/to/
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+#### git
+
+If the library is hosted at a git repository, e.g.https://github.com/GIT_USER_ID/GIT_REPO_ID
+then install it via:
+
+```shell
+ npm install GIT_USER_ID/GIT_REPO_ID --save
+```
+
+### For browser
+
+The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
+the above steps with Node.js and installing browserify with `npm install -g browserify`,
+perform the following (assuming *main.js* is your entry file):
+
+```shell
+browserify main.js > bundle.js
+```
+
+Then include *bundle.js* in the HTML pages.
+
+### Webpack Configuration
+
+Using Webpack you may encounter the following error: "Module not found: Error:
+Cannot resolve module", most certainly you should disable AMD loader. Add/merge
+the following section to your webpack config:
+
+```javascript
+module: {
+ rules: [
+ {
+ parser: {
+ amd: false
+ }
+ }
+ ]
+}
+```
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following JS code:
+
+```javascript
+var Devops = require('devops');
+
+var defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+var ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = "YOUR API KEY"
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix['X-API-Key'] = "Token"
+
+var api = new Devops.ClusterApi()
+var clusterIdPath = "clusterIdPath_example"; // {String} Taxnexus Record Id of a Cluster
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.getCluster(clusterIdPath, callback);
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*Devops.ClusterApi* | [**getCluster**](docs/ClusterApi.md#getCluster) | **GET** /clusters/{clusterIdPath} | Get a single Cluster object
+*Devops.ClusterApi* | [**getClusters**](docs/ClusterApi.md#getClusters) | **GET** /clusters | Get a list Clusters
+*Devops.ClusterApi* | [**getClustersObservable**](docs/ClusterApi.md#getClustersObservable) | **GET** /clusters/observable | Get Clusters in an observable array
+*Devops.ClusterApi* | [**postClusters**](docs/ClusterApi.md#postClusters) | **POST** /clusters | Create new Clusters
+*Devops.ClusterApi* | [**putClusters**](docs/ClusterApi.md#putClusters) | **PUT** /clusters | Update Clustera
+*Devops.CorsApi* | [**clusterOptions**](docs/CorsApi.md#clusterOptions) | **OPTIONS** /clusters/observable |
+*Devops.CorsApi* | [**clustersOptions**](docs/CorsApi.md#clustersOptions) | **OPTIONS** /clusters |
+*Devops.CorsApi* | [**databaseOptions**](docs/CorsApi.md#databaseOptions) | **OPTIONS** /databases/observable |
+*Devops.CorsApi* | [**databasesOptions**](docs/CorsApi.md#databasesOptions) | **OPTIONS** /databases |
+*Devops.CorsApi* | [**templateOptions**](docs/CorsApi.md#templateOptions) | **OPTIONS** /templates/observable |
+*Devops.CorsApi* | [**templatesOptions**](docs/CorsApi.md#templatesOptions) | **OPTIONS** /templates |
+*Devops.CorsApi* | [**tenantOptions**](docs/CorsApi.md#tenantOptions) | **OPTIONS** /tenants/observable |
+*Devops.CorsApi* | [**tenantsOptions**](docs/CorsApi.md#tenantsOptions) | **OPTIONS** /tenants |
+*Devops.CorsApi* | [**userOptions**](docs/CorsApi.md#userOptions) | **OPTIONS** /users/observable |
+*Devops.CorsApi* | [**usersOptions**](docs/CorsApi.md#usersOptions) | **OPTIONS** /users |
+*Devops.DatabaseApi* | [**getDatabase**](docs/DatabaseApi.md#getDatabase) | **GET** /databases/{databaseIdPath} | Get a single Database object
+*Devops.DatabaseApi* | [**getDatabases**](docs/DatabaseApi.md#getDatabases) | **GET** /databases | Get a list Databases
+*Devops.DatabaseApi* | [**getDatabasesObservable**](docs/DatabaseApi.md#getDatabasesObservable) | **GET** /databases/observable | Get Databases in an observable array
+*Devops.DatabaseApi* | [**postDatabases**](docs/DatabaseApi.md#postDatabases) | **POST** /databases | Create new Databases
+*Devops.DatabaseApi* | [**putDatabases**](docs/DatabaseApi.md#putDatabases) | **PUT** /databases | Update Databases
+*Devops.TemplateApi* | [**getTemplate**](docs/TemplateApi.md#getTemplate) | **GET** /templates/{templateIdPath} | Get a single Template object
+*Devops.TemplateApi* | [**getTemplates**](docs/TemplateApi.md#getTemplates) | **GET** /templates | Get a list Templates
+*Devops.TemplateApi* | [**getTemplatesObservable**](docs/TemplateApi.md#getTemplatesObservable) | **GET** /templates/observable | Get Templates in an observable array
+*Devops.TemplateApi* | [**postTemplates**](docs/TemplateApi.md#postTemplates) | **POST** /templates | Create new Templates
+*Devops.TenantApi* | [**getTenant**](docs/TenantApi.md#getTenant) | **GET** /tenants/{tenantIdPath} | Get a single Tenant object
+*Devops.TenantApi* | [**getTenants**](docs/TenantApi.md#getTenants) | **GET** /tenants | Get a list Tenants
+*Devops.TenantApi* | [**getTenantsObservable**](docs/TenantApi.md#getTenantsObservable) | **GET** /tenants/observable | Get Tenants in an observable array
+*Devops.TenantApi* | [**postTenants**](docs/TenantApi.md#postTenants) | **POST** /tenants | Create new Tenants
+*Devops.TenantApi* | [**putTenants**](docs/TenantApi.md#putTenants) | **PUT** /tenants | Update Tenants
+*Devops.UserApi* | [**getUser**](docs/UserApi.md#getUser) | **GET** /users/{userIdPath} | Get a single User object
+*Devops.UserApi* | [**getUsers**](docs/UserApi.md#getUsers) | **GET** /users | Get a list Users
+*Devops.UserApi* | [**getUsersObservable**](docs/UserApi.md#getUsersObservable) | **GET** /users/observable | Get Users in an observable array
+*Devops.UserApi* | [**postUsers**](docs/UserApi.md#postUsers) | **POST** /users | Create new Users
+*Devops.UserApi* | [**putUsers**](docs/UserApi.md#putUsers) | **PUT** /users | Update existing users
+
+
+## Documentation for Models
+
+ - [Devops.Address](docs/Address.md)
+ - [Devops.Cluster](docs/Cluster.md)
+ - [Devops.ClusterRequest](docs/ClusterRequest.md)
+ - [Devops.ClusterResponse](docs/ClusterResponse.md)
+ - [Devops.Database](docs/Database.md)
+ - [Devops.DatabaseRequest](docs/DatabaseRequest.md)
+ - [Devops.DatabaseResponse](docs/DatabaseResponse.md)
+ - [Devops.DeleteResponse](docs/DeleteResponse.md)
+ - [Devops.Error](docs/Error.md)
+ - [Devops.Message](docs/Message.md)
+ - [Devops.Pagination](docs/Pagination.md)
+ - [Devops.RequestMeta](docs/RequestMeta.md)
+ - [Devops.ResponseMeta](docs/ResponseMeta.md)
+ - [Devops.Role](docs/Role.md)
+ - [Devops.RoleRequest](docs/RoleRequest.md)
+ - [Devops.RoleResponse](docs/RoleResponse.md)
+ - [Devops.Template](docs/Template.md)
+ - [Devops.TemplateRequest](docs/TemplateRequest.md)
+ - [Devops.TemplateResponse](docs/TemplateResponse.md)
+ - [Devops.Tenant](docs/Tenant.md)
+ - [Devops.TenantRequest](docs/TenantRequest.md)
+ - [Devops.TenantResponse](docs/TenantResponse.md)
+ - [Devops.TenantUser](docs/TenantUser.md)
+ - [Devops.User](docs/User.md)
+ - [Devops.UserRequest](docs/UserRequest.md)
+ - [Devops.UserResponse](docs/UserResponse.md)
+ - [Devops.UserRole](docs/UserRole.md)
+
+
+## Documentation for Authorization
+
+
+
+### ApiKeyAuth
+
+
+- **Type**: API key
+- **API key parameter name**: X-API-Key
+- **Location**: HTTP header
+
diff --git a/client/devops/docs/Address.md b/client/devops/docs/Address.md
new file mode 100644
index 0000000..a4659f5
--- /dev/null
+++ b/client/devops/docs/Address.md
@@ -0,0 +1,15 @@
+# Devops.Address
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**city** | **String** | City | [optional]
+**country** | **String** | Country full name | [optional]
+**countryCode** | **String** | Country Code | [optional]
+**postalCode** | **String** | Postal Code | [optional]
+**state** | **String** | State full name | [optional]
+**stateCode** | **String** | State Code | [optional]
+**street** | **String** | Street number and name | [optional]
+
+
diff --git a/client/devops/docs/Cluster.md b/client/devops/docs/Cluster.md
new file mode 100644
index 0000000..7e49fd4
--- /dev/null
+++ b/client/devops/docs/Cluster.md
@@ -0,0 +1,25 @@
+# Devops.Cluster
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**createdByID** | **String** | Created By | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**description** | **String** | Description | [optional]
+**environment** | **String** | Environment | [optional]
+**gateway** | **String** | Gateway | [optional]
+**ID** | **String** | Taxnexus Record Id | [optional]
+**iPAddress** | **String** | IP Address | [optional]
+**lastModifiedByID** | **String** | Last Modified By | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Cluster Name | [optional]
+**ownerID** | **String** | Owner | [optional]
+**ref** | **String** | External Reference | [optional]
+**status** | **String** | Status | [optional]
+**subnet** | **String** | Subnet | [optional]
+**type** | **String** | Type | [optional]
+**tenantID** | **String** | The ID of the tenant who owns this Database | [optional]
+**zone** | **String** | Zone | [optional]
+
+
diff --git a/client/devops/docs/ClusterApi.md b/client/devops/docs/ClusterApi.md
new file mode 100644
index 0000000..3ff31d6
--- /dev/null
+++ b/client/devops/docs/ClusterApi.md
@@ -0,0 +1,272 @@
+# Devops.ClusterApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getCluster**](ClusterApi.md#getCluster) | **GET** /clusters/{clusterIdPath} | Get a single Cluster object
+[**getClusters**](ClusterApi.md#getClusters) | **GET** /clusters | Get a list Clusters
+[**getClustersObservable**](ClusterApi.md#getClustersObservable) | **GET** /clusters/observable | Get Clusters in an observable array
+[**postClusters**](ClusterApi.md#postClusters) | **POST** /clusters | Create new Clusters
+[**putClusters**](ClusterApi.md#putClusters) | **PUT** /clusters | Update Clustera
+
+
+
+## getCluster
+
+> Cluster getCluster(clusterIdPath)
+
+Get a single Cluster object
+
+Return a single Cluster object from datastore as a Singleton
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.ClusterApi();
+let clusterIdPath = "clusterIdPath_example"; // String | Taxnexus Record Id of a Cluster
+apiInstance.getCluster(clusterIdPath, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterIdPath** | **String**| Taxnexus Record Id of a Cluster |
+
+### Return type
+
+[**Cluster**](Cluster.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getClusters
+
+> ClusterResponse getClusters(opts)
+
+Get a list Clusters
+
+Return a list of Cluster records from the datastore
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.ClusterApi();
+let opts = {
+ 'clusterId': "clusterId_example", // String | Taxnexus Record Id of a Cluster
+ 'companyId': "companyId_example", // String | Taxnexus Record Id of a Company
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip? (default 0)
+};
+apiInstance.getClusters(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterId** | **String**| Taxnexus Record Id of a Cluster | [optional]
+ **companyId** | **String**| Taxnexus Record Id of a Company | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? (default 0) | [optional]
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getClustersObservable
+
+> [Cluster] getClustersObservable()
+
+Get Clusters in an observable array
+
+Returns a Cluster retrieval in a observable array
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.ClusterApi();
+apiInstance.getClustersObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**[Cluster]**](Cluster.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postClusters
+
+> ClusterResponse postClusters(clusterRequest)
+
+Create new Clusters
+
+Create Clusters in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.ClusterApi();
+let clusterRequest = new Devops.ClusterRequest(); // ClusterRequest | An array of Cluster records
+apiInstance.postClusters(clusterRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterRequest** | [**ClusterRequest**](ClusterRequest.md)| An array of Cluster records |
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putClusters
+
+> ClusterResponse putClusters(clusterRequest)
+
+Update Clustera
+
+Update Cluster in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.ClusterApi();
+let clusterRequest = new Devops.ClusterRequest(); // ClusterRequest | An array of Cluster records
+apiInstance.putClusters(clusterRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterRequest** | [**ClusterRequest**](ClusterRequest.md)| An array of Cluster records |
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/devops/docs/ClusterRequest.md b/client/devops/docs/ClusterRequest.md
new file mode 100644
index 0000000..125093e
--- /dev/null
+++ b/client/devops/docs/ClusterRequest.md
@@ -0,0 +1,9 @@
+# Devops.ClusterRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Cluster]**](Cluster.md) | | [optional]
+
+
diff --git a/client/devops/docs/ClusterResponse.md b/client/devops/docs/ClusterResponse.md
new file mode 100644
index 0000000..fa78869
--- /dev/null
+++ b/client/devops/docs/ClusterResponse.md
@@ -0,0 +1,10 @@
+# Devops.ClusterResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Cluster]**](Cluster.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/CorsApi.md b/client/devops/docs/CorsApi.md
new file mode 100644
index 0000000..70b496b
--- /dev/null
+++ b/client/devops/docs/CorsApi.md
@@ -0,0 +1,428 @@
+# Devops.CorsApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**clusterOptions**](CorsApi.md#clusterOptions) | **OPTIONS** /clusters/observable |
+[**clustersOptions**](CorsApi.md#clustersOptions) | **OPTIONS** /clusters |
+[**databaseOptions**](CorsApi.md#databaseOptions) | **OPTIONS** /databases/observable |
+[**databasesOptions**](CorsApi.md#databasesOptions) | **OPTIONS** /databases |
+[**templateOptions**](CorsApi.md#templateOptions) | **OPTIONS** /templates/observable |
+[**templatesOptions**](CorsApi.md#templatesOptions) | **OPTIONS** /templates |
+[**tenantOptions**](CorsApi.md#tenantOptions) | **OPTIONS** /tenants/observable |
+[**tenantsOptions**](CorsApi.md#tenantsOptions) | **OPTIONS** /tenants |
+[**userOptions**](CorsApi.md#userOptions) | **OPTIONS** /users/observable |
+[**usersOptions**](CorsApi.md#usersOptions) | **OPTIONS** /users |
+
+
+
+## clusterOptions
+
+> clusterOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.clusterOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## clustersOptions
+
+> clustersOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.clustersOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## databaseOptions
+
+> databaseOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.databaseOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## databasesOptions
+
+> databasesOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.databasesOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## templateOptions
+
+> templateOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.templateOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## templatesOptions
+
+> templatesOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.templatesOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## tenantOptions
+
+> tenantOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.tenantOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## tenantsOptions
+
+> tenantsOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.tenantsOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## userOptions
+
+> userOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.userOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## usersOptions
+
+> usersOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Devops from 'devops';
+
+let apiInstance = new Devops.CorsApi();
+apiInstance.usersOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
diff --git a/client/devops/docs/Database.md b/client/devops/docs/Database.md
new file mode 100644
index 0000000..516d52f
--- /dev/null
+++ b/client/devops/docs/Database.md
@@ -0,0 +1,20 @@
+# Devops.Database
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**active** | **Boolean** | Is this database active? | [optional]
+**clusterID** | **String** | The ID of the Cluster in which this database is deployed | [optional]
+**createdByID** | **String** | Created By | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**DSN** | **String** | Database connection string | [optional]
+**databaseName** | **String** | The name of the physical database in the cluster | [optional]
+**ID** | **String** | Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By | [optional]
+**lastModifiedDate** | **String** | Last Modifed Date | [optional]
+**status** | **String** | The current status of this Tenant | [optional]
+**tenantID** | **String** | The ID of the tenant who owns this Database | [optional]
+**type** | **String** | The type of Database (mysql, etc) | [optional]
+
+
diff --git a/client/devops/docs/DatabaseApi.md b/client/devops/docs/DatabaseApi.md
new file mode 100644
index 0000000..cf8bd70
--- /dev/null
+++ b/client/devops/docs/DatabaseApi.md
@@ -0,0 +1,272 @@
+# Devops.DatabaseApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getDatabase**](DatabaseApi.md#getDatabase) | **GET** /databases/{databaseIdPath} | Get a single Database object
+[**getDatabases**](DatabaseApi.md#getDatabases) | **GET** /databases | Get a list Databases
+[**getDatabasesObservable**](DatabaseApi.md#getDatabasesObservable) | **GET** /databases/observable | Get Databases in an observable array
+[**postDatabases**](DatabaseApi.md#postDatabases) | **POST** /databases | Create new Databases
+[**putDatabases**](DatabaseApi.md#putDatabases) | **PUT** /databases | Update Databases
+
+
+
+## getDatabase
+
+> Database getDatabase(databaseIdPath)
+
+Get a single Database object
+
+Return a single Database object from datastore as a Singleton
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.DatabaseApi();
+let databaseIdPath = "databaseIdPath_example"; // String | Taxnexus Record Id of a Database
+apiInstance.getDatabase(databaseIdPath, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseIdPath** | **String**| Taxnexus Record Id of a Database |
+
+### Return type
+
+[**Database**](Database.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getDatabases
+
+> DatabaseResponse getDatabases(opts)
+
+Get a list Databases
+
+Return a list of Database records from the datastore
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.DatabaseApi();
+let opts = {
+ 'databaseId': "databaseId_example", // String | Taxnexus Record Id of a Database
+ 'companyId': "companyId_example", // String | Taxnexus Record Id of a Company
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip? (default 0)
+};
+apiInstance.getDatabases(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseId** | **String**| Taxnexus Record Id of a Database | [optional]
+ **companyId** | **String**| Taxnexus Record Id of a Company | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? (default 0) | [optional]
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getDatabasesObservable
+
+> [Database] getDatabasesObservable()
+
+Get Databases in an observable array
+
+Returns a Database retrieval in a observable array
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.DatabaseApi();
+apiInstance.getDatabasesObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**[Database]**](Database.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postDatabases
+
+> DatabaseResponse postDatabases(databaseRequest)
+
+Create new Databases
+
+Create Databases in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.DatabaseApi();
+let databaseRequest = new Devops.DatabaseRequest(); // DatabaseRequest | An array of Database records
+apiInstance.postDatabases(databaseRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseRequest** | [**DatabaseRequest**](DatabaseRequest.md)| An array of Database records |
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putDatabases
+
+> DatabaseResponse putDatabases(databaseRequest)
+
+Update Databases
+
+Update Database in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.DatabaseApi();
+let databaseRequest = new Devops.DatabaseRequest(); // DatabaseRequest | An array of Database records
+apiInstance.putDatabases(databaseRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseRequest** | [**DatabaseRequest**](DatabaseRequest.md)| An array of Database records |
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/devops/docs/DatabaseRequest.md b/client/devops/docs/DatabaseRequest.md
new file mode 100644
index 0000000..74eede3
--- /dev/null
+++ b/client/devops/docs/DatabaseRequest.md
@@ -0,0 +1,9 @@
+# Devops.DatabaseRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Database]**](Database.md) | | [optional]
+
+
diff --git a/client/devops/docs/DatabaseResponse.md b/client/devops/docs/DatabaseResponse.md
new file mode 100644
index 0000000..b9a1ca5
--- /dev/null
+++ b/client/devops/docs/DatabaseResponse.md
@@ -0,0 +1,10 @@
+# Devops.DatabaseResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Database]**](Database.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/DeleteResponse.md b/client/devops/docs/DeleteResponse.md
new file mode 100644
index 0000000..9c45ddb
--- /dev/null
+++ b/client/devops/docs/DeleteResponse.md
@@ -0,0 +1,10 @@
+# Devops.DeleteResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Message]**](Message.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/Error.md b/client/devops/docs/Error.md
new file mode 100644
index 0000000..17ae446
--- /dev/null
+++ b/client/devops/docs/Error.md
@@ -0,0 +1,11 @@
+# Devops.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+
+
diff --git a/client/devops/docs/Message.md b/client/devops/docs/Message.md
new file mode 100644
index 0000000..2f75c7f
--- /dev/null
+++ b/client/devops/docs/Message.md
@@ -0,0 +1,11 @@
+# Devops.Message
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**message** | **String** | | [optional]
+**ref** | **String** | | [optional]
+**status** | **Number** | | [optional]
+
+
diff --git a/client/devops/docs/Pagination.md b/client/devops/docs/Pagination.md
new file mode 100644
index 0000000..acda41d
--- /dev/null
+++ b/client/devops/docs/Pagination.md
@@ -0,0 +1,12 @@
+# Devops.Pagination
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**limit** | **Number** | | [optional]
+**pOffset** | **Number** | | [optional]
+**pageSize** | **Number** | | [optional]
+**setSize** | **Number** | | [optional]
+
+
diff --git a/client/devops/docs/RequestMeta.md b/client/devops/docs/RequestMeta.md
new file mode 100644
index 0000000..762ef9e
--- /dev/null
+++ b/client/devops/docs/RequestMeta.md
@@ -0,0 +1,9 @@
+# Devops.RequestMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**taxnexusAccount** | **String** | Taxnexus Account Number of the Reseller or OEM |
+
+
diff --git a/client/devops/docs/ResponseMeta.md b/client/devops/docs/ResponseMeta.md
new file mode 100644
index 0000000..32e57cb
--- /dev/null
+++ b/client/devops/docs/ResponseMeta.md
@@ -0,0 +1,20 @@
+# Devops.ResponseMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contact** | **String** | Microservice Contact Info | [optional]
+**copyright** | **String** | Copyright Info | [optional]
+**license** | **String** | License Information and Restrictions | [optional]
+**operationID** | **String** | Operation ID | [optional]
+**pagination** | [**Pagination**](Pagination.md) | | [optional]
+**requestIP** | **String** | Request IP Address | [optional]
+**requestType** | **String** | Request Type | [optional]
+**requestURL** | **String** | Request URL | [optional]
+**serverInfo** | **String** | Data Server Info | [optional]
+**serverResponseTime** | **String** | Data Server Response Time (ms) | [optional]
+**serverTimestamp** | **String** | Backend Server Timestamp | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number used for recording transactions | [optional]
+
+
diff --git a/client/devops/docs/Role.md b/client/devops/docs/Role.md
new file mode 100644
index 0000000..be49dfa
--- /dev/null
+++ b/client/devops/docs/Role.md
@@ -0,0 +1,17 @@
+# Devops.Role
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**auth0RoleID** | **String** | The corresponding Auth0 Role | [optional]
+**createdByID** | **String** | Created By | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**description** | **String** | Role Description | [optional]
+**ID** | **String** | Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By | [optional]
+**lastModifiedDate** | **String** | Last Modifed Date | [optional]
+**roleName** | **String** | The name of this role | [optional]
+**tenantID** | **String** | The ID of the Tenant that owns this Role | [optional]
+
+
diff --git a/client/devops/docs/RoleRequest.md b/client/devops/docs/RoleRequest.md
new file mode 100644
index 0000000..efa4e9d
--- /dev/null
+++ b/client/devops/docs/RoleRequest.md
@@ -0,0 +1,9 @@
+# Devops.RoleRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**date** | [**[Role]**](Role.md) | | [optional]
+
+
diff --git a/client/devops/docs/RoleResponse.md b/client/devops/docs/RoleResponse.md
new file mode 100644
index 0000000..2463a35
--- /dev/null
+++ b/client/devops/docs/RoleResponse.md
@@ -0,0 +1,10 @@
+# Devops.RoleResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Role]**](Role.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/Template.md b/client/devops/docs/Template.md
new file mode 100644
index 0000000..0733de3
--- /dev/null
+++ b/client/devops/docs/Template.md
@@ -0,0 +1,24 @@
+# Devops.Template
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**companyID** | **String** | Company | [optional]
+**createdByID** | **String** | | [optional]
+**createdDate** | **String** | | [optional]
+**description** | **String** | Description | [optional]
+**HTML** | **Blob** | HTML Body | [optional]
+**ID** | **String** | Taxnexus Record Id | [optional]
+**isActive** | **Boolean** | Active? | [optional]
+**isMaster** | **Boolean** | Master Template? | [optional]
+**lastModifiedByID** | **String** | | [optional]
+**lastModifiedDate** | **String** | | [optional]
+**name** | **String** | Template Name | [optional]
+**objectType** | **String** | Object | [optional]
+**recordTypeName** | **String** | Record Type Name | [optional]
+**tenantID** | **String** | Tenant that owns this object instance | [optional]
+**type** | **String** | Type | [optional]
+**URL** | **String** | URL | [optional]
+
+
diff --git a/client/devops/docs/TemplateApi.md b/client/devops/docs/TemplateApi.md
new file mode 100644
index 0000000..d4effc6
--- /dev/null
+++ b/client/devops/docs/TemplateApi.md
@@ -0,0 +1,224 @@
+# Devops.TemplateApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getTemplate**](TemplateApi.md#getTemplate) | **GET** /templates/{templateIdPath} | Get a single Template object
+[**getTemplates**](TemplateApi.md#getTemplates) | **GET** /templates | Get a list Templates
+[**getTemplatesObservable**](TemplateApi.md#getTemplatesObservable) | **GET** /templates/observable | Get Templates in an observable array
+[**postTemplates**](TemplateApi.md#postTemplates) | **POST** /templates | Create new Templates
+
+
+
+## getTemplate
+
+> Template getTemplate(templateIdPath)
+
+Get a single Template object
+
+Return a single Template object from datastore as a Singleton
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TemplateApi();
+let templateIdPath = "templateIdPath_example"; // String | Taxnexus Record Id of a Template
+apiInstance.getTemplate(templateIdPath, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **templateIdPath** | **String**| Taxnexus Record Id of a Template |
+
+### Return type
+
+[**Template**](Template.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getTemplates
+
+> TemplateResponse getTemplates(opts)
+
+Get a list Templates
+
+Return a list of Templates from the datastore
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TemplateApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip? (default 0)
+ 'active': true, // Boolean | Retrieve active records only?
+ 'templateId': "templateId_example", // String | Template ID
+ 'isMaster': true, // Boolean | Is Master Template?
+ 'objectType': "objectType_example" // String | Object Type Name
+};
+apiInstance.getTemplates(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? (default 0) | [optional]
+ **active** | **Boolean**| Retrieve active records only? | [optional]
+ **templateId** | **String**| Template ID | [optional]
+ **isMaster** | **Boolean**| Is Master Template? | [optional]
+ **objectType** | **String**| Object Type Name | [optional]
+
+### Return type
+
+[**TemplateResponse**](TemplateResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getTemplatesObservable
+
+> [Template] getTemplatesObservable()
+
+Get Templates in an observable array
+
+Returns a Template retrieval in a observable array
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TemplateApi();
+apiInstance.getTemplatesObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**[Template]**](Template.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postTemplates
+
+> TemplateResponse postTemplates(templateRequest)
+
+Create new Templates
+
+Create new Templates
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TemplateApi();
+let templateRequest = new Devops.TemplateRequest(); // TemplateRequest | An array of Template records
+apiInstance.postTemplates(templateRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **templateRequest** | [**TemplateRequest**](TemplateRequest.md)| An array of Template records |
+
+### Return type
+
+[**TemplateResponse**](TemplateResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/devops/docs/TemplateRequest.md b/client/devops/docs/TemplateRequest.md
new file mode 100644
index 0000000..928f62c
--- /dev/null
+++ b/client/devops/docs/TemplateRequest.md
@@ -0,0 +1,9 @@
+# Devops.TemplateRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Template]**](Template.md) | | [optional]
+
+
diff --git a/client/devops/docs/TemplateResponse.md b/client/devops/docs/TemplateResponse.md
new file mode 100644
index 0000000..cbb7a52
--- /dev/null
+++ b/client/devops/docs/TemplateResponse.md
@@ -0,0 +1,10 @@
+# Devops.TemplateResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Template]**](Template.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/Tenant.md b/client/devops/docs/Tenant.md
new file mode 100644
index 0000000..9dc2668
--- /dev/null
+++ b/client/devops/docs/Tenant.md
@@ -0,0 +1,22 @@
+# Devops.Tenant
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountID** | **String** | The Account that owns this Tenant | [optional]
+**active** | **Boolean** | Is this Tenant currently active? | [optional]
+**createdByID** | **String** | Created By | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**databases** | [**[Database]**](Database.md) | | [optional]
+**ID** | **String** | Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By | [optional]
+**lastModifiedDate** | **String** | Last Modifed Date | [optional]
+**roles** | [**[Role]**](Role.md) | | [optional]
+**status** | **String** | The current status of this Tenant | [optional]
+**tenantName** | **String** | Name of the Tenant Resource | [optional]
+**tenantUsers** | [**[TenantUser]**](TenantUser.md) | | [optional]
+**type** | **String** | The type of Tenant | [optional]
+**version** | **String** | The version number of the Tenant Onboarding system used to create this tenant | [optional]
+
+
diff --git a/client/devops/docs/TenantApi.md b/client/devops/docs/TenantApi.md
new file mode 100644
index 0000000..4c4c55c
--- /dev/null
+++ b/client/devops/docs/TenantApi.md
@@ -0,0 +1,274 @@
+# Devops.TenantApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getTenant**](TenantApi.md#getTenant) | **GET** /tenants/{tenantIdPath} | Get a single Tenant object
+[**getTenants**](TenantApi.md#getTenants) | **GET** /tenants | Get a list Tenants
+[**getTenantsObservable**](TenantApi.md#getTenantsObservable) | **GET** /tenants/observable | Get Tenants in an observable array
+[**postTenants**](TenantApi.md#postTenants) | **POST** /tenants | Create new Tenants
+[**putTenants**](TenantApi.md#putTenants) | **PUT** /tenants | Update Tenants
+
+
+
+## getTenant
+
+> Tenant getTenant(tenantIdPath)
+
+Get a single Tenant object
+
+Return a single Tenant object from datastore as a Singleton
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TenantApi();
+let tenantIdPath = "tenantIdPath_example"; // String | Taxnexus Record Id of a Tenant
+apiInstance.getTenant(tenantIdPath, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tenantIdPath** | **String**| Taxnexus Record Id of a Tenant |
+
+### Return type
+
+[**Tenant**](Tenant.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getTenants
+
+> TenantResponse getTenants(opts)
+
+Get a list Tenants
+
+Return a list of Tenant records from the datastore
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TenantApi();
+let opts = {
+ 'taxnexusAccount': "taxnexusAccount_example", // String | Taxnexus Account of a Tenant
+ 'tenantId': "tenantId_example", // String | Taxnexus Record Id of a Tenant
+ 'companyId': "companyId_example", // String | Taxnexus Record Id of a Company
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip? (default 0)
+};
+apiInstance.getTenants(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **taxnexusAccount** | **String**| Taxnexus Account of a Tenant | [optional]
+ **tenantId** | **String**| Taxnexus Record Id of a Tenant | [optional]
+ **companyId** | **String**| Taxnexus Record Id of a Company | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? (default 0) | [optional]
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getTenantsObservable
+
+> [Tenant] getTenantsObservable()
+
+Get Tenants in an observable array
+
+Returns a Tenant retrieval in a observable array
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TenantApi();
+apiInstance.getTenantsObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**[Tenant]**](Tenant.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postTenants
+
+> TenantResponse postTenants(tenantRequest)
+
+Create new Tenants
+
+Create Tenants in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TenantApi();
+let tenantRequest = new Devops.TenantRequest(); // TenantRequest | An array of Tenant records
+apiInstance.postTenants(tenantRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tenantRequest** | [**TenantRequest**](TenantRequest.md)| An array of Tenant records |
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putTenants
+
+> TenantResponse putTenants(tenantRequest)
+
+Update Tenants
+
+Update Tenant in Taxnexus
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.TenantApi();
+let tenantRequest = new Devops.TenantRequest(); // TenantRequest | An array of Tenant records
+apiInstance.putTenants(tenantRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tenantRequest** | [**TenantRequest**](TenantRequest.md)| An array of Tenant records |
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/devops/docs/TenantRequest.md b/client/devops/docs/TenantRequest.md
new file mode 100644
index 0000000..d315c11
--- /dev/null
+++ b/client/devops/docs/TenantRequest.md
@@ -0,0 +1,9 @@
+# Devops.TenantRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Tenant]**](Tenant.md) | | [optional]
+
+
diff --git a/client/devops/docs/TenantResponse.md b/client/devops/docs/TenantResponse.md
new file mode 100644
index 0000000..d803097
--- /dev/null
+++ b/client/devops/docs/TenantResponse.md
@@ -0,0 +1,10 @@
+# Devops.TenantResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Tenant]**](Tenant.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/TenantUser.md b/client/devops/docs/TenantUser.md
new file mode 100644
index 0000000..4e99f19
--- /dev/null
+++ b/client/devops/docs/TenantUser.md
@@ -0,0 +1,24 @@
+# Devops.TenantUser
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accessLevel** | **String** | The makeTenantUser access level for this User | [optional]
+**accountID** | **String** | Account ID | [optional]
+**auth0UserID** | **String** | Auth0 User ID | [optional]
+**companyName** | **String** | Account Name | [optional]
+**contactID** | **String** | Contact ID | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account | [optional]
+**tenantActive** | **Boolean** | Tenant active? | [optional]
+**tenantID** | **String** | The Tenant ID | [optional]
+**tenantName** | **String** | Tenant Name | [optional]
+**tenantStatus** | **String** | Tenant Status | [optional]
+**tenantType** | **String** | Tenant type | [optional]
+**tenantVersion** | **String** | Tenant Version | [optional]
+**userEmail** | **String** | User Email Address | [optional]
+**userFullName** | **String** | User Full Name | [optional]
+**userID** | **String** | The User ID | [optional]
+**username** | **String** | Username | [optional]
+
+
diff --git a/client/devops/docs/User.md b/client/devops/docs/User.md
new file mode 100644
index 0000000..42e1dd6
--- /dev/null
+++ b/client/devops/docs/User.md
@@ -0,0 +1,66 @@
+# Devops.User
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**aPIKey** | **String** | API Key | [optional]
+**aboutMe** | **String** | About Me | [optional]
+**accountID** | **String** | Account ID | [optional]
+**address** | [**Address**](Address.md) | | [optional]
+**alias** | **String** | Alias | [optional]
+**auth0UserID** | **String** | Auth0 User Id | [optional]
+**communityNickname** | **String** | Nickname | [optional]
+**companyName** | **String** | Company Name | [optional]
+**contactID** | **String** | Contact | [optional]
+**createdByID** | **String** | Created User ID | [optional]
+**createdDate** | **String** | Date Created | [optional]
+**delegatedApproverID** | **String** | Delegated Approver | [optional]
+**department** | **String** | Department | [optional]
+**division** | **String** | Division | [optional]
+**email** | **String** | Email address | [optional]
+**employeeNumber** | **String** | Employee Number | [optional]
+**endOfDay** | **String** | Time day ends | [optional]
+**environment** | **String** | Environment | [optional]
+**extension** | **String** | Extension | [optional]
+**fabricAPIKey** | **String** | Fabric API Key | [optional]
+**fax** | **String** | Fax | [optional]
+**firstName** | **String** | The first name | [optional]
+**forecastEnabled** | **Boolean** | Allow Forecasting | [optional]
+**fullPhotoURL** | **String** | Full Photo URL | [optional]
+**ID** | **String** | Taxnexus ID | [optional]
+**isActive** | **Boolean** | Active | [optional]
+**isPortalEnabled** | **Boolean** | Is the user enabled for Communities? | [optional]
+**isProphilePhotoActive** | **Boolean** | Has Profile Photo | [optional]
+**isSystemControlled** | **Boolean** | | [optional]
+**lastIP** | **String** | IP address of last login | [optional]
+**lastLogin** | **String** | Last login time | [optional]
+**lastModifiedByID** | **String** | Last Modified User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**lastName** | **String** | The Last Name | [optional]
+**loginCount** | **Number** | Number of times user has logged in | [optional]
+**managerID** | **String** | Manager | [optional]
+**mobilePhone** | **String** | Mobile | [optional]
+**name** | **String** | Name | [optional]
+**outOfOfficeMessage** | **String** | Out of office message | [optional]
+**phone** | **String** | Phone | [optional]
+**portalRole** | **String** | Portal Role Level | [optional]
+**profileID** | **String** | Profile | [optional]
+**receivesAdminEmails** | **Boolean** | Info Emails | [optional]
+**receivesAdminInfoEmails** | **Boolean** | Admin Info Emails | [optional]
+**senderEmail** | **String** | Email Sender Address | [optional]
+**senderName** | **String** | Email Sender Name | [optional]
+**signature** | **String** | Email Signature | [optional]
+**smallPhotoURL** | **String** | Small Photo URL | [optional]
+**startOfDay** | **String** | The time day starts | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account | [optional]
+**tenantID** | **String** | Tenant ID associated with this user | [optional]
+**tenantUsers** | [**[TenantUser]**](TenantUser.md) | | [optional]
+**timeZone** | **String** | Time Zone | [optional]
+**title** | **String** | Title | [optional]
+**userRoleID** | **String** | Role | [optional]
+**userRoles** | [**[UserRole]**](UserRole.md) | | [optional]
+**userType** | **String** | User Type | [optional]
+**username** | **String** | Username | [optional]
+
+
diff --git a/client/devops/docs/UserApi.md b/client/devops/docs/UserApi.md
new file mode 100644
index 0000000..000f67a
--- /dev/null
+++ b/client/devops/docs/UserApi.md
@@ -0,0 +1,280 @@
+# Devops.UserApi
+
+All URIs are relative to *http://devops.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getUser**](UserApi.md#getUser) | **GET** /users/{userIdPath} | Get a single User object
+[**getUsers**](UserApi.md#getUsers) | **GET** /users | Get a list Users
+[**getUsersObservable**](UserApi.md#getUsersObservable) | **GET** /users/observable | Get Users in an observable array
+[**postUsers**](UserApi.md#postUsers) | **POST** /users | Create new Users
+[**putUsers**](UserApi.md#putUsers) | **PUT** /users | Update existing users
+
+
+
+## getUser
+
+> User getUser(userIdPath)
+
+Get a single User object
+
+Return a single User object from datastore as a Singleton
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.UserApi();
+let userIdPath = "userIdPath_example"; // String | Taxnexus Record Id of a User
+apiInstance.getUser(userIdPath, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **userIdPath** | **String**| Taxnexus Record Id of a User |
+
+### Return type
+
+[**User**](User.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getUsers
+
+> UserResponse getUsers(opts)
+
+Get a list Users
+
+Return a list of User records from the datastore
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.UserApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip? (default 0)
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'contactId': "contactId_example", // String | Taxnexus Record Id of a Contact
+ 'active': true, // Boolean | Retrieve active records only?
+ 'email': "email_example", // String | Email Address (not unique)
+ 'userId': "userId_example", // String | Taxnexus User ID (unique)
+ 'username': "username_example" // String | Username (unique)
+};
+apiInstance.getUsers(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? (default 0) | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **contactId** | **String**| Taxnexus Record Id of a Contact | [optional]
+ **active** | **Boolean**| Retrieve active records only? | [optional]
+ **email** | **String**| Email Address (not unique) | [optional]
+ **userId** | **String**| Taxnexus User ID (unique) | [optional]
+ **username** | **String**| Username (unique) | [optional]
+
+### Return type
+
+[**UserResponse**](UserResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getUsersObservable
+
+> [User] getUsersObservable()
+
+Get Users in an observable array
+
+Returns a User retrieval in a observable array
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.UserApi();
+apiInstance.getUsersObservable((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**[User]**](User.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postUsers
+
+> UserResponse postUsers(userRequest)
+
+Create new Users
+
+Create new Users
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.UserApi();
+let userRequest = new Devops.UserRequest(); // UserRequest | An array of User records
+apiInstance.postUsers(userRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **userRequest** | [**UserRequest**](UserRequest.md)| An array of User records |
+
+### Return type
+
+[**UserResponse**](UserResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putUsers
+
+> UserResponse putUsers(userRequest)
+
+Update existing users
+
+Update existing users
+
+### Example
+
+```javascript
+import Devops from 'devops';
+let defaultClient = Devops.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Devops.UserApi();
+let userRequest = new Devops.UserRequest(); // UserRequest | An array of User records
+apiInstance.putUsers(userRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **userRequest** | [**UserRequest**](UserRequest.md)| An array of User records |
+
+### Return type
+
+[**UserResponse**](UserResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/devops/docs/UserRequest.md b/client/devops/docs/UserRequest.md
new file mode 100644
index 0000000..fd65348
--- /dev/null
+++ b/client/devops/docs/UserRequest.md
@@ -0,0 +1,9 @@
+# Devops.UserRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[User]**](User.md) | | [optional]
+
+
diff --git a/client/devops/docs/UserResponse.md b/client/devops/docs/UserResponse.md
new file mode 100644
index 0000000..50c5315
--- /dev/null
+++ b/client/devops/docs/UserResponse.md
@@ -0,0 +1,10 @@
+# Devops.UserResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[User]**](User.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/devops/docs/UserRole.md b/client/devops/docs/UserRole.md
new file mode 100644
index 0000000..b666147
--- /dev/null
+++ b/client/devops/docs/UserRole.md
@@ -0,0 +1,21 @@
+# Devops.UserRole
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountID** | **String** | Account Id | [optional]
+**auth0RoleID** | **String** | Linked role ID | [optional]
+**auth0UserID** | **String** | Auth0 User ID | [optional]
+**companyName** | **String** | Company Name | [optional]
+**contactID** | **String** | Contact ID | [optional]
+**roleDescription** | **String** | Role description | [optional]
+**roleID** | **String** | The Role ID | [optional]
+**roleName** | **String** | Role Name | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number | [optional]
+**userEmail** | **String** | User Email Address | [optional]
+**userFullName** | **String** | User Full Name | [optional]
+**userID** | **String** | The User ID | [optional]
+**username** | **String** | Username | [optional]
+
+
diff --git a/client/devops/git_push.sh b/client/devops/git_push.sh
new file mode 100644
index 0000000..f53a75d
--- /dev/null
+++ b/client/devops/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/client/devops/mocha.opts b/client/devops/mocha.opts
new file mode 100644
index 0000000..9070118
--- /dev/null
+++ b/client/devops/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/client/devops/package.json b/client/devops/package.json
new file mode 100644
index 0000000..313820c
--- /dev/null
+++ b/client/devops/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "devops",
+ "version": "0.0.2",
+ "description": "System_Operations_Microservice",
+ "license": "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc.",
+ "main": "dist/index.js",
+ "scripts": {
+ "build": "babel src -d dist",
+ "prepare": "npm run build",
+ "test": "mocha --require @babel/register --recursive"
+ },
+ "browser": {
+ "fs": false
+ },
+ "dependencies": {
+ "@babel/cli": "^7.0.0",
+ "superagent": "^5.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-decorators": "^7.0.0",
+ "@babel/plugin-proposal-do-expressions": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
+ "@babel/plugin-proposal-function-bind": "^7.0.0",
+ "@babel/plugin-proposal-function-sent": "^7.0.0",
+ "@babel/plugin-proposal-json-strings": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-import-meta": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "expect.js": "^0.3.1",
+ "mocha": "^8.0.1",
+ "sinon": "^7.2.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/client/devops/src/ApiClient.js b/client/devops/src/ApiClient.js
new file mode 100644
index 0000000..666260d
--- /dev/null
+++ b/client/devops/src/ApiClient.js
@@ -0,0 +1,692 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import superagent from "superagent";
+import querystring from "querystring";
+
+/**
+* @module ApiClient
+* @version 0.0.2
+*/
+
+/**
+* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
+* application to use this class directly - the *Api and model classes provide the public API for the service. The
+* contents of this file should be regarded as internal but are documented for completeness.
+* @alias module:ApiClient
+* @class
+*/
+class ApiClient {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * Overrides the default value set in spec file if present
+ * @param {String} basePath
+ */
+ constructor(basePath = 'http://devops.vernonkeenan.com:8080/v1') {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * @type {String}
+ * @default http://devops.vernonkeenan.com:8080/v1
+ */
+ this.basePath = basePath.replace(/\/+$/, '');
+
+ /**
+ * The authentication methods to be included for all API calls.
+ * @type {Array.}
+ */
+ this.authentications = {
+ 'ApiKeyAuth': {type: 'apiKey', 'in': 'header', name: 'X-API-Key'}
+ }
+
+ /**
+ * The default HTTP headers to be included for all API calls.
+ * @type {Array.}
+ * @default {}
+ */
+ this.defaultHeaders = {
+ 'User-Agent': 'OpenAPI-Generator/0.0.2/Javascript'
+ };
+
+ /**
+ * The default HTTP timeout for all API calls.
+ * @type {Number}
+ * @default 60000
+ */
+ this.timeout = 60000;
+
+ /**
+ * If set to false an additional timestamp parameter is added to all API GET calls to
+ * prevent browser caching
+ * @type {Boolean}
+ * @default true
+ */
+ this.cache = true;
+
+ /**
+ * If set to true, the client will save the cookies from each server
+ * response, and return them in the next request.
+ * @default false
+ */
+ this.enableCookies = false;
+
+ /*
+ * Used to save and return cookies in a node.js (non-browser) setting,
+ * if this.enableCookies is set to true.
+ */
+ if (typeof window === 'undefined') {
+ this.agent = new superagent.agent();
+ }
+
+ /*
+ * Allow user to override superagent agent
+ */
+ this.requestAgent = null;
+
+ /*
+ * Allow user to add superagent plugins
+ */
+ this.plugins = null;
+
+ }
+
+ /**
+ * Returns a string representation for an actual parameter.
+ * @param param The actual parameter.
+ * @returns {String} The string representation of param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ * - application/json
+ * - application/json; charset=UTF8
+ * - APPLICATION/JSON
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.} contentTypes
+ * @returns {String} The chosen content type, preferring JSON.
+ */
+ jsonPreferredMime(contentTypes) {
+ for (var i = 0; i < contentTypes.length; i++) {
+ if (this.isJsonMime(contentTypes[i])) {
+ return contentTypes[i];
+ }
+ }
+
+ return contentTypes[0];
+ }
+
+ /**
+ * Checks whether the given parameter value represents file-like content.
+ * @param param The parameter to check.
+ * @returns {Boolean} true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ * - remove nils
+ * - keep files and arrays
+ * - format to string with `paramToString` for other cases
+ *
+ * @param {Object.} params The parameters as object properties.
+ * @returns {Object.} normalized parameters.
+ */
+ normalizeParams(params) {
+ var newParams = {};
+ for (var key in params) {
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
+ var value = params[key];
+ if (this.isFileParam(value) || Array.isArray(value)) {
+ newParams[key] = value;
+ } else {
+ newParams[key] = this.paramToString(value);
+ }
+ }
+ }
+
+ return newParams;
+ }
+
+ /**
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
+ * @param {Array} param An array parameter.
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.} authNames An array of authentication method names.
+ */
+ applyAuthToRequest(request, authNames) {
+ authNames.forEach((authName) => {
+ var auth = this.authentications[authName];
+ switch (auth.type) {
+ case 'basic':
+ if (auth.username || auth.password) {
+ request.auth(auth.username || '', auth.password || '');
+ }
+
+ break;
+ case 'bearer':
+ if (auth.accessToken) {
+ var localVarBearerToken = typeof auth.accessToken === 'function'
+ ? auth.accessToken()
+ : auth.accessToken
+ request.set({'Authorization': 'Bearer ' + localVarBearerToken});
+ }
+
+ break;
+ case 'apiKey':
+ if (auth.apiKey) {
+ var data = {};
+ if (auth.apiKeyPrefix) {
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
+ } else {
+ data[auth.name] = auth.apiKey;
+ }
+
+ if (auth['in'] === 'header') {
+ request.set(data);
+ } else {
+ request.query(data);
+ }
+ }
+
+ break;
+ case 'oauth2':
+ if (auth.accessToken) {
+ request.set({'Authorization': 'Bearer ' + auth.accessToken});
+ }
+
+ break;
+ default:
+ throw new Error('Unknown authentication type: ' + auth.type);
+ }
+ });
+ }
+
+ /**
+ * Deserializes an HTTP response body into a value of the specified type.
+ * @param {Object} response A SuperAgent response object.
+ * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://devops.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/devops/src/api/ClusterApi.js b/client/devops/src/api/ClusterApi.js
new file mode 100644
index 0000000..7246b71
--- /dev/null
+++ b/client/devops/src/api/ClusterApi.js
@@ -0,0 +1,252 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Cluster from '../model/Cluster';
+import ClusterRequest from '../model/ClusterRequest';
+import ClusterResponse from '../model/ClusterResponse';
+import Error from '../model/Error';
+
+/**
+* Cluster service.
+* @module api/ClusterApi
+* @version 0.0.2
+*/
+export default class ClusterApi {
+
+ /**
+ * Constructs a new ClusterApi.
+ * @alias module:api/ClusterApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getCluster operation.
+ * @callback module:api/ClusterApi~getClusterCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/Cluster} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single Cluster object
+ * Return a single Cluster object from datastore as a Singleton
+ * @param {String} clusterIdPath Taxnexus Record Id of a Cluster
+ * @param {module:api/ClusterApi~getClusterCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/Cluster}
+ */
+ getCluster(clusterIdPath, callback) {
+ let postBody = null;
+ // verify the required parameter 'clusterIdPath' is set
+ if (clusterIdPath === undefined || clusterIdPath === null) {
+ throw new Error("Missing the required parameter 'clusterIdPath' when calling getCluster");
+ }
+
+ let pathParams = {
+ 'clusterIdPath': clusterIdPath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = Cluster;
+ return this.apiClient.callApi(
+ '/clusters/{clusterIdPath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getClusters operation.
+ * @callback module:api/ClusterApi~getClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Clusters
+ * Return a list of Cluster records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.clusterId Taxnexus Record Id of a Cluster
+ * @param {String} opts.companyId Taxnexus Record Id of a Company
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip? (default 0)
+ * @param {module:api/ClusterApi~getClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ getClusters(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'clusterId': opts['clusterId'],
+ 'companyId': opts['companyId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getClustersObservable operation.
+ * @callback module:api/ClusterApi~getClustersObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Clusters in an observable array
+ * Returns a Cluster retrieval in a observable array
+ * @param {module:api/ClusterApi~getClustersObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getClustersObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Cluster];
+ return this.apiClient.callApi(
+ '/clusters/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postClusters operation.
+ * @callback module:api/ClusterApi~postClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Clusters
+ * Create Clusters in Taxnexus
+ * @param {module:model/ClusterRequest} clusterRequest An array of Cluster records
+ * @param {module:api/ClusterApi~postClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ postClusters(clusterRequest, callback) {
+ let postBody = clusterRequest;
+ // verify the required parameter 'clusterRequest' is set
+ if (clusterRequest === undefined || clusterRequest === null) {
+ throw new Error("Missing the required parameter 'clusterRequest' when calling postClusters");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putClusters operation.
+ * @callback module:api/ClusterApi~putClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Clustera
+ * Update Cluster in Taxnexus
+ * @param {module:model/ClusterRequest} clusterRequest An array of Cluster records
+ * @param {module:api/ClusterApi~putClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ putClusters(clusterRequest, callback) {
+ let postBody = clusterRequest;
+ // verify the required parameter 'clusterRequest' is set
+ if (clusterRequest === undefined || clusterRequest === null) {
+ throw new Error("Missing the required parameter 'clusterRequest' when calling putClusters");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/api/CorsApi.js b/client/devops/src/api/CorsApi.js
new file mode 100644
index 0000000..b1754b8
--- /dev/null
+++ b/client/devops/src/api/CorsApi.js
@@ -0,0 +1,387 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+
+/**
+* Cors service.
+* @module api/CorsApi
+* @version 0.0.2
+*/
+export default class CorsApi {
+
+ /**
+ * Constructs a new CorsApi.
+ * @alias module:api/CorsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the clusterOptions operation.
+ * @callback module:api/CorsApi~clusterOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~clusterOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ clusterOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/clusters/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the clustersOptions operation.
+ * @callback module:api/CorsApi~clustersOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~clustersOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ clustersOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/clusters', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the databaseOptions operation.
+ * @callback module:api/CorsApi~databaseOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~databaseOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ databaseOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/databases/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the databasesOptions operation.
+ * @callback module:api/CorsApi~databasesOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~databasesOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ databasesOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/databases', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the templateOptions operation.
+ * @callback module:api/CorsApi~templateOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~templateOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ templateOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/templates/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the templatesOptions operation.
+ * @callback module:api/CorsApi~templatesOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~templatesOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ templatesOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/templates', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the tenantOptions operation.
+ * @callback module:api/CorsApi~tenantOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~tenantOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ tenantOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/tenants/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the tenantsOptions operation.
+ * @callback module:api/CorsApi~tenantsOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~tenantsOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ tenantsOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/tenants', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the userOptions operation.
+ * @callback module:api/CorsApi~userOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~userOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ userOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/users/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the usersOptions operation.
+ * @callback module:api/CorsApi~usersOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~usersOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ usersOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/users', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/api/DatabaseApi.js b/client/devops/src/api/DatabaseApi.js
new file mode 100644
index 0000000..9d0abba
--- /dev/null
+++ b/client/devops/src/api/DatabaseApi.js
@@ -0,0 +1,252 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Database from '../model/Database';
+import DatabaseRequest from '../model/DatabaseRequest';
+import DatabaseResponse from '../model/DatabaseResponse';
+import Error from '../model/Error';
+
+/**
+* Database service.
+* @module api/DatabaseApi
+* @version 0.0.2
+*/
+export default class DatabaseApi {
+
+ /**
+ * Constructs a new DatabaseApi.
+ * @alias module:api/DatabaseApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getDatabase operation.
+ * @callback module:api/DatabaseApi~getDatabaseCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/Database} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single Database object
+ * Return a single Database object from datastore as a Singleton
+ * @param {String} databaseIdPath Taxnexus Record Id of a Database
+ * @param {module:api/DatabaseApi~getDatabaseCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/Database}
+ */
+ getDatabase(databaseIdPath, callback) {
+ let postBody = null;
+ // verify the required parameter 'databaseIdPath' is set
+ if (databaseIdPath === undefined || databaseIdPath === null) {
+ throw new Error("Missing the required parameter 'databaseIdPath' when calling getDatabase");
+ }
+
+ let pathParams = {
+ 'databaseIdPath': databaseIdPath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = Database;
+ return this.apiClient.callApi(
+ '/databases/{databaseIdPath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getDatabases operation.
+ * @callback module:api/DatabaseApi~getDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Databases
+ * Return a list of Database records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.databaseId Taxnexus Record Id of a Database
+ * @param {String} opts.companyId Taxnexus Record Id of a Company
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip? (default 0)
+ * @param {module:api/DatabaseApi~getDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ getDatabases(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'databaseId': opts['databaseId'],
+ 'companyId': opts['companyId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getDatabasesObservable operation.
+ * @callback module:api/DatabaseApi~getDatabasesObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Databases in an observable array
+ * Returns a Database retrieval in a observable array
+ * @param {module:api/DatabaseApi~getDatabasesObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getDatabasesObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Database];
+ return this.apiClient.callApi(
+ '/databases/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postDatabases operation.
+ * @callback module:api/DatabaseApi~postDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Databases
+ * Create Databases in Taxnexus
+ * @param {module:model/DatabaseRequest} databaseRequest An array of Database records
+ * @param {module:api/DatabaseApi~postDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ postDatabases(databaseRequest, callback) {
+ let postBody = databaseRequest;
+ // verify the required parameter 'databaseRequest' is set
+ if (databaseRequest === undefined || databaseRequest === null) {
+ throw new Error("Missing the required parameter 'databaseRequest' when calling postDatabases");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putDatabases operation.
+ * @callback module:api/DatabaseApi~putDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Databases
+ * Update Database in Taxnexus
+ * @param {module:model/DatabaseRequest} databaseRequest An array of Database records
+ * @param {module:api/DatabaseApi~putDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ putDatabases(databaseRequest, callback) {
+ let postBody = databaseRequest;
+ // verify the required parameter 'databaseRequest' is set
+ if (databaseRequest === undefined || databaseRequest === null) {
+ throw new Error("Missing the required parameter 'databaseRequest' when calling putDatabases");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/api/TemplateApi.js b/client/devops/src/api/TemplateApi.js
new file mode 100644
index 0000000..91f3411
--- /dev/null
+++ b/client/devops/src/api/TemplateApi.js
@@ -0,0 +1,214 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import Template from '../model/Template';
+import TemplateRequest from '../model/TemplateRequest';
+import TemplateResponse from '../model/TemplateResponse';
+
+/**
+* Template service.
+* @module api/TemplateApi
+* @version 0.0.2
+*/
+export default class TemplateApi {
+
+ /**
+ * Constructs a new TemplateApi.
+ * @alias module:api/TemplateApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getTemplate operation.
+ * @callback module:api/TemplateApi~getTemplateCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/Template} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single Template object
+ * Return a single Template object from datastore as a Singleton
+ * @param {String} templateIdPath Taxnexus Record Id of a Template
+ * @param {module:api/TemplateApi~getTemplateCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/Template}
+ */
+ getTemplate(templateIdPath, callback) {
+ let postBody = null;
+ // verify the required parameter 'templateIdPath' is set
+ if (templateIdPath === undefined || templateIdPath === null) {
+ throw new Error("Missing the required parameter 'templateIdPath' when calling getTemplate");
+ }
+
+ let pathParams = {
+ 'templateIdPath': templateIdPath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = Template;
+ return this.apiClient.callApi(
+ '/templates/{templateIdPath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getTemplates operation.
+ * @callback module:api/TemplateApi~getTemplatesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TemplateResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Templates
+ * Return a list of Templates from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip? (default 0)
+ * @param {Boolean} opts.active Retrieve active records only?
+ * @param {String} opts.templateId Template ID
+ * @param {Boolean} opts.isMaster Is Master Template?
+ * @param {String} opts.objectType Object Type Name
+ * @param {module:api/TemplateApi~getTemplatesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TemplateResponse}
+ */
+ getTemplates(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'templateId': opts['templateId'],
+ 'isMaster': opts['isMaster'],
+ 'objectType': opts['objectType']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = TemplateResponse;
+ return this.apiClient.callApi(
+ '/templates', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getTemplatesObservable operation.
+ * @callback module:api/TemplateApi~getTemplatesObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Templates in an observable array
+ * Returns a Template retrieval in a observable array
+ * @param {module:api/TemplateApi~getTemplatesObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getTemplatesObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Template];
+ return this.apiClient.callApi(
+ '/templates/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postTemplates operation.
+ * @callback module:api/TemplateApi~postTemplatesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TemplateResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Templates
+ * Create new Templates
+ * @param {module:model/TemplateRequest} templateRequest An array of Template records
+ * @param {module:api/TemplateApi~postTemplatesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TemplateResponse}
+ */
+ postTemplates(templateRequest, callback) {
+ let postBody = templateRequest;
+ // verify the required parameter 'templateRequest' is set
+ if (templateRequest === undefined || templateRequest === null) {
+ throw new Error("Missing the required parameter 'templateRequest' when calling postTemplates");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TemplateResponse;
+ return this.apiClient.callApi(
+ '/templates', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/api/TenantApi.js b/client/devops/src/api/TenantApi.js
new file mode 100644
index 0000000..d88ca7b
--- /dev/null
+++ b/client/devops/src/api/TenantApi.js
@@ -0,0 +1,254 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import Tenant from '../model/Tenant';
+import TenantRequest from '../model/TenantRequest';
+import TenantResponse from '../model/TenantResponse';
+
+/**
+* Tenant service.
+* @module api/TenantApi
+* @version 0.0.2
+*/
+export default class TenantApi {
+
+ /**
+ * Constructs a new TenantApi.
+ * @alias module:api/TenantApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getTenant operation.
+ * @callback module:api/TenantApi~getTenantCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/Tenant} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single Tenant object
+ * Return a single Tenant object from datastore as a Singleton
+ * @param {String} tenantIdPath Taxnexus Record Id of a Tenant
+ * @param {module:api/TenantApi~getTenantCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/Tenant}
+ */
+ getTenant(tenantIdPath, callback) {
+ let postBody = null;
+ // verify the required parameter 'tenantIdPath' is set
+ if (tenantIdPath === undefined || tenantIdPath === null) {
+ throw new Error("Missing the required parameter 'tenantIdPath' when calling getTenant");
+ }
+
+ let pathParams = {
+ 'tenantIdPath': tenantIdPath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = Tenant;
+ return this.apiClient.callApi(
+ '/tenants/{tenantIdPath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getTenants operation.
+ * @callback module:api/TenantApi~getTenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Tenants
+ * Return a list of Tenant records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.taxnexusAccount Taxnexus Account of a Tenant
+ * @param {String} opts.tenantId Taxnexus Record Id of a Tenant
+ * @param {String} opts.companyId Taxnexus Record Id of a Company
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip? (default 0)
+ * @param {module:api/TenantApi~getTenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ getTenants(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'taxnexusAccount': opts['taxnexusAccount'],
+ 'tenantId': opts['tenantId'],
+ 'companyId': opts['companyId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getTenantsObservable operation.
+ * @callback module:api/TenantApi~getTenantsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Tenants in an observable array
+ * Returns a Tenant retrieval in a observable array
+ * @param {module:api/TenantApi~getTenantsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getTenantsObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Tenant];
+ return this.apiClient.callApi(
+ '/tenants/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postTenants operation.
+ * @callback module:api/TenantApi~postTenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Tenants
+ * Create Tenants in Taxnexus
+ * @param {module:model/TenantRequest} tenantRequest An array of Tenant records
+ * @param {module:api/TenantApi~postTenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ postTenants(tenantRequest, callback) {
+ let postBody = tenantRequest;
+ // verify the required parameter 'tenantRequest' is set
+ if (tenantRequest === undefined || tenantRequest === null) {
+ throw new Error("Missing the required parameter 'tenantRequest' when calling postTenants");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putTenants operation.
+ * @callback module:api/TenantApi~putTenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Tenants
+ * Update Tenant in Taxnexus
+ * @param {module:model/TenantRequest} tenantRequest An array of Tenant records
+ * @param {module:api/TenantApi~putTenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ putTenants(tenantRequest, callback) {
+ let postBody = tenantRequest;
+ // verify the required parameter 'tenantRequest' is set
+ if (tenantRequest === undefined || tenantRequest === null) {
+ throw new Error("Missing the required parameter 'tenantRequest' when calling putTenants");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/api/UserApi.js b/client/devops/src/api/UserApi.js
new file mode 100644
index 0000000..66a4861
--- /dev/null
+++ b/client/devops/src/api/UserApi.js
@@ -0,0 +1,260 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import User from '../model/User';
+import UserRequest from '../model/UserRequest';
+import UserResponse from '../model/UserResponse';
+
+/**
+* User service.
+* @module api/UserApi
+* @version 0.0.2
+*/
+export default class UserApi {
+
+ /**
+ * Constructs a new UserApi.
+ * @alias module:api/UserApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getUser operation.
+ * @callback module:api/UserApi~getUserCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/User} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a single User object
+ * Return a single User object from datastore as a Singleton
+ * @param {String} userIdPath Taxnexus Record Id of a User
+ * @param {module:api/UserApi~getUserCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/User}
+ */
+ getUser(userIdPath, callback) {
+ let postBody = null;
+ // verify the required parameter 'userIdPath' is set
+ if (userIdPath === undefined || userIdPath === null) {
+ throw new Error("Missing the required parameter 'userIdPath' when calling getUser");
+ }
+
+ let pathParams = {
+ 'userIdPath': userIdPath
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = User;
+ return this.apiClient.callApi(
+ '/users/{userIdPath}', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getUsers operation.
+ * @callback module:api/UserApi~getUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Users
+ * Return a list of User records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip? (default 0)
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.contactId Taxnexus Record Id of a Contact
+ * @param {Boolean} opts.active Retrieve active records only?
+ * @param {String} opts.email Email Address (not unique)
+ * @param {String} opts.userId Taxnexus User ID (unique)
+ * @param {String} opts.username Username (unique)
+ * @param {module:api/UserApi~getUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserResponse}
+ */
+ getUsers(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'accountId': opts['accountId'],
+ 'contactId': opts['contactId'],
+ 'active': opts['active'],
+ 'email': opts['email'],
+ 'userId': opts['userId'],
+ 'username': opts['username']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = UserResponse;
+ return this.apiClient.callApi(
+ '/users', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getUsersObservable operation.
+ * @callback module:api/UserApi~getUsersObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Users in an observable array
+ * Returns a User retrieval in a observable array
+ * @param {module:api/UserApi~getUsersObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getUsersObservable(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [User];
+ return this.apiClient.callApi(
+ '/users/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postUsers operation.
+ * @callback module:api/UserApi~postUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Users
+ * Create new Users
+ * @param {module:model/UserRequest} userRequest An array of User records
+ * @param {module:api/UserApi~postUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserResponse}
+ */
+ postUsers(userRequest, callback) {
+ let postBody = userRequest;
+ // verify the required parameter 'userRequest' is set
+ if (userRequest === undefined || userRequest === null) {
+ throw new Error("Missing the required parameter 'userRequest' when calling postUsers");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = UserResponse;
+ return this.apiClient.callApi(
+ '/users', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putUsers operation.
+ * @callback module:api/UserApi~putUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update existing users
+ * Update existing users
+ * @param {module:model/UserRequest} userRequest An array of User records
+ * @param {module:api/UserApi~putUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserResponse}
+ */
+ putUsers(userRequest, callback) {
+ let postBody = userRequest;
+ // verify the required parameter 'userRequest' is set
+ if (userRequest === undefined || userRequest === null) {
+ throw new Error("Missing the required parameter 'userRequest' when calling putUsers");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = UserResponse;
+ return this.apiClient.callApi(
+ '/users', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/devops/src/index.js b/client/devops/src/index.js
new file mode 100644
index 0000000..b920e0f
--- /dev/null
+++ b/client/devops/src/index.js
@@ -0,0 +1,286 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Address from './model/Address';
+import Cluster from './model/Cluster';
+import ClusterRequest from './model/ClusterRequest';
+import ClusterResponse from './model/ClusterResponse';
+import Database from './model/Database';
+import DatabaseRequest from './model/DatabaseRequest';
+import DatabaseResponse from './model/DatabaseResponse';
+import DeleteResponse from './model/DeleteResponse';
+import Error from './model/Error';
+import Message from './model/Message';
+import Pagination from './model/Pagination';
+import RequestMeta from './model/RequestMeta';
+import ResponseMeta from './model/ResponseMeta';
+import Role from './model/Role';
+import RoleRequest from './model/RoleRequest';
+import RoleResponse from './model/RoleResponse';
+import Template from './model/Template';
+import TemplateRequest from './model/TemplateRequest';
+import TemplateResponse from './model/TemplateResponse';
+import Tenant from './model/Tenant';
+import TenantRequest from './model/TenantRequest';
+import TenantResponse from './model/TenantResponse';
+import TenantUser from './model/TenantUser';
+import User from './model/User';
+import UserRequest from './model/UserRequest';
+import UserResponse from './model/UserResponse';
+import UserRole from './model/UserRole';
+import ClusterApi from './api/ClusterApi';
+import CorsApi from './api/CorsApi';
+import DatabaseApi from './api/DatabaseApi';
+import TemplateApi from './api/TemplateApi';
+import TenantApi from './api/TenantApi';
+import UserApi from './api/UserApi';
+
+
+/**
+* System_Operations_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var Devops = require('index'); // See note below*.
+* var xxxSvc = new Devops.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Devops.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new Devops.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new Devops.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Address model constructor.
+ * @property {module:model/Address}
+ */
+ Address,
+
+ /**
+ * The Cluster model constructor.
+ * @property {module:model/Cluster}
+ */
+ Cluster,
+
+ /**
+ * The ClusterRequest model constructor.
+ * @property {module:model/ClusterRequest}
+ */
+ ClusterRequest,
+
+ /**
+ * The ClusterResponse model constructor.
+ * @property {module:model/ClusterResponse}
+ */
+ ClusterResponse,
+
+ /**
+ * The Database model constructor.
+ * @property {module:model/Database}
+ */
+ Database,
+
+ /**
+ * The DatabaseRequest model constructor.
+ * @property {module:model/DatabaseRequest}
+ */
+ DatabaseRequest,
+
+ /**
+ * The DatabaseResponse model constructor.
+ * @property {module:model/DatabaseResponse}
+ */
+ DatabaseResponse,
+
+ /**
+ * The DeleteResponse model constructor.
+ * @property {module:model/DeleteResponse}
+ */
+ DeleteResponse,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The Message model constructor.
+ * @property {module:model/Message}
+ */
+ Message,
+
+ /**
+ * The Pagination model constructor.
+ * @property {module:model/Pagination}
+ */
+ Pagination,
+
+ /**
+ * The RequestMeta model constructor.
+ * @property {module:model/RequestMeta}
+ */
+ RequestMeta,
+
+ /**
+ * The ResponseMeta model constructor.
+ * @property {module:model/ResponseMeta}
+ */
+ ResponseMeta,
+
+ /**
+ * The Role model constructor.
+ * @property {module:model/Role}
+ */
+ Role,
+
+ /**
+ * The RoleRequest model constructor.
+ * @property {module:model/RoleRequest}
+ */
+ RoleRequest,
+
+ /**
+ * The RoleResponse model constructor.
+ * @property {module:model/RoleResponse}
+ */
+ RoleResponse,
+
+ /**
+ * The Template model constructor.
+ * @property {module:model/Template}
+ */
+ Template,
+
+ /**
+ * The TemplateRequest model constructor.
+ * @property {module:model/TemplateRequest}
+ */
+ TemplateRequest,
+
+ /**
+ * The TemplateResponse model constructor.
+ * @property {module:model/TemplateResponse}
+ */
+ TemplateResponse,
+
+ /**
+ * The Tenant model constructor.
+ * @property {module:model/Tenant}
+ */
+ Tenant,
+
+ /**
+ * The TenantRequest model constructor.
+ * @property {module:model/TenantRequest}
+ */
+ TenantRequest,
+
+ /**
+ * The TenantResponse model constructor.
+ * @property {module:model/TenantResponse}
+ */
+ TenantResponse,
+
+ /**
+ * The TenantUser model constructor.
+ * @property {module:model/TenantUser}
+ */
+ TenantUser,
+
+ /**
+ * The User model constructor.
+ * @property {module:model/User}
+ */
+ User,
+
+ /**
+ * The UserRequest model constructor.
+ * @property {module:model/UserRequest}
+ */
+ UserRequest,
+
+ /**
+ * The UserResponse model constructor.
+ * @property {module:model/UserResponse}
+ */
+ UserResponse,
+
+ /**
+ * The UserRole model constructor.
+ * @property {module:model/UserRole}
+ */
+ UserRole,
+
+ /**
+ * The ClusterApi service constructor.
+ * @property {module:api/ClusterApi}
+ */
+ ClusterApi,
+
+ /**
+ * The CorsApi service constructor.
+ * @property {module:api/CorsApi}
+ */
+ CorsApi,
+
+ /**
+ * The DatabaseApi service constructor.
+ * @property {module:api/DatabaseApi}
+ */
+ DatabaseApi,
+
+ /**
+ * The TemplateApi service constructor.
+ * @property {module:api/TemplateApi}
+ */
+ TemplateApi,
+
+ /**
+ * The TenantApi service constructor.
+ * @property {module:api/TenantApi}
+ */
+ TenantApi,
+
+ /**
+ * The UserApi service constructor.
+ * @property {module:api/UserApi}
+ */
+ UserApi
+};
diff --git a/client/devops/src/model/Address.js b/client/devops/src/model/Address.js
new file mode 100644
index 0000000..177801e
--- /dev/null
+++ b/client/devops/src/model/Address.js
@@ -0,0 +1,126 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Address model module.
+ * @module model/Address
+ * @version 0.0.2
+ */
+class Address {
+ /**
+ * Constructs a new Address
.
+ * @alias module:model/Address
+ */
+ constructor() {
+
+ Address.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('City')) {
+ obj['City'] = ApiClient.convertToType(data['City'], 'String');
+ }
+ if (data.hasOwnProperty('Country')) {
+ obj['Country'] = ApiClient.convertToType(data['Country'], 'String');
+ }
+ if (data.hasOwnProperty('CountryCode')) {
+ obj['CountryCode'] = ApiClient.convertToType(data['CountryCode'], 'String');
+ }
+ if (data.hasOwnProperty('PostalCode')) {
+ obj['PostalCode'] = ApiClient.convertToType(data['PostalCode'], 'String');
+ }
+ if (data.hasOwnProperty('State')) {
+ obj['State'] = ApiClient.convertToType(data['State'], 'String');
+ }
+ if (data.hasOwnProperty('StateCode')) {
+ obj['StateCode'] = ApiClient.convertToType(data['StateCode'], 'String');
+ }
+ if (data.hasOwnProperty('Street')) {
+ obj['Street'] = ApiClient.convertToType(data['Street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} City
+ */
+Address.prototype['City'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} Country
+ */
+Address.prototype['Country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} CountryCode
+ */
+Address.prototype['CountryCode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} PostalCode
+ */
+Address.prototype['PostalCode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} State
+ */
+Address.prototype['State'] = undefined;
+
+/**
+ * State Code
+ * @member {String} StateCode
+ */
+Address.prototype['StateCode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} Street
+ */
+Address.prototype['Street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/devops/src/model/Cluster.js b/client/devops/src/model/Cluster.js
new file mode 100644
index 0000000..e08dfd2
--- /dev/null
+++ b/client/devops/src/model/Cluster.js
@@ -0,0 +1,216 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Cluster model module.
+ * @module model/Cluster
+ * @version 0.0.2
+ */
+class Cluster {
+ /**
+ * Constructs a new Cluster
.
+ * @alias module:model/Cluster
+ */
+ constructor() {
+
+ Cluster.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Cluster
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Cluster} obj Optional instance to populate.
+ * @return {module:model/Cluster} The populated Cluster
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Cluster();
+
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Environment')) {
+ obj['Environment'] = ApiClient.convertToType(data['Environment'], 'String');
+ }
+ if (data.hasOwnProperty('Gateway')) {
+ obj['Gateway'] = ApiClient.convertToType(data['Gateway'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IPAddress')) {
+ obj['IPAddress'] = ApiClient.convertToType(data['IPAddress'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('Subnet')) {
+ obj['Subnet'] = ApiClient.convertToType(data['Subnet'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Zone')) {
+ obj['Zone'] = ApiClient.convertToType(data['Zone'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Cluster.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Cluster.prototype['CreatedDate'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Cluster.prototype['Description'] = undefined;
+
+/**
+ * Environment
+ * @member {String} Environment
+ */
+Cluster.prototype['Environment'] = undefined;
+
+/**
+ * Gateway
+ * @member {String} Gateway
+ */
+Cluster.prototype['Gateway'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Cluster.prototype['ID'] = undefined;
+
+/**
+ * IP Address
+ * @member {String} IPAddress
+ */
+Cluster.prototype['IPAddress'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Cluster.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Cluster.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Cluster Name
+ * @member {String} Name
+ */
+Cluster.prototype['Name'] = undefined;
+
+/**
+ * Owner
+ * @member {String} OwnerID
+ */
+Cluster.prototype['OwnerID'] = undefined;
+
+/**
+ * External Reference
+ * @member {String} Ref
+ */
+Cluster.prototype['Ref'] = undefined;
+
+/**
+ * Status
+ * @member {String} Status
+ */
+Cluster.prototype['Status'] = undefined;
+
+/**
+ * Subnet
+ * @member {String} Subnet
+ */
+Cluster.prototype['Subnet'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Cluster.prototype['Type'] = undefined;
+
+/**
+ * The ID of the tenant who owns this Database
+ * @member {String} TenantID
+ */
+Cluster.prototype['TenantID'] = undefined;
+
+/**
+ * Zone
+ * @member {String} Zone
+ */
+Cluster.prototype['Zone'] = undefined;
+
+
+
+
+
+
+export default Cluster;
+
diff --git a/client/devops/src/model/ClusterRequest.js b/client/devops/src/model/ClusterRequest.js
new file mode 100644
index 0000000..847d247
--- /dev/null
+++ b/client/devops/src/model/ClusterRequest.js
@@ -0,0 +1,72 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Cluster from './Cluster';
+
+/**
+ * The ClusterRequest model module.
+ * @module model/ClusterRequest
+ * @version 0.0.2
+ */
+class ClusterRequest {
+ /**
+ * Constructs a new ClusterRequest
.
+ * @alias module:model/ClusterRequest
+ */
+ constructor() {
+
+ ClusterRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ClusterRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ClusterRequest} obj Optional instance to populate.
+ * @return {module:model/ClusterRequest} The populated ClusterRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ClusterRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Cluster]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ClusterRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default ClusterRequest;
+
diff --git a/client/devops/src/model/ClusterResponse.js b/client/devops/src/model/ClusterResponse.js
new file mode 100644
index 0000000..7cdd2d7
--- /dev/null
+++ b/client/devops/src/model/ClusterResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Cluster from './Cluster';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ClusterResponse model module.
+ * @module model/ClusterResponse
+ * @version 0.0.2
+ */
+class ClusterResponse {
+ /**
+ * Constructs a new ClusterResponse
.
+ * An array of cluster objects
+ * @alias module:model/ClusterResponse
+ */
+ constructor() {
+
+ ClusterResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ClusterResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ClusterResponse} obj Optional instance to populate.
+ * @return {module:model/ClusterResponse} The populated ClusterResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ClusterResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Cluster]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ClusterResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+ClusterResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default ClusterResponse;
+
diff --git a/client/devops/src/model/Database.js b/client/devops/src/model/Database.js
new file mode 100644
index 0000000..9af8e25
--- /dev/null
+++ b/client/devops/src/model/Database.js
@@ -0,0 +1,172 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Database model module.
+ * @module model/Database
+ * @version 0.0.2
+ */
+class Database {
+ /**
+ * Constructs a new Database
.
+ * A Database provisioned and owned by a Tenant
+ * @alias module:model/Database
+ */
+ constructor() {
+
+ Database.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Database
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Database} obj Optional instance to populate.
+ * @return {module:model/Database} The populated Database
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Database();
+
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ClusterID')) {
+ obj['ClusterID'] = ApiClient.convertToType(data['ClusterID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('DSN')) {
+ obj['DSN'] = ApiClient.convertToType(data['DSN'], 'String');
+ }
+ if (data.hasOwnProperty('DatabaseName')) {
+ obj['DatabaseName'] = ApiClient.convertToType(data['DatabaseName'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Is this database active?
+ * @member {Boolean} Active
+ */
+Database.prototype['Active'] = undefined;
+
+/**
+ * The ID of the Cluster in which this database is deployed
+ * @member {String} ClusterID
+ */
+Database.prototype['ClusterID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Database.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Database.prototype['CreatedDate'] = undefined;
+
+/**
+ * Database connection string
+ * @member {String} DSN
+ */
+Database.prototype['DSN'] = undefined;
+
+/**
+ * The name of the physical database in the cluster
+ * @member {String} DatabaseName
+ */
+Database.prototype['DatabaseName'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Database.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Database.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Database.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} Status
+ */
+Database.prototype['Status'] = undefined;
+
+/**
+ * The ID of the tenant who owns this Database
+ * @member {String} TenantID
+ */
+Database.prototype['TenantID'] = undefined;
+
+/**
+ * The type of Database (mysql, etc)
+ * @member {String} Type
+ */
+Database.prototype['Type'] = undefined;
+
+
+
+
+
+
+export default Database;
+
diff --git a/client/devops/src/model/DatabaseRequest.js b/client/devops/src/model/DatabaseRequest.js
new file mode 100644
index 0000000..5d79f98
--- /dev/null
+++ b/client/devops/src/model/DatabaseRequest.js
@@ -0,0 +1,73 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+
+/**
+ * The DatabaseRequest model module.
+ * @module model/DatabaseRequest
+ * @version 0.0.2
+ */
+class DatabaseRequest {
+ /**
+ * Constructs a new DatabaseRequest
.
+ * An array of Database objects
+ * @alias module:model/DatabaseRequest
+ */
+ constructor() {
+
+ DatabaseRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DatabaseRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DatabaseRequest} obj Optional instance to populate.
+ * @return {module:model/DatabaseRequest} The populated DatabaseRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DatabaseRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Database]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DatabaseRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default DatabaseRequest;
+
diff --git a/client/devops/src/model/DatabaseResponse.js b/client/devops/src/model/DatabaseResponse.js
new file mode 100644
index 0000000..6d481d4
--- /dev/null
+++ b/client/devops/src/model/DatabaseResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DatabaseResponse model module.
+ * @module model/DatabaseResponse
+ * @version 0.0.2
+ */
+class DatabaseResponse {
+ /**
+ * Constructs a new DatabaseResponse
.
+ * An array of Database objects
+ * @alias module:model/DatabaseResponse
+ */
+ constructor() {
+
+ DatabaseResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DatabaseResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DatabaseResponse} obj Optional instance to populate.
+ * @return {module:model/DatabaseResponse} The populated DatabaseResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DatabaseResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Database]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DatabaseResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DatabaseResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DatabaseResponse;
+
diff --git a/client/devops/src/model/DeleteResponse.js b/client/devops/src/model/DeleteResponse.js
new file mode 100644
index 0000000..52747b0
--- /dev/null
+++ b/client/devops/src/model/DeleteResponse.js
@@ -0,0 +1,81 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Message from './Message';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DeleteResponse model module.
+ * @module model/DeleteResponse
+ * @version 0.0.2
+ */
+class DeleteResponse {
+ /**
+ * Constructs a new DeleteResponse
.
+ * @alias module:model/DeleteResponse
+ */
+ constructor() {
+
+ DeleteResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DeleteResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DeleteResponse} obj Optional instance to populate.
+ * @return {module:model/DeleteResponse} The populated DeleteResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DeleteResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Message]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DeleteResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DeleteResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DeleteResponse;
+
diff --git a/client/devops/src/model/Error.js b/client/devops/src/model/Error.js
new file mode 100644
index 0000000..fc28ef9
--- /dev/null
+++ b/client/devops/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('code')) {
+ obj['code'] = ApiClient.convertToType(data['code'], 'Number');
+ }
+ if (data.hasOwnProperty('fields')) {
+ obj['fields'] = ApiClient.convertToType(data['fields'], 'String');
+ }
+ if (data.hasOwnProperty('message')) {
+ obj['message'] = ApiClient.convertToType(data['message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} code
+ */
+Error.prototype['code'] = undefined;
+
+/**
+ * @member {String} fields
+ */
+Error.prototype['fields'] = undefined;
+
+/**
+ * @member {String} message
+ */
+Error.prototype['message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/devops/src/model/Message.js b/client/devops/src/model/Message.js
new file mode 100644
index 0000000..96ea07a
--- /dev/null
+++ b/client/devops/src/model/Message.js
@@ -0,0 +1,87 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Message model module.
+ * @module model/Message
+ * @version 0.0.2
+ */
+class Message {
+ /**
+ * Constructs a new Message
.
+ * @alias module:model/Message
+ */
+ constructor() {
+
+ Message.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Message
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Message} obj Optional instance to populate.
+ * @return {module:model/Message} The populated Message
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Message();
+
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} Message
+ */
+Message.prototype['Message'] = undefined;
+
+/**
+ * @member {String} Ref
+ */
+Message.prototype['Ref'] = undefined;
+
+/**
+ * @member {Number} Status
+ */
+Message.prototype['Status'] = undefined;
+
+
+
+
+
+
+export default Message;
+
diff --git a/client/devops/src/model/Pagination.js b/client/devops/src/model/Pagination.js
new file mode 100644
index 0000000..09074ff
--- /dev/null
+++ b/client/devops/src/model/Pagination.js
@@ -0,0 +1,95 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Pagination model module.
+ * @module model/Pagination
+ * @version 0.0.2
+ */
+class Pagination {
+ /**
+ * Constructs a new Pagination
.
+ * @alias module:model/Pagination
+ */
+ constructor() {
+
+ Pagination.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Pagination
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Pagination} obj Optional instance to populate.
+ * @return {module:model/Pagination} The populated Pagination
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Pagination();
+
+ if (data.hasOwnProperty('Limit')) {
+ obj['Limit'] = ApiClient.convertToType(data['Limit'], 'Number');
+ }
+ if (data.hasOwnProperty('POffset')) {
+ obj['POffset'] = ApiClient.convertToType(data['POffset'], 'Number');
+ }
+ if (data.hasOwnProperty('PageSize')) {
+ obj['PageSize'] = ApiClient.convertToType(data['PageSize'], 'Number');
+ }
+ if (data.hasOwnProperty('SetSize')) {
+ obj['SetSize'] = ApiClient.convertToType(data['SetSize'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Limit
+ */
+Pagination.prototype['Limit'] = undefined;
+
+/**
+ * @member {Number} POffset
+ */
+Pagination.prototype['POffset'] = undefined;
+
+/**
+ * @member {Number} PageSize
+ */
+Pagination.prototype['PageSize'] = undefined;
+
+/**
+ * @member {Number} SetSize
+ */
+Pagination.prototype['SetSize'] = undefined;
+
+
+
+
+
+
+export default Pagination;
+
diff --git a/client/devops/src/model/RequestMeta.js b/client/devops/src/model/RequestMeta.js
new file mode 100644
index 0000000..9e8bee0
--- /dev/null
+++ b/client/devops/src/model/RequestMeta.js
@@ -0,0 +1,74 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RequestMeta model module.
+ * @module model/RequestMeta
+ * @version 0.0.2
+ */
+class RequestMeta {
+ /**
+ * Constructs a new RequestMeta
.
+ * @alias module:model/RequestMeta
+ * @param taxnexusAccount {String} Taxnexus Account Number of the Reseller or OEM
+ */
+ constructor(taxnexusAccount) {
+
+ RequestMeta.initialize(this, taxnexusAccount);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, taxnexusAccount) {
+ obj['TaxnexusAccount'] = taxnexusAccount;
+ }
+
+ /**
+ * Constructs a RequestMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RequestMeta} obj Optional instance to populate.
+ * @return {module:model/RequestMeta} The populated RequestMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RequestMeta();
+
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the Reseller or OEM
+ * @member {String} TaxnexusAccount
+ */
+RequestMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default RequestMeta;
+
diff --git a/client/devops/src/model/ResponseMeta.js b/client/devops/src/model/ResponseMeta.js
new file mode 100644
index 0000000..07c2469
--- /dev/null
+++ b/client/devops/src/model/ResponseMeta.js
@@ -0,0 +1,171 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Pagination from './Pagination';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('Pagination')) {
+ obj['Pagination'] = Pagination.constructFromObject(data['Pagination']);
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * @member {module:model/Pagination} Pagination
+ */
+ResponseMeta.prototype['Pagination'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/devops/src/model/Role.js b/client/devops/src/model/Role.js
new file mode 100644
index 0000000..21027a5
--- /dev/null
+++ b/client/devops/src/model/Role.js
@@ -0,0 +1,145 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Role model module.
+ * @module model/Role
+ * @version 0.0.2
+ */
+class Role {
+ /**
+ * Constructs a new Role
.
+ * A functional role within a Tenant
+ * @alias module:model/Role
+ */
+ constructor() {
+
+ Role.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Role
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Role} obj Optional instance to populate.
+ * @return {module:model/Role} The populated Role
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Role();
+
+ if (data.hasOwnProperty('Auth0RoleID')) {
+ obj['Auth0RoleID'] = ApiClient.convertToType(data['Auth0RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('RoleName')) {
+ obj['RoleName'] = ApiClient.convertToType(data['RoleName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The corresponding Auth0 Role
+ * @member {String} Auth0RoleID
+ */
+Role.prototype['Auth0RoleID'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Role.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Role.prototype['CreatedDate'] = undefined;
+
+/**
+ * Role Description
+ * @member {String} Description
+ */
+Role.prototype['Description'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Role.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Role.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Role.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The name of this role
+ * @member {String} RoleName
+ */
+Role.prototype['RoleName'] = undefined;
+
+/**
+ * The ID of the Tenant that owns this Role
+ * @member {String} TenantID
+ */
+Role.prototype['TenantID'] = undefined;
+
+
+
+
+
+
+export default Role;
+
diff --git a/client/devops/src/model/RoleRequest.js b/client/devops/src/model/RoleRequest.js
new file mode 100644
index 0000000..21f6ca1
--- /dev/null
+++ b/client/devops/src/model/RoleRequest.js
@@ -0,0 +1,73 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Role from './Role';
+
+/**
+ * The RoleRequest model module.
+ * @module model/RoleRequest
+ * @version 0.0.2
+ */
+class RoleRequest {
+ /**
+ * Constructs a new RoleRequest
.
+ * An array of Role objects
+ * @alias module:model/RoleRequest
+ */
+ constructor() {
+
+ RoleRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a RoleRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RoleRequest} obj Optional instance to populate.
+ * @return {module:model/RoleRequest} The populated RoleRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RoleRequest();
+
+ if (data.hasOwnProperty('Date')) {
+ obj['Date'] = ApiClient.convertToType(data['Date'], [Role]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Date
+ */
+RoleRequest.prototype['Date'] = undefined;
+
+
+
+
+
+
+export default RoleRequest;
+
diff --git a/client/devops/src/model/RoleResponse.js b/client/devops/src/model/RoleResponse.js
new file mode 100644
index 0000000..09b082a
--- /dev/null
+++ b/client/devops/src/model/RoleResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Role from './Role';
+
+/**
+ * The RoleResponse model module.
+ * @module model/RoleResponse
+ * @version 0.0.2
+ */
+class RoleResponse {
+ /**
+ * Constructs a new RoleResponse
.
+ * An array of Role objects
+ * @alias module:model/RoleResponse
+ */
+ constructor() {
+
+ RoleResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a RoleResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RoleResponse} obj Optional instance to populate.
+ * @return {module:model/RoleResponse} The populated RoleResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RoleResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Role]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+RoleResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+RoleResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default RoleResponse;
+
diff --git a/client/devops/src/model/Template.js b/client/devops/src/model/Template.js
new file mode 100644
index 0000000..251b301
--- /dev/null
+++ b/client/devops/src/model/Template.js
@@ -0,0 +1,203 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Template model module.
+ * @module model/Template
+ * @version 0.0.2
+ */
+class Template {
+ /**
+ * Constructs a new Template
.
+ * @alias module:model/Template
+ */
+ constructor() {
+
+ Template.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Template
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Template} obj Optional instance to populate.
+ * @return {module:model/Template} The populated Template
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Template();
+
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('HTML')) {
+ obj['HTML'] = ApiClient.convertToType(data['HTML'], 'Blob');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsActive')) {
+ obj['IsActive'] = ApiClient.convertToType(data['IsActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsMaster')) {
+ obj['IsMaster'] = ApiClient.convertToType(data['IsMaster'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('ObjectType')) {
+ obj['ObjectType'] = ApiClient.convertToType(data['ObjectType'], 'String');
+ }
+ if (data.hasOwnProperty('RecordTypeName')) {
+ obj['RecordTypeName'] = ApiClient.convertToType(data['RecordTypeName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('URL')) {
+ obj['URL'] = ApiClient.convertToType(data['URL'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Company
+ * @member {String} CompanyID
+ */
+Template.prototype['CompanyID'] = undefined;
+
+/**
+ * @member {String} CreatedByID
+ */
+Template.prototype['CreatedByID'] = undefined;
+
+/**
+ * @member {String} CreatedDate
+ */
+Template.prototype['CreatedDate'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Template.prototype['Description'] = undefined;
+
+/**
+ * HTML Body
+ * @member {Blob} HTML
+ */
+Template.prototype['HTML'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Template.prototype['ID'] = undefined;
+
+/**
+ * Active?
+ * @member {Boolean} IsActive
+ */
+Template.prototype['IsActive'] = undefined;
+
+/**
+ * Master Template?
+ * @member {Boolean} IsMaster
+ */
+Template.prototype['IsMaster'] = undefined;
+
+/**
+ * @member {String} LastModifiedByID
+ */
+Template.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * @member {String} LastModifiedDate
+ */
+Template.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Template Name
+ * @member {String} Name
+ */
+Template.prototype['Name'] = undefined;
+
+/**
+ * Object
+ * @member {String} ObjectType
+ */
+Template.prototype['ObjectType'] = undefined;
+
+/**
+ * Record Type Name
+ * @member {String} RecordTypeName
+ */
+Template.prototype['RecordTypeName'] = undefined;
+
+/**
+ * Tenant that owns this object instance
+ * @member {String} TenantID
+ */
+Template.prototype['TenantID'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Template.prototype['Type'] = undefined;
+
+/**
+ * URL
+ * @member {String} URL
+ */
+Template.prototype['URL'] = undefined;
+
+
+
+
+
+
+export default Template;
+
diff --git a/client/devops/src/model/TemplateRequest.js b/client/devops/src/model/TemplateRequest.js
new file mode 100644
index 0000000..e72c368
--- /dev/null
+++ b/client/devops/src/model/TemplateRequest.js
@@ -0,0 +1,73 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Template from './Template';
+
+/**
+ * The TemplateRequest model module.
+ * @module model/TemplateRequest
+ * @version 0.0.2
+ */
+class TemplateRequest {
+ /**
+ * Constructs a new TemplateRequest
.
+ * An array of Templates
+ * @alias module:model/TemplateRequest
+ */
+ constructor() {
+
+ TemplateRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TemplateRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TemplateRequest} obj Optional instance to populate.
+ * @return {module:model/TemplateRequest} The populated TemplateRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TemplateRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Template]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TemplateRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default TemplateRequest;
+
diff --git a/client/devops/src/model/TemplateResponse.js b/client/devops/src/model/TemplateResponse.js
new file mode 100644
index 0000000..c7c3a6e
--- /dev/null
+++ b/client/devops/src/model/TemplateResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Template from './Template';
+
+/**
+ * The TemplateResponse model module.
+ * @module model/TemplateResponse
+ * @version 0.0.2
+ */
+class TemplateResponse {
+ /**
+ * Constructs a new TemplateResponse
.
+ * An array of Templates
+ * @alias module:model/TemplateResponse
+ */
+ constructor() {
+
+ TemplateResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TemplateResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TemplateResponse} obj Optional instance to populate.
+ * @return {module:model/TemplateResponse} The populated TemplateResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TemplateResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Template]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TemplateResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+TemplateResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default TemplateResponse;
+
diff --git a/client/devops/src/model/Tenant.js b/client/devops/src/model/Tenant.js
new file mode 100644
index 0000000..05d3854
--- /dev/null
+++ b/client/devops/src/model/Tenant.js
@@ -0,0 +1,190 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import Role from './Role';
+import TenantUser from './TenantUser';
+
+/**
+ * The Tenant model module.
+ * @module model/Tenant
+ * @version 0.0.2
+ */
+class Tenant {
+ /**
+ * Constructs a new Tenant
.
+ * Taxnexus Account Tenant
+ * @alias module:model/Tenant
+ */
+ constructor() {
+
+ Tenant.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Tenant
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Tenant} obj Optional instance to populate.
+ * @return {module:model/Tenant} The populated Tenant
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Tenant();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Active')) {
+ obj['Active'] = ApiClient.convertToType(data['Active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Databases')) {
+ obj['Databases'] = ApiClient.convertToType(data['Databases'], [Database]);
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Roles')) {
+ obj['Roles'] = ApiClient.convertToType(data['Roles'], [Role]);
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantName')) {
+ obj['TenantName'] = ApiClient.convertToType(data['TenantName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantUsers')) {
+ obj['TenantUsers'] = ApiClient.convertToType(data['TenantUsers'], [TenantUser]);
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('Version')) {
+ obj['Version'] = ApiClient.convertToType(data['Version'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The Account that owns this Tenant
+ * @member {String} AccountID
+ */
+Tenant.prototype['AccountID'] = undefined;
+
+/**
+ * Is this Tenant currently active?
+ * @member {Boolean} Active
+ */
+Tenant.prototype['Active'] = undefined;
+
+/**
+ * Created By
+ * @member {String} CreatedByID
+ */
+Tenant.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Tenant.prototype['CreatedDate'] = undefined;
+
+/**
+ * @member {Array.} Databases
+ */
+Tenant.prototype['Databases'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} ID
+ */
+Tenant.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} LastModifiedByID
+ */
+Tenant.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} LastModifiedDate
+ */
+Tenant.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * @member {Array.} Roles
+ */
+Tenant.prototype['Roles'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} Status
+ */
+Tenant.prototype['Status'] = undefined;
+
+/**
+ * Name of the Tenant Resource
+ * @member {String} TenantName
+ */
+Tenant.prototype['TenantName'] = undefined;
+
+/**
+ * @member {Array.} TenantUsers
+ */
+Tenant.prototype['TenantUsers'] = undefined;
+
+/**
+ * The type of Tenant
+ * @member {String} Type
+ */
+Tenant.prototype['Type'] = undefined;
+
+/**
+ * The version number of the Tenant Onboarding system used to create this tenant
+ * @member {String} Version
+ */
+Tenant.prototype['Version'] = undefined;
+
+
+
+
+
+
+export default Tenant;
+
diff --git a/client/devops/src/model/TenantRequest.js b/client/devops/src/model/TenantRequest.js
new file mode 100644
index 0000000..650e53b
--- /dev/null
+++ b/client/devops/src/model/TenantRequest.js
@@ -0,0 +1,73 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Tenant from './Tenant';
+
+/**
+ * The TenantRequest model module.
+ * @module model/TenantRequest
+ * @version 0.0.2
+ */
+class TenantRequest {
+ /**
+ * Constructs a new TenantRequest
.
+ * An array of Tenant objects
+ * @alias module:model/TenantRequest
+ */
+ constructor() {
+
+ TenantRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantRequest} obj Optional instance to populate.
+ * @return {module:model/TenantRequest} The populated TenantRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Tenant]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TenantRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default TenantRequest;
+
diff --git a/client/devops/src/model/TenantResponse.js b/client/devops/src/model/TenantResponse.js
new file mode 100644
index 0000000..db270a7
--- /dev/null
+++ b/client/devops/src/model/TenantResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Tenant from './Tenant';
+
+/**
+ * The TenantResponse model module.
+ * @module model/TenantResponse
+ * @version 0.0.2
+ */
+class TenantResponse {
+ /**
+ * Constructs a new TenantResponse
.
+ * An array of Tenant objects
+ * @alias module:model/TenantResponse
+ */
+ constructor() {
+
+ TenantResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantResponse} obj Optional instance to populate.
+ * @return {module:model/TenantResponse} The populated TenantResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Tenant]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TenantResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+TenantResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default TenantResponse;
+
diff --git a/client/devops/src/model/TenantUser.js b/client/devops/src/model/TenantUser.js
new file mode 100644
index 0000000..5505b12
--- /dev/null
+++ b/client/devops/src/model/TenantUser.js
@@ -0,0 +1,208 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The TenantUser model module.
+ * @module model/TenantUser
+ * @version 0.0.2
+ */
+class TenantUser {
+ /**
+ * Constructs a new TenantUser
.
+ * Relationship object that connects users to a tenant
+ * @alias module:model/TenantUser
+ */
+ constructor() {
+
+ TenantUser.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantUser
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantUser} obj Optional instance to populate.
+ * @return {module:model/TenantUser} The populated TenantUser
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantUser();
+
+ if (data.hasOwnProperty('AccessLevel')) {
+ obj['AccessLevel'] = ApiClient.convertToType(data['AccessLevel'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantActive')) {
+ obj['TenantActive'] = ApiClient.convertToType(data['TenantActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TenantName')) {
+ obj['TenantName'] = ApiClient.convertToType(data['TenantName'], 'String');
+ }
+ if (data.hasOwnProperty('TenantStatus')) {
+ obj['TenantStatus'] = ApiClient.convertToType(data['TenantStatus'], 'String');
+ }
+ if (data.hasOwnProperty('TenantType')) {
+ obj['TenantType'] = ApiClient.convertToType(data['TenantType'], 'String');
+ }
+ if (data.hasOwnProperty('TenantVersion')) {
+ obj['TenantVersion'] = ApiClient.convertToType(data['TenantVersion'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The makeTenantUser access level for this User
+ * @member {String} AccessLevel
+ */
+TenantUser.prototype['AccessLevel'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+TenantUser.prototype['AccountID'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+TenantUser.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} CompanyName
+ */
+TenantUser.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+TenantUser.prototype['ContactID'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+TenantUser.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant active?
+ * @member {Boolean} TenantActive
+ */
+TenantUser.prototype['TenantActive'] = undefined;
+
+/**
+ * The Tenant ID
+ * @member {String} TenantID
+ */
+TenantUser.prototype['TenantID'] = undefined;
+
+/**
+ * Tenant Name
+ * @member {String} TenantName
+ */
+TenantUser.prototype['TenantName'] = undefined;
+
+/**
+ * Tenant Status
+ * @member {String} TenantStatus
+ */
+TenantUser.prototype['TenantStatus'] = undefined;
+
+/**
+ * Tenant type
+ * @member {String} TenantType
+ */
+TenantUser.prototype['TenantType'] = undefined;
+
+/**
+ * Tenant Version
+ * @member {String} TenantVersion
+ */
+TenantUser.prototype['TenantVersion'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+TenantUser.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+TenantUser.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+TenantUser.prototype['UserID'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+TenantUser.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default TenantUser;
+
diff --git a/client/devops/src/model/User.js b/client/devops/src/model/User.js
new file mode 100644
index 0000000..fa45a6f
--- /dev/null
+++ b/client/devops/src/model/User.js
@@ -0,0 +1,584 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+import TenantUser from './TenantUser';
+import UserRole from './UserRole';
+
+/**
+ * The User model module.
+ * @module model/User
+ * @version 0.0.2
+ */
+class User {
+ /**
+ * Constructs a new User
.
+ * @alias module:model/User
+ */
+ constructor() {
+
+ User.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a User
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/User} obj Optional instance to populate.
+ * @return {module:model/User} The populated User
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new User();
+
+ if (data.hasOwnProperty('APIKey')) {
+ obj['APIKey'] = ApiClient.convertToType(data['APIKey'], 'String');
+ }
+ if (data.hasOwnProperty('AboutMe')) {
+ obj['AboutMe'] = ApiClient.convertToType(data['AboutMe'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Address')) {
+ obj['Address'] = Address.constructFromObject(data['Address']);
+ }
+ if (data.hasOwnProperty('Alias')) {
+ obj['Alias'] = ApiClient.convertToType(data['Alias'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CommunityNickname')) {
+ obj['CommunityNickname'] = ApiClient.convertToType(data['CommunityNickname'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('DelegatedApproverID')) {
+ obj['DelegatedApproverID'] = ApiClient.convertToType(data['DelegatedApproverID'], 'String');
+ }
+ if (data.hasOwnProperty('Department')) {
+ obj['Department'] = ApiClient.convertToType(data['Department'], 'String');
+ }
+ if (data.hasOwnProperty('Division')) {
+ obj['Division'] = ApiClient.convertToType(data['Division'], 'String');
+ }
+ if (data.hasOwnProperty('Email')) {
+ obj['Email'] = ApiClient.convertToType(data['Email'], 'String');
+ }
+ if (data.hasOwnProperty('EmployeeNumber')) {
+ obj['EmployeeNumber'] = ApiClient.convertToType(data['EmployeeNumber'], 'String');
+ }
+ if (data.hasOwnProperty('EndOfDay')) {
+ obj['EndOfDay'] = ApiClient.convertToType(data['EndOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('Environment')) {
+ obj['Environment'] = ApiClient.convertToType(data['Environment'], 'String');
+ }
+ if (data.hasOwnProperty('Extension')) {
+ obj['Extension'] = ApiClient.convertToType(data['Extension'], 'String');
+ }
+ if (data.hasOwnProperty('FabricAPIKey')) {
+ obj['FabricAPIKey'] = ApiClient.convertToType(data['FabricAPIKey'], 'String');
+ }
+ if (data.hasOwnProperty('Fax')) {
+ obj['Fax'] = ApiClient.convertToType(data['Fax'], 'String');
+ }
+ if (data.hasOwnProperty('FirstName')) {
+ obj['FirstName'] = ApiClient.convertToType(data['FirstName'], 'String');
+ }
+ if (data.hasOwnProperty('ForecastEnabled')) {
+ obj['ForecastEnabled'] = ApiClient.convertToType(data['ForecastEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('FullPhotoURL')) {
+ obj['FullPhotoURL'] = ApiClient.convertToType(data['FullPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsActive')) {
+ obj['IsActive'] = ApiClient.convertToType(data['IsActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsPortalEnabled')) {
+ obj['IsPortalEnabled'] = ApiClient.convertToType(data['IsPortalEnabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsProphilePhotoActive')) {
+ obj['IsProphilePhotoActive'] = ApiClient.convertToType(data['IsProphilePhotoActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsSystemControlled')) {
+ obj['IsSystemControlled'] = ApiClient.convertToType(data['IsSystemControlled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastIP')) {
+ obj['LastIP'] = ApiClient.convertToType(data['LastIP'], 'String');
+ }
+ if (data.hasOwnProperty('LastLogin')) {
+ obj['LastLogin'] = ApiClient.convertToType(data['LastLogin'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastName')) {
+ obj['LastName'] = ApiClient.convertToType(data['LastName'], 'String');
+ }
+ if (data.hasOwnProperty('LoginCount')) {
+ obj['LoginCount'] = ApiClient.convertToType(data['LoginCount'], 'Number');
+ }
+ if (data.hasOwnProperty('ManagerID')) {
+ obj['ManagerID'] = ApiClient.convertToType(data['ManagerID'], 'String');
+ }
+ if (data.hasOwnProperty('MobilePhone')) {
+ obj['MobilePhone'] = ApiClient.convertToType(data['MobilePhone'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('OutOfOfficeMessage')) {
+ obj['OutOfOfficeMessage'] = ApiClient.convertToType(data['OutOfOfficeMessage'], 'String');
+ }
+ if (data.hasOwnProperty('Phone')) {
+ obj['Phone'] = ApiClient.convertToType(data['Phone'], 'String');
+ }
+ if (data.hasOwnProperty('PortalRole')) {
+ obj['PortalRole'] = ApiClient.convertToType(data['PortalRole'], 'String');
+ }
+ if (data.hasOwnProperty('ProfileID')) {
+ obj['ProfileID'] = ApiClient.convertToType(data['ProfileID'], 'String');
+ }
+ if (data.hasOwnProperty('ReceivesAdminEmails')) {
+ obj['ReceivesAdminEmails'] = ApiClient.convertToType(data['ReceivesAdminEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ReceivesAdminInfoEmails')) {
+ obj['ReceivesAdminInfoEmails'] = ApiClient.convertToType(data['ReceivesAdminInfoEmails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('SenderEmail')) {
+ obj['SenderEmail'] = ApiClient.convertToType(data['SenderEmail'], 'String');
+ }
+ if (data.hasOwnProperty('SenderName')) {
+ obj['SenderName'] = ApiClient.convertToType(data['SenderName'], 'String');
+ }
+ if (data.hasOwnProperty('Signature')) {
+ obj['Signature'] = ApiClient.convertToType(data['Signature'], 'String');
+ }
+ if (data.hasOwnProperty('SmallPhotoURL')) {
+ obj['SmallPhotoURL'] = ApiClient.convertToType(data['SmallPhotoURL'], 'String');
+ }
+ if (data.hasOwnProperty('StartOfDay')) {
+ obj['StartOfDay'] = ApiClient.convertToType(data['StartOfDay'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ if (data.hasOwnProperty('TenantUsers')) {
+ obj['TenantUsers'] = ApiClient.convertToType(data['TenantUsers'], [TenantUser]);
+ }
+ if (data.hasOwnProperty('TimeZone')) {
+ obj['TimeZone'] = ApiClient.convertToType(data['TimeZone'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoleID')) {
+ obj['UserRoleID'] = ApiClient.convertToType(data['UserRoleID'], 'String');
+ }
+ if (data.hasOwnProperty('UserRoles')) {
+ obj['UserRoles'] = ApiClient.convertToType(data['UserRoles'], [UserRole]);
+ }
+ if (data.hasOwnProperty('UserType')) {
+ obj['UserType'] = ApiClient.convertToType(data['UserType'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * API Key
+ * @member {String} APIKey
+ */
+User.prototype['APIKey'] = undefined;
+
+/**
+ * About Me
+ * @member {String} AboutMe
+ */
+User.prototype['AboutMe'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} AccountID
+ */
+User.prototype['AccountID'] = undefined;
+
+/**
+ * @member {module:model/Address} Address
+ */
+User.prototype['Address'] = undefined;
+
+/**
+ * Alias
+ * @member {String} Alias
+ */
+User.prototype['Alias'] = undefined;
+
+/**
+ * Auth0 User Id
+ * @member {String} Auth0UserID
+ */
+User.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Nickname
+ * @member {String} CommunityNickname
+ */
+User.prototype['CommunityNickname'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+User.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact
+ * @member {String} ContactID
+ */
+User.prototype['ContactID'] = undefined;
+
+/**
+ * Created User ID
+ * @member {String} CreatedByID
+ */
+User.prototype['CreatedByID'] = undefined;
+
+/**
+ * Date Created
+ * @member {String} CreatedDate
+ */
+User.prototype['CreatedDate'] = undefined;
+
+/**
+ * Delegated Approver
+ * @member {String} DelegatedApproverID
+ */
+User.prototype['DelegatedApproverID'] = undefined;
+
+/**
+ * Department
+ * @member {String} Department
+ */
+User.prototype['Department'] = undefined;
+
+/**
+ * Division
+ * @member {String} Division
+ */
+User.prototype['Division'] = undefined;
+
+/**
+ * Email address
+ * @member {String} Email
+ */
+User.prototype['Email'] = undefined;
+
+/**
+ * Employee Number
+ * @member {String} EmployeeNumber
+ */
+User.prototype['EmployeeNumber'] = undefined;
+
+/**
+ * Time day ends
+ * @member {String} EndOfDay
+ */
+User.prototype['EndOfDay'] = undefined;
+
+/**
+ * Environment
+ * @member {String} Environment
+ */
+User.prototype['Environment'] = undefined;
+
+/**
+ * Extension
+ * @member {String} Extension
+ */
+User.prototype['Extension'] = undefined;
+
+/**
+ * Fabric API Key
+ * @member {String} FabricAPIKey
+ */
+User.prototype['FabricAPIKey'] = undefined;
+
+/**
+ * Fax
+ * @member {String} Fax
+ */
+User.prototype['Fax'] = undefined;
+
+/**
+ * The first name
+ * @member {String} FirstName
+ */
+User.prototype['FirstName'] = undefined;
+
+/**
+ * Allow Forecasting
+ * @member {Boolean} ForecastEnabled
+ */
+User.prototype['ForecastEnabled'] = undefined;
+
+/**
+ * Full Photo URL
+ * @member {String} FullPhotoURL
+ */
+User.prototype['FullPhotoURL'] = undefined;
+
+/**
+ * Taxnexus ID
+ * @member {String} ID
+ */
+User.prototype['ID'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} IsActive
+ */
+User.prototype['IsActive'] = undefined;
+
+/**
+ * Is the user enabled for Communities?
+ * @member {Boolean} IsPortalEnabled
+ */
+User.prototype['IsPortalEnabled'] = undefined;
+
+/**
+ * Has Profile Photo
+ * @member {Boolean} IsProphilePhotoActive
+ */
+User.prototype['IsProphilePhotoActive'] = undefined;
+
+/**
+ * @member {Boolean} IsSystemControlled
+ */
+User.prototype['IsSystemControlled'] = undefined;
+
+/**
+ * IP address of last login
+ * @member {String} LastIP
+ */
+User.prototype['LastIP'] = undefined;
+
+/**
+ * Last login time
+ * @member {String} LastLogin
+ */
+User.prototype['LastLogin'] = undefined;
+
+/**
+ * Last Modified User ID
+ * @member {String} LastModifiedByID
+ */
+User.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+User.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The Last Name
+ * @member {String} LastName
+ */
+User.prototype['LastName'] = undefined;
+
+/**
+ * Number of times user has logged in
+ * @member {Number} LoginCount
+ */
+User.prototype['LoginCount'] = undefined;
+
+/**
+ * Manager
+ * @member {String} ManagerID
+ */
+User.prototype['ManagerID'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} MobilePhone
+ */
+User.prototype['MobilePhone'] = undefined;
+
+/**
+ * Name
+ * @member {String} Name
+ */
+User.prototype['Name'] = undefined;
+
+/**
+ * Out of office message
+ * @member {String} OutOfOfficeMessage
+ */
+User.prototype['OutOfOfficeMessage'] = undefined;
+
+/**
+ * Phone
+ * @member {String} Phone
+ */
+User.prototype['Phone'] = undefined;
+
+/**
+ * Portal Role Level
+ * @member {String} PortalRole
+ */
+User.prototype['PortalRole'] = undefined;
+
+/**
+ * Profile
+ * @member {String} ProfileID
+ */
+User.prototype['ProfileID'] = undefined;
+
+/**
+ * Info Emails
+ * @member {Boolean} ReceivesAdminEmails
+ */
+User.prototype['ReceivesAdminEmails'] = undefined;
+
+/**
+ * Admin Info Emails
+ * @member {Boolean} ReceivesAdminInfoEmails
+ */
+User.prototype['ReceivesAdminInfoEmails'] = undefined;
+
+/**
+ * Email Sender Address
+ * @member {String} SenderEmail
+ */
+User.prototype['SenderEmail'] = undefined;
+
+/**
+ * Email Sender Name
+ * @member {String} SenderName
+ */
+User.prototype['SenderName'] = undefined;
+
+/**
+ * Email Signature
+ * @member {String} Signature
+ */
+User.prototype['Signature'] = undefined;
+
+/**
+ * Small Photo URL
+ * @member {String} SmallPhotoURL
+ */
+User.prototype['SmallPhotoURL'] = undefined;
+
+/**
+ * The time day starts
+ * @member {String} StartOfDay
+ */
+User.prototype['StartOfDay'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} TaxnexusAccount
+ */
+User.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * Tenant ID associated with this user
+ * @member {String} TenantID
+ */
+User.prototype['TenantID'] = undefined;
+
+/**
+ * @member {Array.} TenantUsers
+ */
+User.prototype['TenantUsers'] = undefined;
+
+/**
+ * Time Zone
+ * @member {String} TimeZone
+ */
+User.prototype['TimeZone'] = undefined;
+
+/**
+ * Title
+ * @member {String} Title
+ */
+User.prototype['Title'] = undefined;
+
+/**
+ * Role
+ * @member {String} UserRoleID
+ */
+User.prototype['UserRoleID'] = undefined;
+
+/**
+ * @member {Array.} UserRoles
+ */
+User.prototype['UserRoles'] = undefined;
+
+/**
+ * User Type
+ * @member {String} UserType
+ */
+User.prototype['UserType'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+User.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default User;
+
diff --git a/client/devops/src/model/UserRequest.js b/client/devops/src/model/UserRequest.js
new file mode 100644
index 0000000..6b98e3c
--- /dev/null
+++ b/client/devops/src/model/UserRequest.js
@@ -0,0 +1,72 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import User from './User';
+
+/**
+ * The UserRequest model module.
+ * @module model/UserRequest
+ * @version 0.0.2
+ */
+class UserRequest {
+ /**
+ * Constructs a new UserRequest
.
+ * @alias module:model/UserRequest
+ */
+ constructor() {
+
+ UserRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserRequest} obj Optional instance to populate.
+ * @return {module:model/UserRequest} The populated UserRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [User]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+UserRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default UserRequest;
+
diff --git a/client/devops/src/model/UserResponse.js b/client/devops/src/model/UserResponse.js
new file mode 100644
index 0000000..7813016
--- /dev/null
+++ b/client/devops/src/model/UserResponse.js
@@ -0,0 +1,82 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import User from './User';
+
+/**
+ * The UserResponse model module.
+ * @module model/UserResponse
+ * @version 0.0.2
+ */
+class UserResponse {
+ /**
+ * Constructs a new UserResponse
.
+ * An array of Print-Ready ingest Objects
+ * @alias module:model/UserResponse
+ */
+ constructor() {
+
+ UserResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserResponse} obj Optional instance to populate.
+ * @return {module:model/UserResponse} The populated UserResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [User]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+UserResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+UserResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default UserResponse;
+
diff --git a/client/devops/src/model/UserRole.js b/client/devops/src/model/UserRole.js
new file mode 100644
index 0000000..43de432
--- /dev/null
+++ b/client/devops/src/model/UserRole.js
@@ -0,0 +1,181 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The UserRole model module.
+ * @module model/UserRole
+ * @version 0.0.2
+ */
+class UserRole {
+ /**
+ * Constructs a new UserRole
.
+ * Relationship object that connects user to a role
+ * @alias module:model/UserRole
+ */
+ constructor() {
+
+ UserRole.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserRole
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserRole} obj Optional instance to populate.
+ * @return {module:model/UserRole} The populated UserRole
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserRole();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0RoleID')) {
+ obj['Auth0RoleID'] = ApiClient.convertToType(data['Auth0RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('Auth0UserID')) {
+ obj['Auth0UserID'] = ApiClient.convertToType(data['Auth0UserID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyName')) {
+ obj['CompanyName'] = ApiClient.convertToType(data['CompanyName'], 'String');
+ }
+ if (data.hasOwnProperty('ContactID')) {
+ obj['ContactID'] = ApiClient.convertToType(data['ContactID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleDescription')) {
+ obj['RoleDescription'] = ApiClient.convertToType(data['RoleDescription'], 'String');
+ }
+ if (data.hasOwnProperty('RoleID')) {
+ obj['RoleID'] = ApiClient.convertToType(data['RoleID'], 'String');
+ }
+ if (data.hasOwnProperty('RoleName')) {
+ obj['RoleName'] = ApiClient.convertToType(data['RoleName'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ if (data.hasOwnProperty('UserEmail')) {
+ obj['UserEmail'] = ApiClient.convertToType(data['UserEmail'], 'String');
+ }
+ if (data.hasOwnProperty('UserFullName')) {
+ obj['UserFullName'] = ApiClient.convertToType(data['UserFullName'], 'String');
+ }
+ if (data.hasOwnProperty('UserID')) {
+ obj['UserID'] = ApiClient.convertToType(data['UserID'], 'String');
+ }
+ if (data.hasOwnProperty('Username')) {
+ obj['Username'] = ApiClient.convertToType(data['Username'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account Id
+ * @member {String} AccountID
+ */
+UserRole.prototype['AccountID'] = undefined;
+
+/**
+ * Linked role ID
+ * @member {String} Auth0RoleID
+ */
+UserRole.prototype['Auth0RoleID'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} Auth0UserID
+ */
+UserRole.prototype['Auth0UserID'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} CompanyName
+ */
+UserRole.prototype['CompanyName'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} ContactID
+ */
+UserRole.prototype['ContactID'] = undefined;
+
+/**
+ * Role description
+ * @member {String} RoleDescription
+ */
+UserRole.prototype['RoleDescription'] = undefined;
+
+/**
+ * The Role ID
+ * @member {String} RoleID
+ */
+UserRole.prototype['RoleID'] = undefined;
+
+/**
+ * Role Name
+ * @member {String} RoleName
+ */
+UserRole.prototype['RoleName'] = undefined;
+
+/**
+ * Taxnexus Account Number
+ * @member {String} TaxnexusAccount
+ */
+UserRole.prototype['TaxnexusAccount'] = undefined;
+
+/**
+ * User Email Address
+ * @member {String} UserEmail
+ */
+UserRole.prototype['UserEmail'] = undefined;
+
+/**
+ * User Full Name
+ * @member {String} UserFullName
+ */
+UserRole.prototype['UserFullName'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} UserID
+ */
+UserRole.prototype['UserID'] = undefined;
+
+/**
+ * Username
+ * @member {String} Username
+ */
+UserRole.prototype['Username'] = undefined;
+
+
+
+
+
+
+export default UserRole;
+
diff --git a/client/devops/test/api/ClusterApi.spec.js b/client/devops/test/api/ClusterApi.spec.js
new file mode 100644
index 0000000..85c1cb8
--- /dev/null
+++ b/client/devops/test/api/ClusterApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.ClusterApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClusterApi', function() {
+ describe('getCluster', function() {
+ it('should call getCluster successfully', function(done) {
+ //uncomment below and update the code to test getCluster
+ //instance.getCluster(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getClusters', function() {
+ it('should call getClusters successfully', function(done) {
+ //uncomment below and update the code to test getClusters
+ //instance.getClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getClustersObservable', function() {
+ it('should call getClustersObservable successfully', function(done) {
+ //uncomment below and update the code to test getClustersObservable
+ //instance.getClustersObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postClusters', function() {
+ it('should call postClusters successfully', function(done) {
+ //uncomment below and update the code to test postClusters
+ //instance.postClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putClusters', function() {
+ it('should call putClusters successfully', function(done) {
+ //uncomment below and update the code to test putClusters
+ //instance.putClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/api/CorsApi.spec.js b/client/devops/test/api/CorsApi.spec.js
new file mode 100644
index 0000000..429abba
--- /dev/null
+++ b/client/devops/test/api/CorsApi.spec.js
@@ -0,0 +1,153 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.CorsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('CorsApi', function() {
+ describe('clusterOptions', function() {
+ it('should call clusterOptions successfully', function(done) {
+ //uncomment below and update the code to test clusterOptions
+ //instance.clusterOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('clustersOptions', function() {
+ it('should call clustersOptions successfully', function(done) {
+ //uncomment below and update the code to test clustersOptions
+ //instance.clustersOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('databaseOptions', function() {
+ it('should call databaseOptions successfully', function(done) {
+ //uncomment below and update the code to test databaseOptions
+ //instance.databaseOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('databasesOptions', function() {
+ it('should call databasesOptions successfully', function(done) {
+ //uncomment below and update the code to test databasesOptions
+ //instance.databasesOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('templateOptions', function() {
+ it('should call templateOptions successfully', function(done) {
+ //uncomment below and update the code to test templateOptions
+ //instance.templateOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('templatesOptions', function() {
+ it('should call templatesOptions successfully', function(done) {
+ //uncomment below and update the code to test templatesOptions
+ //instance.templatesOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('tenantOptions', function() {
+ it('should call tenantOptions successfully', function(done) {
+ //uncomment below and update the code to test tenantOptions
+ //instance.tenantOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('tenantsOptions', function() {
+ it('should call tenantsOptions successfully', function(done) {
+ //uncomment below and update the code to test tenantsOptions
+ //instance.tenantsOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('userOptions', function() {
+ it('should call userOptions successfully', function(done) {
+ //uncomment below and update the code to test userOptions
+ //instance.userOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('usersOptions', function() {
+ it('should call usersOptions successfully', function(done) {
+ //uncomment below and update the code to test usersOptions
+ //instance.usersOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/api/DatabaseApi.spec.js b/client/devops/test/api/DatabaseApi.spec.js
new file mode 100644
index 0000000..c888f51
--- /dev/null
+++ b/client/devops/test/api/DatabaseApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.DatabaseApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabaseApi', function() {
+ describe('getDatabase', function() {
+ it('should call getDatabase successfully', function(done) {
+ //uncomment below and update the code to test getDatabase
+ //instance.getDatabase(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getDatabases', function() {
+ it('should call getDatabases successfully', function(done) {
+ //uncomment below and update the code to test getDatabases
+ //instance.getDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getDatabasesObservable', function() {
+ it('should call getDatabasesObservable successfully', function(done) {
+ //uncomment below and update the code to test getDatabasesObservable
+ //instance.getDatabasesObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postDatabases', function() {
+ it('should call postDatabases successfully', function(done) {
+ //uncomment below and update the code to test postDatabases
+ //instance.postDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putDatabases', function() {
+ it('should call putDatabases successfully', function(done) {
+ //uncomment below and update the code to test putDatabases
+ //instance.putDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/api/TemplateApi.spec.js b/client/devops/test/api/TemplateApi.spec.js
new file mode 100644
index 0000000..cb2824b
--- /dev/null
+++ b/client/devops/test/api/TemplateApi.spec.js
@@ -0,0 +1,93 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TemplateApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TemplateApi', function() {
+ describe('getTemplate', function() {
+ it('should call getTemplate successfully', function(done) {
+ //uncomment below and update the code to test getTemplate
+ //instance.getTemplate(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getTemplates', function() {
+ it('should call getTemplates successfully', function(done) {
+ //uncomment below and update the code to test getTemplates
+ //instance.getTemplates(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getTemplatesObservable', function() {
+ it('should call getTemplatesObservable successfully', function(done) {
+ //uncomment below and update the code to test getTemplatesObservable
+ //instance.getTemplatesObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postTemplates', function() {
+ it('should call postTemplates successfully', function(done) {
+ //uncomment below and update the code to test postTemplates
+ //instance.postTemplates(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/api/TenantApi.spec.js b/client/devops/test/api/TenantApi.spec.js
new file mode 100644
index 0000000..28ea9a3
--- /dev/null
+++ b/client/devops/test/api/TenantApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TenantApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantApi', function() {
+ describe('getTenant', function() {
+ it('should call getTenant successfully', function(done) {
+ //uncomment below and update the code to test getTenant
+ //instance.getTenant(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getTenants', function() {
+ it('should call getTenants successfully', function(done) {
+ //uncomment below and update the code to test getTenants
+ //instance.getTenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getTenantsObservable', function() {
+ it('should call getTenantsObservable successfully', function(done) {
+ //uncomment below and update the code to test getTenantsObservable
+ //instance.getTenantsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postTenants', function() {
+ it('should call postTenants successfully', function(done) {
+ //uncomment below and update the code to test postTenants
+ //instance.postTenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putTenants', function() {
+ it('should call putTenants successfully', function(done) {
+ //uncomment below and update the code to test putTenants
+ //instance.putTenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/api/UserApi.spec.js b/client/devops/test/api/UserApi.spec.js
new file mode 100644
index 0000000..afdfe00
--- /dev/null
+++ b/client/devops/test/api/UserApi.spec.js
@@ -0,0 +1,103 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.UserApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserApi', function() {
+ describe('getUser', function() {
+ it('should call getUser successfully', function(done) {
+ //uncomment below and update the code to test getUser
+ //instance.getUser(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getUsers', function() {
+ it('should call getUsers successfully', function(done) {
+ //uncomment below and update the code to test getUsers
+ //instance.getUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getUsersObservable', function() {
+ it('should call getUsersObservable successfully', function(done) {
+ //uncomment below and update the code to test getUsersObservable
+ //instance.getUsersObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postUsers', function() {
+ it('should call postUsers successfully', function(done) {
+ //uncomment below and update the code to test postUsers
+ //instance.postUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putUsers', function() {
+ it('should call putUsers successfully', function(done) {
+ //uncomment below and update the code to test putUsers
+ //instance.putUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/devops/test/model/Address.spec.js b/client/devops/test/model/Address.spec.js
new file mode 100644
index 0000000..10a024d
--- /dev/null
+++ b/client/devops/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new Devops.Address();
+ //expect(instance).to.be.a(Devops.Address);
+ });
+
+ it('should have the property city (base name: "City")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "Country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countryCode (base name: "CountryCode")', function() {
+ // uncomment below and update the code to test the property countryCode
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalCode (base name: "PostalCode")', function() {
+ // uncomment below and update the code to test the property postalCode
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "State")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stateCode (base name: "StateCode")', function() {
+ // uncomment below and update the code to test the property stateCode
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "Street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new Devops.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Cluster.spec.js b/client/devops/test/model/Cluster.spec.js
new file mode 100644
index 0000000..234d194
--- /dev/null
+++ b/client/devops/test/model/Cluster.spec.js
@@ -0,0 +1,161 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Cluster();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Cluster', function() {
+ it('should create an instance of Cluster', function() {
+ // uncomment below and update the code to test Cluster
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be.a(Devops.Cluster);
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "Environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property gateway (base name: "Gateway")', function() {
+ // uncomment below and update the code to test the property gateway
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property iPAddress (base name: "IPAddress")', function() {
+ // uncomment below and update the code to test the property iPAddress
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property subnet (base name: "Subnet")', function() {
+ // uncomment below and update the code to test the property subnet
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property zone (base name: "Zone")', function() {
+ // uncomment below and update the code to test the property zone
+ //var instance = new Devops.Cluster();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/ClusterRequest.spec.js b/client/devops/test/model/ClusterRequest.spec.js
new file mode 100644
index 0000000..c5617e6
--- /dev/null
+++ b/client/devops/test/model/ClusterRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.ClusterRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClusterRequest', function() {
+ it('should create an instance of ClusterRequest', function() {
+ // uncomment below and update the code to test ClusterRequest
+ //var instance = new Devops.ClusterRequest();
+ //expect(instance).to.be.a(Devops.ClusterRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.ClusterRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/ClusterResponse.spec.js b/client/devops/test/model/ClusterResponse.spec.js
new file mode 100644
index 0000000..b8d63f6
--- /dev/null
+++ b/client/devops/test/model/ClusterResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.ClusterResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClusterResponse', function() {
+ it('should create an instance of ClusterResponse', function() {
+ // uncomment below and update the code to test ClusterResponse
+ //var instance = new Devops.ClusterResponse();
+ //expect(instance).to.be.a(Devops.ClusterResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.ClusterResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.ClusterResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Database.spec.js b/client/devops/test/model/Database.spec.js
new file mode 100644
index 0000000..c32fabe
--- /dev/null
+++ b/client/devops/test/model/Database.spec.js
@@ -0,0 +1,131 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Database();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Database', function() {
+ it('should create an instance of Database', function() {
+ // uncomment below and update the code to test Database
+ //var instance = new Devops.Database();
+ //expect(instance).to.be.a(Devops.Database);
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clusterID (base name: "ClusterID")', function() {
+ // uncomment below and update the code to test the property clusterID
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property DSN (base name: "DSN")', function() {
+ // uncomment below and update the code to test the property DSN
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databaseName (base name: "DatabaseName")', function() {
+ // uncomment below and update the code to test the property databaseName
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Devops.Database();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/DatabaseRequest.spec.js b/client/devops/test/model/DatabaseRequest.spec.js
new file mode 100644
index 0000000..da39684
--- /dev/null
+++ b/client/devops/test/model/DatabaseRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.DatabaseRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabaseRequest', function() {
+ it('should create an instance of DatabaseRequest', function() {
+ // uncomment below and update the code to test DatabaseRequest
+ //var instance = new Devops.DatabaseRequest();
+ //expect(instance).to.be.a(Devops.DatabaseRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.DatabaseRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/DatabaseResponse.spec.js b/client/devops/test/model/DatabaseResponse.spec.js
new file mode 100644
index 0000000..7140cc9
--- /dev/null
+++ b/client/devops/test/model/DatabaseResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.DatabaseResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabaseResponse', function() {
+ it('should create an instance of DatabaseResponse', function() {
+ // uncomment below and update the code to test DatabaseResponse
+ //var instance = new Devops.DatabaseResponse();
+ //expect(instance).to.be.a(Devops.DatabaseResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.DatabaseResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.DatabaseResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/DeleteResponse.spec.js b/client/devops/test/model/DeleteResponse.spec.js
new file mode 100644
index 0000000..a017524
--- /dev/null
+++ b/client/devops/test/model/DeleteResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.DeleteResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DeleteResponse', function() {
+ it('should create an instance of DeleteResponse', function() {
+ // uncomment below and update the code to test DeleteResponse
+ //var instance = new Devops.DeleteResponse();
+ //expect(instance).to.be.a(Devops.DeleteResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Error.spec.js b/client/devops/test/model/Error.spec.js
new file mode 100644
index 0000000..7aa6d78
--- /dev/null
+++ b/client/devops/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Devops.Error();
+ //expect(instance).to.be.a(Devops.Error);
+ });
+
+ it('should have the property code (base name: "code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Devops.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Devops.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Devops.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Message.spec.js b/client/devops/test/model/Message.spec.js
new file mode 100644
index 0000000..ec36665
--- /dev/null
+++ b/client/devops/test/model/Message.spec.js
@@ -0,0 +1,77 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Message();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Message', function() {
+ it('should create an instance of Message', function() {
+ // uncomment below and update the code to test Message
+ //var instance = new Devops.Message();
+ //expect(instance).to.be.a(Devops.Message);
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Devops.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Devops.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Devops.Message();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Pagination.spec.js b/client/devops/test/model/Pagination.spec.js
new file mode 100644
index 0000000..fbb9fc2
--- /dev/null
+++ b/client/devops/test/model/Pagination.spec.js
@@ -0,0 +1,83 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Pagination();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Pagination', function() {
+ it('should create an instance of Pagination', function() {
+ // uncomment below and update the code to test Pagination
+ //var instance = new Devops.Pagination();
+ //expect(instance).to.be.a(Devops.Pagination);
+ });
+
+ it('should have the property limit (base name: "Limit")', function() {
+ // uncomment below and update the code to test the property limit
+ //var instance = new Devops.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pOffset (base name: "POffset")', function() {
+ // uncomment below and update the code to test the property pOffset
+ //var instance = new Devops.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pageSize (base name: "PageSize")', function() {
+ // uncomment below and update the code to test the property pageSize
+ //var instance = new Devops.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property setSize (base name: "SetSize")', function() {
+ // uncomment below and update the code to test the property setSize
+ //var instance = new Devops.Pagination();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/RequestMeta.spec.js b/client/devops/test/model/RequestMeta.spec.js
new file mode 100644
index 0000000..67f8c44
--- /dev/null
+++ b/client/devops/test/model/RequestMeta.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.RequestMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RequestMeta', function() {
+ it('should create an instance of RequestMeta', function() {
+ // uncomment below and update the code to test RequestMeta
+ //var instance = new Devops.RequestMeta();
+ //expect(instance).to.be.a(Devops.RequestMeta);
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Devops.RequestMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/ResponseMeta.spec.js b/client/devops/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..934c2f3
--- /dev/null
+++ b/client/devops/test/model/ResponseMeta.spec.js
@@ -0,0 +1,131 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be.a(Devops.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagination (base name: "Pagination")', function() {
+ // uncomment below and update the code to test the property pagination
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Devops.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Role.spec.js b/client/devops/test/model/Role.spec.js
new file mode 100644
index 0000000..c7c0044
--- /dev/null
+++ b/client/devops/test/model/Role.spec.js
@@ -0,0 +1,113 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Role();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Role', function() {
+ it('should create an instance of Role', function() {
+ // uncomment below and update the code to test Role
+ //var instance = new Devops.Role();
+ //expect(instance).to.be.a(Devops.Role);
+ });
+
+ it('should have the property auth0RoleID (base name: "Auth0RoleID")', function() {
+ // uncomment below and update the code to test the property auth0RoleID
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleName (base name: "RoleName")', function() {
+ // uncomment below and update the code to test the property roleName
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.Role();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/RoleRequest.spec.js b/client/devops/test/model/RoleRequest.spec.js
new file mode 100644
index 0000000..e304930
--- /dev/null
+++ b/client/devops/test/model/RoleRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.RoleRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RoleRequest', function() {
+ it('should create an instance of RoleRequest', function() {
+ // uncomment below and update the code to test RoleRequest
+ //var instance = new Devops.RoleRequest();
+ //expect(instance).to.be.a(Devops.RoleRequest);
+ });
+
+ it('should have the property date (base name: "Date")', function() {
+ // uncomment below and update the code to test the property date
+ //var instance = new Devops.RoleRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/RoleResponse.spec.js b/client/devops/test/model/RoleResponse.spec.js
new file mode 100644
index 0000000..91eda72
--- /dev/null
+++ b/client/devops/test/model/RoleResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.RoleResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RoleResponse', function() {
+ it('should create an instance of RoleResponse', function() {
+ // uncomment below and update the code to test RoleResponse
+ //var instance = new Devops.RoleResponse();
+ //expect(instance).to.be.a(Devops.RoleResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.RoleResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.RoleResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Template.spec.js b/client/devops/test/model/Template.spec.js
new file mode 100644
index 0000000..f5cb093
--- /dev/null
+++ b/client/devops/test/model/Template.spec.js
@@ -0,0 +1,155 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Template();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Template', function() {
+ it('should create an instance of Template', function() {
+ // uncomment below and update the code to test Template
+ //var instance = new Devops.Template();
+ //expect(instance).to.be.a(Devops.Template);
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property HTML (base name: "HTML")', function() {
+ // uncomment below and update the code to test the property HTML
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isActive (base name: "IsActive")', function() {
+ // uncomment below and update the code to test the property isActive
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isMaster (base name: "IsMaster")', function() {
+ // uncomment below and update the code to test the property isMaster
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property objectType (base name: "ObjectType")', function() {
+ // uncomment below and update the code to test the property objectType
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recordTypeName (base name: "RecordTypeName")', function() {
+ // uncomment below and update the code to test the property recordTypeName
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property URL (base name: "URL")', function() {
+ // uncomment below and update the code to test the property URL
+ //var instance = new Devops.Template();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/TemplateRequest.spec.js b/client/devops/test/model/TemplateRequest.spec.js
new file mode 100644
index 0000000..ae96e3e
--- /dev/null
+++ b/client/devops/test/model/TemplateRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TemplateRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TemplateRequest', function() {
+ it('should create an instance of TemplateRequest', function() {
+ // uncomment below and update the code to test TemplateRequest
+ //var instance = new Devops.TemplateRequest();
+ //expect(instance).to.be.a(Devops.TemplateRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.TemplateRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/TemplateResponse.spec.js b/client/devops/test/model/TemplateResponse.spec.js
new file mode 100644
index 0000000..e12026b
--- /dev/null
+++ b/client/devops/test/model/TemplateResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TemplateResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TemplateResponse', function() {
+ it('should create an instance of TemplateResponse', function() {
+ // uncomment below and update the code to test TemplateResponse
+ //var instance = new Devops.TemplateResponse();
+ //expect(instance).to.be.a(Devops.TemplateResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.TemplateResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.TemplateResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/Tenant.spec.js b/client/devops/test/model/Tenant.spec.js
new file mode 100644
index 0000000..3adf6f3
--- /dev/null
+++ b/client/devops/test/model/Tenant.spec.js
@@ -0,0 +1,143 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.Tenant();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Tenant', function() {
+ it('should create an instance of Tenant', function() {
+ // uncomment below and update the code to test Tenant
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be.a(Devops.Tenant);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "Active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databases (base name: "Databases")', function() {
+ // uncomment below and update the code to test the property databases
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roles (base name: "Roles")', function() {
+ // uncomment below and update the code to test the property roles
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantName (base name: "TenantName")', function() {
+ // uncomment below and update the code to test the property tenantName
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantUsers (base name: "TenantUsers")', function() {
+ // uncomment below and update the code to test the property tenantUsers
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property version (base name: "Version")', function() {
+ // uncomment below and update the code to test the property version
+ //var instance = new Devops.Tenant();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/TenantRequest.spec.js b/client/devops/test/model/TenantRequest.spec.js
new file mode 100644
index 0000000..ab409bb
--- /dev/null
+++ b/client/devops/test/model/TenantRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TenantRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantRequest', function() {
+ it('should create an instance of TenantRequest', function() {
+ // uncomment below and update the code to test TenantRequest
+ //var instance = new Devops.TenantRequest();
+ //expect(instance).to.be.a(Devops.TenantRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.TenantRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/TenantResponse.spec.js b/client/devops/test/model/TenantResponse.spec.js
new file mode 100644
index 0000000..fc59383
--- /dev/null
+++ b/client/devops/test/model/TenantResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TenantResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantResponse', function() {
+ it('should create an instance of TenantResponse', function() {
+ // uncomment below and update the code to test TenantResponse
+ //var instance = new Devops.TenantResponse();
+ //expect(instance).to.be.a(Devops.TenantResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.TenantResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.TenantResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/TenantUser.spec.js b/client/devops/test/model/TenantUser.spec.js
new file mode 100644
index 0000000..fcf92b8
--- /dev/null
+++ b/client/devops/test/model/TenantUser.spec.js
@@ -0,0 +1,155 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.TenantUser();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantUser', function() {
+ it('should create an instance of TenantUser', function() {
+ // uncomment below and update the code to test TenantUser
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be.a(Devops.TenantUser);
+ });
+
+ it('should have the property accessLevel (base name: "AccessLevel")', function() {
+ // uncomment below and update the code to test the property accessLevel
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantActive (base name: "TenantActive")', function() {
+ // uncomment below and update the code to test the property tenantActive
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantName (base name: "TenantName")', function() {
+ // uncomment below and update the code to test the property tenantName
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantStatus (base name: "TenantStatus")', function() {
+ // uncomment below and update the code to test the property tenantStatus
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantType (base name: "TenantType")', function() {
+ // uncomment below and update the code to test the property tenantType
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantVersion (base name: "TenantVersion")', function() {
+ // uncomment below and update the code to test the property tenantVersion
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Devops.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/User.spec.js b/client/devops/test/model/User.spec.js
new file mode 100644
index 0000000..1dcc101
--- /dev/null
+++ b/client/devops/test/model/User.spec.js
@@ -0,0 +1,407 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.User();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('User', function() {
+ it('should create an instance of User', function() {
+ // uncomment below and update the code to test User
+ //var instance = new Devops.User();
+ //expect(instance).to.be.a(Devops.User);
+ });
+
+ it('should have the property aPIKey (base name: "APIKey")', function() {
+ // uncomment below and update the code to test the property aPIKey
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property aboutMe (base name: "AboutMe")', function() {
+ // uncomment below and update the code to test the property aboutMe
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property address (base name: "Address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property alias (base name: "Alias")', function() {
+ // uncomment below and update the code to test the property alias
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property communityNickname (base name: "CommunityNickname")', function() {
+ // uncomment below and update the code to test the property communityNickname
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property delegatedApproverID (base name: "DelegatedApproverID")', function() {
+ // uncomment below and update the code to test the property delegatedApproverID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "Department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property division (base name: "Division")', function() {
+ // uncomment below and update the code to test the property division
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "Email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property employeeNumber (base name: "EmployeeNumber")', function() {
+ // uncomment below and update the code to test the property employeeNumber
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endOfDay (base name: "EndOfDay")', function() {
+ // uncomment below and update the code to test the property endOfDay
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "Environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property extension (base name: "Extension")', function() {
+ // uncomment below and update the code to test the property extension
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fabricAPIKey (base name: "FabricAPIKey")', function() {
+ // uncomment below and update the code to test the property fabricAPIKey
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "Fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstName (base name: "FirstName")', function() {
+ // uncomment below and update the code to test the property firstName
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property forecastEnabled (base name: "ForecastEnabled")', function() {
+ // uncomment below and update the code to test the property forecastEnabled
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fullPhotoURL (base name: "FullPhotoURL")', function() {
+ // uncomment below and update the code to test the property fullPhotoURL
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isActive (base name: "IsActive")', function() {
+ // uncomment below and update the code to test the property isActive
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isPortalEnabled (base name: "IsPortalEnabled")', function() {
+ // uncomment below and update the code to test the property isPortalEnabled
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isProphilePhotoActive (base name: "IsProphilePhotoActive")', function() {
+ // uncomment below and update the code to test the property isProphilePhotoActive
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isSystemControlled (base name: "IsSystemControlled")', function() {
+ // uncomment below and update the code to test the property isSystemControlled
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastIP (base name: "LastIP")', function() {
+ // uncomment below and update the code to test the property lastIP
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastLogin (base name: "LastLogin")', function() {
+ // uncomment below and update the code to test the property lastLogin
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastName (base name: "LastName")', function() {
+ // uncomment below and update the code to test the property lastName
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property loginCount (base name: "LoginCount")', function() {
+ // uncomment below and update the code to test the property loginCount
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property managerID (base name: "ManagerID")', function() {
+ // uncomment below and update the code to test the property managerID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilePhone (base name: "MobilePhone")', function() {
+ // uncomment below and update the code to test the property mobilePhone
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property outOfOfficeMessage (base name: "OutOfOfficeMessage")', function() {
+ // uncomment below and update the code to test the property outOfOfficeMessage
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "Phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property portalRole (base name: "PortalRole")', function() {
+ // uncomment below and update the code to test the property portalRole
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property profileID (base name: "ProfileID")', function() {
+ // uncomment below and update the code to test the property profileID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminEmails (base name: "ReceivesAdminEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminEmails
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesAdminInfoEmails (base name: "ReceivesAdminInfoEmails")', function() {
+ // uncomment below and update the code to test the property receivesAdminInfoEmails
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderEmail (base name: "SenderEmail")', function() {
+ // uncomment below and update the code to test the property senderEmail
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderName (base name: "SenderName")', function() {
+ // uncomment below and update the code to test the property senderName
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property signature (base name: "Signature")', function() {
+ // uncomment below and update the code to test the property signature
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property smallPhotoURL (base name: "SmallPhotoURL")', function() {
+ // uncomment below and update the code to test the property smallPhotoURL
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startOfDay (base name: "StartOfDay")', function() {
+ // uncomment below and update the code to test the property startOfDay
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantUsers (base name: "TenantUsers")', function() {
+ // uncomment below and update the code to test the property tenantUsers
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property timeZone (base name: "TimeZone")', function() {
+ // uncomment below and update the code to test the property timeZone
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoleID (base name: "UserRoleID")', function() {
+ // uncomment below and update the code to test the property userRoleID
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userRoles (base name: "UserRoles")', function() {
+ // uncomment below and update the code to test the property userRoles
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userType (base name: "UserType")', function() {
+ // uncomment below and update the code to test the property userType
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Devops.User();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/UserRequest.spec.js b/client/devops/test/model/UserRequest.spec.js
new file mode 100644
index 0000000..3176d9d
--- /dev/null
+++ b/client/devops/test/model/UserRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.UserRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserRequest', function() {
+ it('should create an instance of UserRequest', function() {
+ // uncomment below and update the code to test UserRequest
+ //var instance = new Devops.UserRequest();
+ //expect(instance).to.be.a(Devops.UserRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.UserRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/UserResponse.spec.js b/client/devops/test/model/UserResponse.spec.js
new file mode 100644
index 0000000..8625226
--- /dev/null
+++ b/client/devops/test/model/UserResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.UserResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserResponse', function() {
+ it('should create an instance of UserResponse', function() {
+ // uncomment below and update the code to test UserResponse
+ //var instance = new Devops.UserResponse();
+ //expect(instance).to.be.a(Devops.UserResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Devops.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Devops.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/devops/test/model/UserRole.spec.js b/client/devops/test/model/UserRole.spec.js
new file mode 100644
index 0000000..97add63
--- /dev/null
+++ b/client/devops/test/model/UserRole.spec.js
@@ -0,0 +1,137 @@
+/**
+ * devops
+ * System Operations Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Devops);
+ }
+}(this, function(expect, Devops) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Devops.UserRole();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserRole', function() {
+ it('should create an instance of UserRole', function() {
+ // uncomment below and update the code to test UserRole
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be.a(Devops.UserRole);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0RoleID (base name: "Auth0RoleID")', function() {
+ // uncomment below and update the code to test the property auth0RoleID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0UserID (base name: "Auth0UserID")', function() {
+ // uncomment below and update the code to test the property auth0UserID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyName (base name: "CompanyName")', function() {
+ // uncomment below and update the code to test the property companyName
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactID (base name: "ContactID")', function() {
+ // uncomment below and update the code to test the property contactID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleDescription (base name: "RoleDescription")', function() {
+ // uncomment below and update the code to test the property roleDescription
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleID (base name: "RoleID")', function() {
+ // uncomment below and update the code to test the property roleID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleName (base name: "RoleName")', function() {
+ // uncomment below and update the code to test the property roleName
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userEmail (base name: "UserEmail")', function() {
+ // uncomment below and update the code to test the property userEmail
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userFullName (base name: "UserFullName")', function() {
+ // uncomment below and update the code to test the property userFullName
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userID (base name: "UserID")', function() {
+ // uncomment below and update the code to test the property userID
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "Username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new Devops.UserRole();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/.babelrc b/client/research/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/research/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/research/.gitignore b/client/research/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/research/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/research/.openapi-generator-ignore b/client/research/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/research/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/research/.openapi-generator/FILES b/client/research/.openapi-generator/FILES
new file mode 100644
index 0000000..57abd84
--- /dev/null
+++ b/client/research/.openapi-generator/FILES
@@ -0,0 +1,73 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Address.md
+docs/CompanyProduct.md
+docs/CorsApi.md
+docs/DeleteResponse.md
+docs/Error.md
+docs/Factor.md
+docs/Industry.md
+docs/IndustryApi.md
+docs/IndustryRequest.md
+docs/IndustryResponse.md
+docs/InvalidError.md
+docs/InvalidErrorAllOf.md
+docs/Message.md
+docs/Observation.md
+docs/Pagination.md
+docs/RequestMeta.md
+docs/ResponseMeta.md
+docs/Topic.md
+docs/TopicApi.md
+docs/TopicRequest.md
+docs/TopicResponse.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/CorsApi.js
+src/api/IndustryApi.js
+src/api/TopicApi.js
+src/index.js
+src/model/Address.js
+src/model/CompanyProduct.js
+src/model/DeleteResponse.js
+src/model/Error.js
+src/model/Factor.js
+src/model/Industry.js
+src/model/IndustryRequest.js
+src/model/IndustryResponse.js
+src/model/InvalidError.js
+src/model/InvalidErrorAllOf.js
+src/model/Message.js
+src/model/Observation.js
+src/model/Pagination.js
+src/model/RequestMeta.js
+src/model/ResponseMeta.js
+src/model/Topic.js
+src/model/TopicRequest.js
+src/model/TopicResponse.js
+test/api/CorsApi.spec.js
+test/api/IndustryApi.spec.js
+test/api/TopicApi.spec.js
+test/model/Address.spec.js
+test/model/CompanyProduct.spec.js
+test/model/DeleteResponse.spec.js
+test/model/Error.spec.js
+test/model/Factor.spec.js
+test/model/Industry.spec.js
+test/model/IndustryRequest.spec.js
+test/model/IndustryResponse.spec.js
+test/model/InvalidError.spec.js
+test/model/InvalidErrorAllOf.spec.js
+test/model/Message.spec.js
+test/model/Observation.spec.js
+test/model/Pagination.spec.js
+test/model/RequestMeta.spec.js
+test/model/ResponseMeta.spec.js
+test/model/Topic.spec.js
+test/model/TopicRequest.spec.js
+test/model/TopicResponse.spec.js
diff --git a/client/research/.openapi-generator/VERSION b/client/research/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/research/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/research/.travis.yml b/client/research/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/research/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/research/README.md b/client/research/README.md
new file mode 100644
index 0000000..e2a8aab
--- /dev/null
+++ b/client/research/README.md
@@ -0,0 +1,166 @@
+# research
+
+Research - JavaScript client for research
+Customer Information Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install research --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your research from, and run:
+
+```shell
+npm link /path/to/
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+#### git
+
+If the library is hosted at a git repository, e.g.https://github.com/GIT_USER_ID/GIT_REPO_ID
+then install it via:
+
+```shell
+ npm install GIT_USER_ID/GIT_REPO_ID --save
+```
+
+### For browser
+
+The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
+the above steps with Node.js and installing browserify with `npm install -g browserify`,
+perform the following (assuming *main.js* is your entry file):
+
+```shell
+browserify main.js > bundle.js
+```
+
+Then include *bundle.js* in the HTML pages.
+
+### Webpack Configuration
+
+Using Webpack you may encounter the following error: "Module not found: Error:
+Cannot resolve module", most certainly you should disable AMD loader. Add/merge
+the following section to your webpack config:
+
+```javascript
+module: {
+ rules: [
+ {
+ parser: {
+ amd: false
+ }
+ }
+ ]
+}
+```
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following JS code:
+
+```javascript
+var Research = require('research');
+
+
+var api = new Research.CorsApi()
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+};
+api.industryObservableOptions(callback);
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://research.vernonkeenan.com:8080/v1*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*Research.CorsApi* | [**industryObservableOptions**](docs/CorsApi.md#industryObservableOptions) | **OPTIONS** /industries/observable |
+*Research.CorsApi* | [**industryOptions**](docs/CorsApi.md#industryOptions) | **OPTIONS** /industries |
+*Research.CorsApi* | [**topicObservableOptions**](docs/CorsApi.md#topicObservableOptions) | **OPTIONS** /topics/observable |
+*Research.CorsApi* | [**topicOptions**](docs/CorsApi.md#topicOptions) | **OPTIONS** /topics |
+*Research.IndustryApi* | [**getIndustries**](docs/IndustryApi.md#getIndustries) | **GET** /industries | Get Industry records
+*Research.IndustryApi* | [**getIndustriesObservable**](docs/IndustryApi.md#getIndustriesObservable) | **GET** /industries/observable | Get Taxnexus Companies in an observable array
+*Research.IndustryApi* | [**postIndustries**](docs/IndustryApi.md#postIndustries) | **POST** /industries | Add new companies
+*Research.TopicApi* | [**getTopics**](docs/TopicApi.md#getTopics) | **GET** /topics | Get Topic records
+*Research.TopicApi* | [**getTopicsObservable**](docs/TopicApi.md#getTopicsObservable) | **GET** /topics/observable | Get Taxnexus Companies in an observable array
+*Research.TopicApi* | [**postTopics**](docs/TopicApi.md#postTopics) | **POST** /topics | Add new companies
+
+
+## Documentation for Models
+
+ - [Research.Address](docs/Address.md)
+ - [Research.CompanyProduct](docs/CompanyProduct.md)
+ - [Research.DeleteResponse](docs/DeleteResponse.md)
+ - [Research.Error](docs/Error.md)
+ - [Research.Factor](docs/Factor.md)
+ - [Research.Industry](docs/Industry.md)
+ - [Research.IndustryRequest](docs/IndustryRequest.md)
+ - [Research.IndustryResponse](docs/IndustryResponse.md)
+ - [Research.InvalidError](docs/InvalidError.md)
+ - [Research.InvalidErrorAllOf](docs/InvalidErrorAllOf.md)
+ - [Research.Message](docs/Message.md)
+ - [Research.Observation](docs/Observation.md)
+ - [Research.Pagination](docs/Pagination.md)
+ - [Research.RequestMeta](docs/RequestMeta.md)
+ - [Research.ResponseMeta](docs/ResponseMeta.md)
+ - [Research.Topic](docs/Topic.md)
+ - [Research.TopicRequest](docs/TopicRequest.md)
+ - [Research.TopicResponse](docs/TopicResponse.md)
+
+
+## Documentation for Authorization
+
+
+
+### ApiKeyAuth
+
+
+- **Type**: API key
+- **API key parameter name**: X-API-Key
+- **Location**: HTTP header
+
diff --git a/client/research/docs/Address.md b/client/research/docs/Address.md
new file mode 100644
index 0000000..7f0ffa9
--- /dev/null
+++ b/client/research/docs/Address.md
@@ -0,0 +1,15 @@
+# Research.Address
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**city** | **String** | City | [optional]
+**country** | **String** | Country full name | [optional]
+**countryCode** | **String** | Country Code | [optional]
+**postalCode** | **String** | Postal Code | [optional]
+**state** | **String** | State full name | [optional]
+**stateCode** | **String** | State Code | [optional]
+**street** | **String** | Street number and name | [optional]
+
+
diff --git a/client/research/docs/CompanyProduct.md b/client/research/docs/CompanyProduct.md
new file mode 100644
index 0000000..1293bd1
--- /dev/null
+++ b/client/research/docs/CompanyProduct.md
@@ -0,0 +1,18 @@
+# Research.CompanyProduct
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**accountID** | **String** | Taxnexus ID of the Company that owns this Product | [optional]
+**description** | **String** | Description of product | [optional]
+**name** | **String** | Product Name | [optional]
+**tagLine** | **String** | TagLine | [optional]
+**URL** | **String** | Website | [optional]
+
+
diff --git a/client/research/docs/CorsApi.md b/client/research/docs/CorsApi.md
new file mode 100644
index 0000000..3c78359
--- /dev/null
+++ b/client/research/docs/CorsApi.md
@@ -0,0 +1,176 @@
+# Research.CorsApi
+
+All URIs are relative to *http://research.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**industryObservableOptions**](CorsApi.md#industryObservableOptions) | **OPTIONS** /industries/observable |
+[**industryOptions**](CorsApi.md#industryOptions) | **OPTIONS** /industries |
+[**topicObservableOptions**](CorsApi.md#topicObservableOptions) | **OPTIONS** /topics/observable |
+[**topicOptions**](CorsApi.md#topicOptions) | **OPTIONS** /topics |
+
+
+
+## industryObservableOptions
+
+> industryObservableOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Research from 'research';
+
+let apiInstance = new Research.CorsApi();
+apiInstance.industryObservableOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## industryOptions
+
+> industryOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Research from 'research';
+
+let apiInstance = new Research.CorsApi();
+apiInstance.industryOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## topicObservableOptions
+
+> topicObservableOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Research from 'research';
+
+let apiInstance = new Research.CorsApi();
+apiInstance.topicObservableOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+
+## topicOptions
+
+> topicOptions()
+
+
+
+CORS support
+
+### Example
+
+```javascript
+import Research from 'research';
+
+let apiInstance = new Research.CorsApi();
+apiInstance.topicOptions((error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully.');
+ }
+});
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
diff --git a/client/research/docs/DeleteResponse.md b/client/research/docs/DeleteResponse.md
new file mode 100644
index 0000000..8aadf9b
--- /dev/null
+++ b/client/research/docs/DeleteResponse.md
@@ -0,0 +1,10 @@
+# Research.DeleteResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Message]**](Message.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/research/docs/Error.md b/client/research/docs/Error.md
new file mode 100644
index 0000000..7909ba6
--- /dev/null
+++ b/client/research/docs/Error.md
@@ -0,0 +1,11 @@
+# Research.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+
+
diff --git a/client/research/docs/Factor.md b/client/research/docs/Factor.md
new file mode 100644
index 0000000..127120d
--- /dev/null
+++ b/client/research/docs/Factor.md
@@ -0,0 +1,18 @@
+# Research.Factor
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Factor Name | [optional]
+**description** | **String** | Topic Description | [optional]
+**siteURL** | **String** | The URL of the corresponding page on the CMS | [optional]
+**topicID** | **String** | The ID of the Topic that owns this Factor | [optional]
+**observations** | [**[Observation]**](Observation.md) | The list of Observations used to analyze this industry | [optional]
+
+
diff --git a/client/research/docs/Industry.md b/client/research/docs/Industry.md
new file mode 100644
index 0000000..ec3a96a
--- /dev/null
+++ b/client/research/docs/Industry.md
@@ -0,0 +1,22 @@
+# Research.Industry
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Industry Name | [optional]
+**description** | **String** | Industry Description | [optional]
+**parentIndustryID** | **String** | The ID of the Parent Industry | [optional]
+**level** | **String** | The hierarchical level of this Industry | [optional]
+**path** | **String** | The full path of this industry, including Parent | [optional]
+**slug** | **String** | The CMS Slug for this Industry | [optional]
+**siteURL** | **String** | The URL of the corresponding page on the CMS | [optional]
+**companies** | **[String]** | The AccountIDs of the Companies in this Industry | [optional]
+**companyProducts** | [**[CompanyProduct]**](CompanyProduct.md) | The list of Products in this industry | [optional]
+
+
diff --git a/client/research/docs/IndustryApi.md b/client/research/docs/IndustryApi.md
new file mode 100644
index 0000000..c82deca
--- /dev/null
+++ b/client/research/docs/IndustryApi.md
@@ -0,0 +1,168 @@
+# Research.IndustryApi
+
+All URIs are relative to *http://research.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getIndustries**](IndustryApi.md#getIndustries) | **GET** /industries | Get Industry records
+[**getIndustriesObservable**](IndustryApi.md#getIndustriesObservable) | **GET** /industries/observable | Get Taxnexus Companies in an observable array
+[**postIndustries**](IndustryApi.md#postIndustries) | **POST** /industries | Add new companies
+
+
+
+## getIndustries
+
+> IndustryResponse getIndustries(opts)
+
+Get Industry records
+
+Retrieve Industry records from the datastore
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.IndustryApi();
+let opts = {
+ 'industryId': "industryId_example" // String | Taxnexus Industry record ID
+};
+apiInstance.getIndustries(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **industryId** | **String**| Taxnexus Industry record ID | [optional]
+
+### Return type
+
+[**IndustryResponse**](IndustryResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getIndustriesObservable
+
+> [Industry] getIndustriesObservable(opts)
+
+Get Taxnexus Companies in an observable array
+
+A list of companies in a simple JSON array
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.IndustryApi();
+let opts = {
+ 'industryId': "industryId_example" // String | Taxnexus Industry record ID
+};
+apiInstance.getIndustriesObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **industryId** | **String**| Taxnexus Industry record ID | [optional]
+
+### Return type
+
+[**[Industry]**](Industry.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postIndustries
+
+> IndustryResponse postIndustries(industryRequest)
+
+Add new companies
+
+Add new companies
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.IndustryApi();
+let industryRequest = new Research.IndustryRequest(); // IndustryRequest | An array of new Industry records
+apiInstance.postIndustries(industryRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **industryRequest** | [**IndustryRequest**](IndustryRequest.md)| An array of new Industry records |
+
+### Return type
+
+[**IndustryResponse**](IndustryResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/research/docs/IndustryRequest.md b/client/research/docs/IndustryRequest.md
new file mode 100644
index 0000000..f645bb9
--- /dev/null
+++ b/client/research/docs/IndustryRequest.md
@@ -0,0 +1,9 @@
+# Research.IndustryRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Industry]**](Industry.md) | | [optional]
+
+
diff --git a/client/research/docs/IndustryResponse.md b/client/research/docs/IndustryResponse.md
new file mode 100644
index 0000000..bee36a8
--- /dev/null
+++ b/client/research/docs/IndustryResponse.md
@@ -0,0 +1,10 @@
+# Research.IndustryResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Industry]**](Industry.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/research/docs/InvalidError.md b/client/research/docs/InvalidError.md
new file mode 100644
index 0000000..7fa6247
--- /dev/null
+++ b/client/research/docs/InvalidError.md
@@ -0,0 +1,12 @@
+# Research.InvalidError
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/research/docs/InvalidErrorAllOf.md b/client/research/docs/InvalidErrorAllOf.md
new file mode 100644
index 0000000..03994bc
--- /dev/null
+++ b/client/research/docs/InvalidErrorAllOf.md
@@ -0,0 +1,9 @@
+# Research.InvalidErrorAllOf
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/research/docs/Message.md b/client/research/docs/Message.md
new file mode 100644
index 0000000..2560086
--- /dev/null
+++ b/client/research/docs/Message.md
@@ -0,0 +1,11 @@
+# Research.Message
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**message** | **String** | | [optional]
+**ref** | **String** | | [optional]
+**status** | **Number** | | [optional]
+
+
diff --git a/client/research/docs/Observation.md b/client/research/docs/Observation.md
new file mode 100644
index 0000000..6fcbbe8
--- /dev/null
+++ b/client/research/docs/Observation.md
@@ -0,0 +1,19 @@
+# Research.Observation
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**factorID** | **String** | The ID of the Factor that owns this Observation | [optional]
+**subjectType** | **Object** | Is the subject a Company or a Product? | [optional]
+**accountID** | **String** | The ID of the Company being analyzed | [optional]
+**companyProductID** | **String** | The ID of the Product being analyzed | [optional]
+**description** | **String** | Notes concerning data collection | [optional]
+**value** | **String** | The data point collected | [optional]
+
+
diff --git a/client/research/docs/Pagination.md b/client/research/docs/Pagination.md
new file mode 100644
index 0000000..fee7220
--- /dev/null
+++ b/client/research/docs/Pagination.md
@@ -0,0 +1,12 @@
+# Research.Pagination
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**limit** | **Number** | | [optional]
+**pagesize** | **Number** | | [optional]
+**poffset** | **Number** | | [optional]
+**setsize** | **Number** | | [optional]
+
+
diff --git a/client/research/docs/RequestMeta.md b/client/research/docs/RequestMeta.md
new file mode 100644
index 0000000..9b6713a
--- /dev/null
+++ b/client/research/docs/RequestMeta.md
@@ -0,0 +1,9 @@
+# Research.RequestMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**taxnexusAccount** | **String** | Taxnexus Account Number of the Reseller or OEM |
+
+
diff --git a/client/research/docs/ResponseMeta.md b/client/research/docs/ResponseMeta.md
new file mode 100644
index 0000000..6f2ed81
--- /dev/null
+++ b/client/research/docs/ResponseMeta.md
@@ -0,0 +1,20 @@
+# Research.ResponseMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contact** | **String** | Microservice Contact Info | [optional]
+**copyright** | **String** | Copyright Info | [optional]
+**license** | **String** | License Information and Restrictions | [optional]
+**operationID** | **String** | Operation ID | [optional]
+**pagination** | [**Pagination**](Pagination.md) | | [optional]
+**requestIP** | **String** | Request IP Address | [optional]
+**requestType** | **String** | Request Type | [optional]
+**requestURL** | **String** | Request URL | [optional]
+**serverInfo** | **String** | Data Server Info | [optional]
+**serverResponseTime** | **String** | Data Server Response Time (ms) | [optional]
+**serverTimestamp** | **String** | Backend Server Timestamp | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number used for recording transactions | [optional]
+
+
diff --git a/client/research/docs/Topic.md b/client/research/docs/Topic.md
new file mode 100644
index 0000000..94bf8da
--- /dev/null
+++ b/client/research/docs/Topic.md
@@ -0,0 +1,18 @@
+# Research.Topic
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ID** | **String** | Taxnexus Record Id | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Topic Name | [optional]
+**description** | **String** | Topic Description | [optional]
+**siteURL** | **String** | The URL of the corresponding page on the CMS | [optional]
+**parentTopicID** | **String** | The ID of the Parent Topic | [optional]
+**factors** | [**[Factor]**](Factor.md) | The list of Factors used to analyze this industry | [optional]
+
+
diff --git a/client/research/docs/TopicApi.md b/client/research/docs/TopicApi.md
new file mode 100644
index 0000000..6c6bf0c
--- /dev/null
+++ b/client/research/docs/TopicApi.md
@@ -0,0 +1,168 @@
+# Research.TopicApi
+
+All URIs are relative to *http://research.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getTopics**](TopicApi.md#getTopics) | **GET** /topics | Get Topic records
+[**getTopicsObservable**](TopicApi.md#getTopicsObservable) | **GET** /topics/observable | Get Taxnexus Companies in an observable array
+[**postTopics**](TopicApi.md#postTopics) | **POST** /topics | Add new companies
+
+
+
+## getTopics
+
+> TopicResponse getTopics(opts)
+
+Get Topic records
+
+Retrieve Topic records from the datastore
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.TopicApi();
+let opts = {
+ 'topicId': "topicId_example" // String | Taxnexus Topic record ID
+};
+apiInstance.getTopics(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **topicId** | **String**| Taxnexus Topic record ID | [optional]
+
+### Return type
+
+[**TopicResponse**](TopicResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getTopicsObservable
+
+> [Topic] getTopicsObservable(opts)
+
+Get Taxnexus Companies in an observable array
+
+A list of companies in a simple JSON array
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.TopicApi();
+let opts = {
+ 'topicId': "topicId_example" // String | Taxnexus Topic record ID
+};
+apiInstance.getTopicsObservable(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **topicId** | **String**| Taxnexus Topic record ID | [optional]
+
+### Return type
+
+[**[Topic]**](Topic.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postTopics
+
+> TopicResponse postTopics(topicRequest)
+
+Add new companies
+
+Add new companies
+
+### Example
+
+```javascript
+import Research from 'research';
+let defaultClient = Research.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Research.TopicApi();
+let topicRequest = new Research.TopicRequest(); // TopicRequest | An array of new Topic records
+apiInstance.postTopics(topicRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **topicRequest** | [**TopicRequest**](TopicRequest.md)| An array of new Topic records |
+
+### Return type
+
+[**TopicResponse**](TopicResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/research/docs/TopicRequest.md b/client/research/docs/TopicRequest.md
new file mode 100644
index 0000000..2e637bf
--- /dev/null
+++ b/client/research/docs/TopicRequest.md
@@ -0,0 +1,9 @@
+# Research.TopicRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Topic]**](Topic.md) | | [optional]
+
+
diff --git a/client/research/docs/TopicResponse.md b/client/research/docs/TopicResponse.md
new file mode 100644
index 0000000..66426cf
--- /dev/null
+++ b/client/research/docs/TopicResponse.md
@@ -0,0 +1,10 @@
+# Research.TopicResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Topic]**](Topic.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/research/git_push.sh b/client/research/git_push.sh
new file mode 100644
index 0000000..f53a75d
--- /dev/null
+++ b/client/research/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/client/research/mocha.opts b/client/research/mocha.opts
new file mode 100644
index 0000000..9070118
--- /dev/null
+++ b/client/research/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/client/research/package.json b/client/research/package.json
new file mode 100644
index 0000000..bb8fa1c
--- /dev/null
+++ b/client/research/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "research",
+ "version": "0.0.2",
+ "description": "Customer_Information_Microservice",
+ "license": "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc.",
+ "main": "dist/index.js",
+ "scripts": {
+ "build": "babel src -d dist",
+ "prepare": "npm run build",
+ "test": "mocha --require @babel/register --recursive"
+ },
+ "browser": {
+ "fs": false
+ },
+ "dependencies": {
+ "@babel/cli": "^7.0.0",
+ "superagent": "^5.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-decorators": "^7.0.0",
+ "@babel/plugin-proposal-do-expressions": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
+ "@babel/plugin-proposal-function-bind": "^7.0.0",
+ "@babel/plugin-proposal-function-sent": "^7.0.0",
+ "@babel/plugin-proposal-json-strings": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-import-meta": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "expect.js": "^0.3.1",
+ "mocha": "^8.0.1",
+ "sinon": "^7.2.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/client/research/src/ApiClient.js b/client/research/src/ApiClient.js
new file mode 100644
index 0000000..c9ab2a9
--- /dev/null
+++ b/client/research/src/ApiClient.js
@@ -0,0 +1,692 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import superagent from "superagent";
+import querystring from "querystring";
+
+/**
+* @module ApiClient
+* @version 0.0.2
+*/
+
+/**
+* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
+* application to use this class directly - the *Api and model classes provide the public API for the service. The
+* contents of this file should be regarded as internal but are documented for completeness.
+* @alias module:ApiClient
+* @class
+*/
+class ApiClient {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * Overrides the default value set in spec file if present
+ * @param {String} basePath
+ */
+ constructor(basePath = 'http://research.vernonkeenan.com:8080/v1') {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * @type {String}
+ * @default http://research.vernonkeenan.com:8080/v1
+ */
+ this.basePath = basePath.replace(/\/+$/, '');
+
+ /**
+ * The authentication methods to be included for all API calls.
+ * @type {Array.}
+ */
+ this.authentications = {
+ 'ApiKeyAuth': {type: 'apiKey', 'in': 'header', name: 'X-API-Key'}
+ }
+
+ /**
+ * The default HTTP headers to be included for all API calls.
+ * @type {Array.}
+ * @default {}
+ */
+ this.defaultHeaders = {
+ 'User-Agent': 'OpenAPI-Generator/0.0.2/Javascript'
+ };
+
+ /**
+ * The default HTTP timeout for all API calls.
+ * @type {Number}
+ * @default 60000
+ */
+ this.timeout = 60000;
+
+ /**
+ * If set to false an additional timestamp parameter is added to all API GET calls to
+ * prevent browser caching
+ * @type {Boolean}
+ * @default true
+ */
+ this.cache = true;
+
+ /**
+ * If set to true, the client will save the cookies from each server
+ * response, and return them in the next request.
+ * @default false
+ */
+ this.enableCookies = false;
+
+ /*
+ * Used to save and return cookies in a node.js (non-browser) setting,
+ * if this.enableCookies is set to true.
+ */
+ if (typeof window === 'undefined') {
+ this.agent = new superagent.agent();
+ }
+
+ /*
+ * Allow user to override superagent agent
+ */
+ this.requestAgent = null;
+
+ /*
+ * Allow user to add superagent plugins
+ */
+ this.plugins = null;
+
+ }
+
+ /**
+ * Returns a string representation for an actual parameter.
+ * @param param The actual parameter.
+ * @returns {String} The string representation of param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ * - application/json
+ * - application/json; charset=UTF8
+ * - APPLICATION/JSON
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.} contentTypes
+ * @returns {String} The chosen content type, preferring JSON.
+ */
+ jsonPreferredMime(contentTypes) {
+ for (var i = 0; i < contentTypes.length; i++) {
+ if (this.isJsonMime(contentTypes[i])) {
+ return contentTypes[i];
+ }
+ }
+
+ return contentTypes[0];
+ }
+
+ /**
+ * Checks whether the given parameter value represents file-like content.
+ * @param param The parameter to check.
+ * @returns {Boolean} true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ * - remove nils
+ * - keep files and arrays
+ * - format to string with `paramToString` for other cases
+ *
+ * @param {Object.} params The parameters as object properties.
+ * @returns {Object.} normalized parameters.
+ */
+ normalizeParams(params) {
+ var newParams = {};
+ for (var key in params) {
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
+ var value = params[key];
+ if (this.isFileParam(value) || Array.isArray(value)) {
+ newParams[key] = value;
+ } else {
+ newParams[key] = this.paramToString(value);
+ }
+ }
+ }
+
+ return newParams;
+ }
+
+ /**
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
+ * @param {Array} param An array parameter.
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.} authNames An array of authentication method names.
+ */
+ applyAuthToRequest(request, authNames) {
+ authNames.forEach((authName) => {
+ var auth = this.authentications[authName];
+ switch (auth.type) {
+ case 'basic':
+ if (auth.username || auth.password) {
+ request.auth(auth.username || '', auth.password || '');
+ }
+
+ break;
+ case 'bearer':
+ if (auth.accessToken) {
+ var localVarBearerToken = typeof auth.accessToken === 'function'
+ ? auth.accessToken()
+ : auth.accessToken
+ request.set({'Authorization': 'Bearer ' + localVarBearerToken});
+ }
+
+ break;
+ case 'apiKey':
+ if (auth.apiKey) {
+ var data = {};
+ if (auth.apiKeyPrefix) {
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
+ } else {
+ data[auth.name] = auth.apiKey;
+ }
+
+ if (auth['in'] === 'header') {
+ request.set(data);
+ } else {
+ request.query(data);
+ }
+ }
+
+ break;
+ case 'oauth2':
+ if (auth.accessToken) {
+ request.set({'Authorization': 'Bearer ' + auth.accessToken});
+ }
+
+ break;
+ default:
+ throw new Error('Unknown authentication type: ' + auth.type);
+ }
+ });
+ }
+
+ /**
+ * Deserializes an HTTP response body into a value of the specified type.
+ * @param {Object} response A SuperAgent response object.
+ * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://research.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/research/src/api/CorsApi.js b/client/research/src/api/CorsApi.js
new file mode 100644
index 0000000..034f070
--- /dev/null
+++ b/client/research/src/api/CorsApi.js
@@ -0,0 +1,177 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+
+/**
+* Cors service.
+* @module api/CorsApi
+* @version 0.0.2
+*/
+export default class CorsApi {
+
+ /**
+ * Constructs a new CorsApi.
+ * @alias module:api/CorsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the industryObservableOptions operation.
+ * @callback module:api/CorsApi~industryObservableOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~industryObservableOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ industryObservableOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/industries/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the industryOptions operation.
+ * @callback module:api/CorsApi~industryOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~industryOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ industryOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/industries', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the topicObservableOptions operation.
+ * @callback module:api/CorsApi~topicObservableOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~topicObservableOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ topicObservableOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/topics/observable', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the topicOptions operation.
+ * @callback module:api/CorsApi~topicOptionsCallback
+ * @param {String} error Error message, if any.
+ * @param data This operation does not return a value.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * CORS support
+ * @param {module:api/CorsApi~topicOptionsCallback} callback The callback function, accepting three arguments: error, data, response
+ */
+ topicOptions(callback) {
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = [];
+ let accepts = [];
+ let returnType = null;
+ return this.apiClient.callApi(
+ '/topics', 'OPTIONS',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/research/src/api/IndustryApi.js b/client/research/src/api/IndustryApi.js
new file mode 100644
index 0000000..d8fbb9c
--- /dev/null
+++ b/client/research/src/api/IndustryApi.js
@@ -0,0 +1,165 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import Industry from '../model/Industry';
+import IndustryRequest from '../model/IndustryRequest';
+import IndustryResponse from '../model/IndustryResponse';
+
+/**
+* Industry service.
+* @module api/IndustryApi
+* @version 0.0.2
+*/
+export default class IndustryApi {
+
+ /**
+ * Constructs a new IndustryApi.
+ * @alias module:api/IndustryApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getIndustries operation.
+ * @callback module:api/IndustryApi~getIndustriesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/IndustryResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Industry records
+ * Retrieve Industry records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.industryId Taxnexus Industry record ID
+ * @param {module:api/IndustryApi~getIndustriesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/IndustryResponse}
+ */
+ getIndustries(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'industryId': opts['industryId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = IndustryResponse;
+ return this.apiClient.callApi(
+ '/industries', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getIndustriesObservable operation.
+ * @callback module:api/IndustryApi~getIndustriesObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Companies in an observable array
+ * A list of companies in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.industryId Taxnexus Industry record ID
+ * @param {module:api/IndustryApi~getIndustriesObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getIndustriesObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'industryId': opts['industryId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Industry];
+ return this.apiClient.callApi(
+ '/industries/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postIndustries operation.
+ * @callback module:api/IndustryApi~postIndustriesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/IndustryResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add new companies
+ * Add new companies
+ * @param {module:model/IndustryRequest} industryRequest An array of new Industry records
+ * @param {module:api/IndustryApi~postIndustriesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/IndustryResponse}
+ */
+ postIndustries(industryRequest, callback) {
+ let postBody = industryRequest;
+ // verify the required parameter 'industryRequest' is set
+ if (industryRequest === undefined || industryRequest === null) {
+ throw new Error("Missing the required parameter 'industryRequest' when calling postIndustries");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = IndustryResponse;
+ return this.apiClient.callApi(
+ '/industries', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/research/src/api/TopicApi.js b/client/research/src/api/TopicApi.js
new file mode 100644
index 0000000..1f15ed0
--- /dev/null
+++ b/client/research/src/api/TopicApi.js
@@ -0,0 +1,165 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import Topic from '../model/Topic';
+import TopicRequest from '../model/TopicRequest';
+import TopicResponse from '../model/TopicResponse';
+
+/**
+* Topic service.
+* @module api/TopicApi
+* @version 0.0.2
+*/
+export default class TopicApi {
+
+ /**
+ * Constructs a new TopicApi.
+ * @alias module:api/TopicApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getTopics operation.
+ * @callback module:api/TopicApi~getTopicsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TopicResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Topic records
+ * Retrieve Topic records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.topicId Taxnexus Topic record ID
+ * @param {module:api/TopicApi~getTopicsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TopicResponse}
+ */
+ getTopics(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'topicId': opts['topicId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = TopicResponse;
+ return this.apiClient.callApi(
+ '/topics', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getTopicsObservable operation.
+ * @callback module:api/TopicApi~getTopicsObservableCallback
+ * @param {String} error Error message, if any.
+ * @param {Array.} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get Taxnexus Companies in an observable array
+ * A list of companies in a simple JSON array
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.topicId Taxnexus Topic record ID
+ * @param {module:api/TopicApi~getTopicsObservableCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link Array.}
+ */
+ getTopicsObservable(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'topicId': opts['topicId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = [Topic];
+ return this.apiClient.callApi(
+ '/topics/observable', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postTopics operation.
+ * @callback module:api/TopicApi~postTopicsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TopicResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add new companies
+ * Add new companies
+ * @param {module:model/TopicRequest} topicRequest An array of new Topic records
+ * @param {module:api/TopicApi~postTopicsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TopicResponse}
+ */
+ postTopics(topicRequest, callback) {
+ let postBody = topicRequest;
+ // verify the required parameter 'topicRequest' is set
+ if (topicRequest === undefined || topicRequest === null) {
+ throw new Error("Missing the required parameter 'topicRequest' when calling postTopics");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TopicResponse;
+ return this.apiClient.callApi(
+ '/topics', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/research/src/index.js b/client/research/src/index.js
new file mode 100644
index 0000000..d93aa9d
--- /dev/null
+++ b/client/research/src/index.js
@@ -0,0 +1,202 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Address from './model/Address';
+import CompanyProduct from './model/CompanyProduct';
+import DeleteResponse from './model/DeleteResponse';
+import Error from './model/Error';
+import Factor from './model/Factor';
+import Industry from './model/Industry';
+import IndustryRequest from './model/IndustryRequest';
+import IndustryResponse from './model/IndustryResponse';
+import InvalidError from './model/InvalidError';
+import InvalidErrorAllOf from './model/InvalidErrorAllOf';
+import Message from './model/Message';
+import Observation from './model/Observation';
+import Pagination from './model/Pagination';
+import RequestMeta from './model/RequestMeta';
+import ResponseMeta from './model/ResponseMeta';
+import Topic from './model/Topic';
+import TopicRequest from './model/TopicRequest';
+import TopicResponse from './model/TopicResponse';
+import CorsApi from './api/CorsApi';
+import IndustryApi from './api/IndustryApi';
+import TopicApi from './api/TopicApi';
+
+
+/**
+* Customer_Information_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var Research = require('index'); // See note below*.
+* var xxxSvc = new Research.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Research.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new Research.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new Research.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Address model constructor.
+ * @property {module:model/Address}
+ */
+ Address,
+
+ /**
+ * The CompanyProduct model constructor.
+ * @property {module:model/CompanyProduct}
+ */
+ CompanyProduct,
+
+ /**
+ * The DeleteResponse model constructor.
+ * @property {module:model/DeleteResponse}
+ */
+ DeleteResponse,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The Factor model constructor.
+ * @property {module:model/Factor}
+ */
+ Factor,
+
+ /**
+ * The Industry model constructor.
+ * @property {module:model/Industry}
+ */
+ Industry,
+
+ /**
+ * The IndustryRequest model constructor.
+ * @property {module:model/IndustryRequest}
+ */
+ IndustryRequest,
+
+ /**
+ * The IndustryResponse model constructor.
+ * @property {module:model/IndustryResponse}
+ */
+ IndustryResponse,
+
+ /**
+ * The InvalidError model constructor.
+ * @property {module:model/InvalidError}
+ */
+ InvalidError,
+
+ /**
+ * The InvalidErrorAllOf model constructor.
+ * @property {module:model/InvalidErrorAllOf}
+ */
+ InvalidErrorAllOf,
+
+ /**
+ * The Message model constructor.
+ * @property {module:model/Message}
+ */
+ Message,
+
+ /**
+ * The Observation model constructor.
+ * @property {module:model/Observation}
+ */
+ Observation,
+
+ /**
+ * The Pagination model constructor.
+ * @property {module:model/Pagination}
+ */
+ Pagination,
+
+ /**
+ * The RequestMeta model constructor.
+ * @property {module:model/RequestMeta}
+ */
+ RequestMeta,
+
+ /**
+ * The ResponseMeta model constructor.
+ * @property {module:model/ResponseMeta}
+ */
+ ResponseMeta,
+
+ /**
+ * The Topic model constructor.
+ * @property {module:model/Topic}
+ */
+ Topic,
+
+ /**
+ * The TopicRequest model constructor.
+ * @property {module:model/TopicRequest}
+ */
+ TopicRequest,
+
+ /**
+ * The TopicResponse model constructor.
+ * @property {module:model/TopicResponse}
+ */
+ TopicResponse,
+
+ /**
+ * The CorsApi service constructor.
+ * @property {module:api/CorsApi}
+ */
+ CorsApi,
+
+ /**
+ * The IndustryApi service constructor.
+ * @property {module:api/IndustryApi}
+ */
+ IndustryApi,
+
+ /**
+ * The TopicApi service constructor.
+ * @property {module:api/TopicApi}
+ */
+ TopicApi
+};
diff --git a/client/research/src/model/Address.js b/client/research/src/model/Address.js
new file mode 100644
index 0000000..3383ee3
--- /dev/null
+++ b/client/research/src/model/Address.js
@@ -0,0 +1,126 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Address model module.
+ * @module model/Address
+ * @version 0.0.2
+ */
+class Address {
+ /**
+ * Constructs a new Address
.
+ * @alias module:model/Address
+ */
+ constructor() {
+
+ Address.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('City')) {
+ obj['City'] = ApiClient.convertToType(data['City'], 'String');
+ }
+ if (data.hasOwnProperty('Country')) {
+ obj['Country'] = ApiClient.convertToType(data['Country'], 'String');
+ }
+ if (data.hasOwnProperty('CountryCode')) {
+ obj['CountryCode'] = ApiClient.convertToType(data['CountryCode'], 'String');
+ }
+ if (data.hasOwnProperty('PostalCode')) {
+ obj['PostalCode'] = ApiClient.convertToType(data['PostalCode'], 'String');
+ }
+ if (data.hasOwnProperty('State')) {
+ obj['State'] = ApiClient.convertToType(data['State'], 'String');
+ }
+ if (data.hasOwnProperty('StateCode')) {
+ obj['StateCode'] = ApiClient.convertToType(data['StateCode'], 'String');
+ }
+ if (data.hasOwnProperty('Street')) {
+ obj['Street'] = ApiClient.convertToType(data['Street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} City
+ */
+Address.prototype['City'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} Country
+ */
+Address.prototype['Country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} CountryCode
+ */
+Address.prototype['CountryCode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} PostalCode
+ */
+Address.prototype['PostalCode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} State
+ */
+Address.prototype['State'] = undefined;
+
+/**
+ * State Code
+ * @member {String} StateCode
+ */
+Address.prototype['StateCode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} Street
+ */
+Address.prototype['Street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/research/src/model/CompanyProduct.js b/client/research/src/model/CompanyProduct.js
new file mode 100644
index 0000000..4055794
--- /dev/null
+++ b/client/research/src/model/CompanyProduct.js
@@ -0,0 +1,154 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The CompanyProduct model module.
+ * @module model/CompanyProduct
+ * @version 0.0.2
+ */
+class CompanyProduct {
+ /**
+ * Constructs a new CompanyProduct
.
+ * A software product or service vended by a Company
+ * @alias module:model/CompanyProduct
+ */
+ constructor() {
+
+ CompanyProduct.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a CompanyProduct
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/CompanyProduct} obj Optional instance to populate.
+ * @return {module:model/CompanyProduct} The populated CompanyProduct
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new CompanyProduct();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('TagLine')) {
+ obj['TagLine'] = ApiClient.convertToType(data['TagLine'], 'String');
+ }
+ if (data.hasOwnProperty('URL')) {
+ obj['URL'] = ApiClient.convertToType(data['URL'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+CompanyProduct.prototype['ID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+CompanyProduct.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+CompanyProduct.prototype['CreatedDate'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+CompanyProduct.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+CompanyProduct.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Taxnexus ID of the Company that owns this Product
+ * @member {String} AccountID
+ */
+CompanyProduct.prototype['AccountID'] = undefined;
+
+/**
+ * Description of product
+ * @member {String} Description
+ */
+CompanyProduct.prototype['Description'] = undefined;
+
+/**
+ * Product Name
+ * @member {String} Name
+ */
+CompanyProduct.prototype['Name'] = undefined;
+
+/**
+ * TagLine
+ * @member {String} TagLine
+ */
+CompanyProduct.prototype['TagLine'] = undefined;
+
+/**
+ * Website
+ * @member {String} URL
+ */
+CompanyProduct.prototype['URL'] = undefined;
+
+
+
+
+
+
+export default CompanyProduct;
+
diff --git a/client/research/src/model/DeleteResponse.js b/client/research/src/model/DeleteResponse.js
new file mode 100644
index 0000000..5ce1640
--- /dev/null
+++ b/client/research/src/model/DeleteResponse.js
@@ -0,0 +1,81 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Message from './Message';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DeleteResponse model module.
+ * @module model/DeleteResponse
+ * @version 0.0.2
+ */
+class DeleteResponse {
+ /**
+ * Constructs a new DeleteResponse
.
+ * @alias module:model/DeleteResponse
+ */
+ constructor() {
+
+ DeleteResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DeleteResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DeleteResponse} obj Optional instance to populate.
+ * @return {module:model/DeleteResponse} The populated DeleteResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DeleteResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Message]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DeleteResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DeleteResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DeleteResponse;
+
diff --git a/client/research/src/model/Error.js b/client/research/src/model/Error.js
new file mode 100644
index 0000000..9d03eff
--- /dev/null
+++ b/client/research/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/research/src/model/Factor.js b/client/research/src/model/Factor.js
new file mode 100644
index 0000000..bf36006
--- /dev/null
+++ b/client/research/src/model/Factor.js
@@ -0,0 +1,155 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Observation from './Observation';
+
+/**
+ * The Factor model module.
+ * @module model/Factor
+ * @version 0.0.2
+ */
+class Factor {
+ /**
+ * Constructs a new Factor
.
+ * A Factor of analysis within a research topic
+ * @alias module:model/Factor
+ */
+ constructor() {
+
+ Factor.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Factor
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Factor} obj Optional instance to populate.
+ * @return {module:model/Factor} The populated Factor
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Factor();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('SiteURL')) {
+ obj['SiteURL'] = ApiClient.convertToType(data['SiteURL'], 'String');
+ }
+ if (data.hasOwnProperty('TopicID')) {
+ obj['TopicID'] = ApiClient.convertToType(data['TopicID'], 'String');
+ }
+ if (data.hasOwnProperty('Observations')) {
+ obj['Observations'] = ApiClient.convertToType(data['Observations'], [Observation]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Factor.prototype['ID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Factor.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Factor.prototype['CreatedDate'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Factor.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Factor.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Factor Name
+ * @member {String} Name
+ */
+Factor.prototype['Name'] = undefined;
+
+/**
+ * Topic Description
+ * @member {String} Description
+ */
+Factor.prototype['Description'] = undefined;
+
+/**
+ * The URL of the corresponding page on the CMS
+ * @member {String} SiteURL
+ */
+Factor.prototype['SiteURL'] = undefined;
+
+/**
+ * The ID of the Topic that owns this Factor
+ * @member {String} TopicID
+ */
+Factor.prototype['TopicID'] = undefined;
+
+/**
+ * The list of Observations used to analyze this industry
+ * @member {Array.} Observations
+ */
+Factor.prototype['Observations'] = undefined;
+
+
+
+
+
+
+export default Factor;
+
diff --git a/client/research/src/model/Industry.js b/client/research/src/model/Industry.js
new file mode 100644
index 0000000..512b043
--- /dev/null
+++ b/client/research/src/model/Industry.js
@@ -0,0 +1,191 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import CompanyProduct from './CompanyProduct';
+
+/**
+ * The Industry model module.
+ * @module model/Industry
+ * @version 0.0.2
+ */
+class Industry {
+ /**
+ * Constructs a new Industry
.
+ * An industry that is being researched
+ * @alias module:model/Industry
+ */
+ constructor() {
+
+ Industry.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Industry
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Industry} obj Optional instance to populate.
+ * @return {module:model/Industry} The populated Industry
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Industry();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('ParentIndustryID')) {
+ obj['ParentIndustryID'] = ApiClient.convertToType(data['ParentIndustryID'], 'String');
+ }
+ if (data.hasOwnProperty('Level')) {
+ obj['Level'] = ApiClient.convertToType(data['Level'], 'String');
+ }
+ if (data.hasOwnProperty('Path')) {
+ obj['Path'] = ApiClient.convertToType(data['Path'], 'String');
+ }
+ if (data.hasOwnProperty('Slug')) {
+ obj['Slug'] = ApiClient.convertToType(data['Slug'], 'String');
+ }
+ if (data.hasOwnProperty('SiteURL')) {
+ obj['SiteURL'] = ApiClient.convertToType(data['SiteURL'], 'String');
+ }
+ if (data.hasOwnProperty('Companies')) {
+ obj['Companies'] = ApiClient.convertToType(data['Companies'], ['String']);
+ }
+ if (data.hasOwnProperty('CompanyProducts')) {
+ obj['CompanyProducts'] = ApiClient.convertToType(data['CompanyProducts'], [CompanyProduct]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Industry.prototype['ID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Industry.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Industry.prototype['CreatedDate'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Industry.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Industry.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Industry Name
+ * @member {String} Name
+ */
+Industry.prototype['Name'] = undefined;
+
+/**
+ * Industry Description
+ * @member {String} Description
+ */
+Industry.prototype['Description'] = undefined;
+
+/**
+ * The ID of the Parent Industry
+ * @member {String} ParentIndustryID
+ */
+Industry.prototype['ParentIndustryID'] = undefined;
+
+/**
+ * The hierarchical level of this Industry
+ * @member {String} Level
+ */
+Industry.prototype['Level'] = undefined;
+
+/**
+ * The full path of this industry, including Parent
+ * @member {String} Path
+ */
+Industry.prototype['Path'] = undefined;
+
+/**
+ * The CMS Slug for this Industry
+ * @member {String} Slug
+ */
+Industry.prototype['Slug'] = undefined;
+
+/**
+ * The URL of the corresponding page on the CMS
+ * @member {String} SiteURL
+ */
+Industry.prototype['SiteURL'] = undefined;
+
+/**
+ * The AccountIDs of the Companies in this Industry
+ * @member {Array.} Companies
+ */
+Industry.prototype['Companies'] = undefined;
+
+/**
+ * The list of Products in this industry
+ * @member {Array.} CompanyProducts
+ */
+Industry.prototype['CompanyProducts'] = undefined;
+
+
+
+
+
+
+export default Industry;
+
diff --git a/client/research/src/model/IndustryRequest.js b/client/research/src/model/IndustryRequest.js
new file mode 100644
index 0000000..73adc33
--- /dev/null
+++ b/client/research/src/model/IndustryRequest.js
@@ -0,0 +1,73 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Industry from './Industry';
+
+/**
+ * The IndustryRequest model module.
+ * @module model/IndustryRequest
+ * @version 0.0.2
+ */
+class IndustryRequest {
+ /**
+ * Constructs a new IndustryRequest
.
+ * An array of Industry objects submitted for processing
+ * @alias module:model/IndustryRequest
+ */
+ constructor() {
+
+ IndustryRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a IndustryRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/IndustryRequest} obj Optional instance to populate.
+ * @return {module:model/IndustryRequest} The populated IndustryRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new IndustryRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Industry]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+IndustryRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default IndustryRequest;
+
diff --git a/client/research/src/model/IndustryResponse.js b/client/research/src/model/IndustryResponse.js
new file mode 100644
index 0000000..5cfec10
--- /dev/null
+++ b/client/research/src/model/IndustryResponse.js
@@ -0,0 +1,82 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Industry from './Industry';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The IndustryResponse model module.
+ * @module model/IndustryResponse
+ * @version 0.0.2
+ */
+class IndustryResponse {
+ /**
+ * Constructs a new IndustryResponse
.
+ * An array of Industry objects produced in response to a request
+ * @alias module:model/IndustryResponse
+ */
+ constructor() {
+
+ IndustryResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a IndustryResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/IndustryResponse} obj Optional instance to populate.
+ * @return {module:model/IndustryResponse} The populated IndustryResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new IndustryResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Industry]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+IndustryResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+IndustryResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default IndustryResponse;
+
diff --git a/client/research/src/model/InvalidError.js b/client/research/src/model/InvalidError.js
new file mode 100644
index 0000000..61a17e6
--- /dev/null
+++ b/client/research/src/model/InvalidError.js
@@ -0,0 +1,119 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Error from './Error';
+import InvalidErrorAllOf from './InvalidErrorAllOf';
+
+/**
+ * The InvalidError model module.
+ * @module model/InvalidError
+ * @version 0.0.2
+ */
+class InvalidError {
+ /**
+ * Constructs a new InvalidError
.
+ * @alias module:model/InvalidError
+ * @implements module:model/Error
+ * @implements module:model/InvalidErrorAllOf
+ */
+ constructor() {
+ Error.initialize(this);InvalidErrorAllOf.initialize(this);
+ InvalidError.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidError
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidError} obj Optional instance to populate.
+ * @return {module:model/InvalidError} The populated InvalidError
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidError();
+ Error.constructFromObject(data, obj);
+ InvalidErrorAllOf.constructFromObject(data, obj);
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+InvalidError.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+InvalidError.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+InvalidError.prototype['Message'] = undefined;
+
+/**
+ * @member {Array.} details
+ */
+InvalidError.prototype['details'] = undefined;
+
+
+// Implement Error interface:
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+// Implement InvalidErrorAllOf interface:
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+export default InvalidError;
+
diff --git a/client/research/src/model/InvalidErrorAllOf.js b/client/research/src/model/InvalidErrorAllOf.js
new file mode 100644
index 0000000..b16d924
--- /dev/null
+++ b/client/research/src/model/InvalidErrorAllOf.js
@@ -0,0 +1,71 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The InvalidErrorAllOf model module.
+ * @module model/InvalidErrorAllOf
+ * @version 0.0.2
+ */
+class InvalidErrorAllOf {
+ /**
+ * Constructs a new InvalidErrorAllOf
.
+ * @alias module:model/InvalidErrorAllOf
+ */
+ constructor() {
+
+ InvalidErrorAllOf.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidErrorAllOf
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidErrorAllOf} obj Optional instance to populate.
+ * @return {module:model/InvalidErrorAllOf} The populated InvalidErrorAllOf
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidErrorAllOf();
+
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+
+
+export default InvalidErrorAllOf;
+
diff --git a/client/research/src/model/Message.js b/client/research/src/model/Message.js
new file mode 100644
index 0000000..03bdfe1
--- /dev/null
+++ b/client/research/src/model/Message.js
@@ -0,0 +1,87 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Message model module.
+ * @module model/Message
+ * @version 0.0.2
+ */
+class Message {
+ /**
+ * Constructs a new Message
.
+ * @alias module:model/Message
+ */
+ constructor() {
+
+ Message.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Message
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Message} obj Optional instance to populate.
+ * @return {module:model/Message} The populated Message
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Message();
+
+ if (data.hasOwnProperty('message')) {
+ obj['message'] = ApiClient.convertToType(data['message'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} message
+ */
+Message.prototype['message'] = undefined;
+
+/**
+ * @member {String} ref
+ */
+Message.prototype['ref'] = undefined;
+
+/**
+ * @member {Number} status
+ */
+Message.prototype['status'] = undefined;
+
+
+
+
+
+
+export default Message;
+
diff --git a/client/research/src/model/Observation.js b/client/research/src/model/Observation.js
new file mode 100644
index 0000000..fddf742
--- /dev/null
+++ b/client/research/src/model/Observation.js
@@ -0,0 +1,163 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Observation model module.
+ * @module model/Observation
+ * @version 0.0.2
+ */
+class Observation {
+ /**
+ * Constructs a new Observation
.
+ * A data point collected while analyzing a Factor
+ * @alias module:model/Observation
+ */
+ constructor() {
+
+ Observation.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Observation
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Observation} obj Optional instance to populate.
+ * @return {module:model/Observation} The populated Observation
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Observation();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('FactorID')) {
+ obj['FactorID'] = ApiClient.convertToType(data['FactorID'], 'String');
+ }
+ if (data.hasOwnProperty('SubjectType')) {
+ obj['SubjectType'] = ApiClient.convertToType(data['SubjectType'], Object);
+ }
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('companyProductID')) {
+ obj['companyProductID'] = ApiClient.convertToType(data['companyProductID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Value')) {
+ obj['Value'] = ApiClient.convertToType(data['Value'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Observation.prototype['ID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Observation.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Observation.prototype['CreatedDate'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Observation.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Observation.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * The ID of the Factor that owns this Observation
+ * @member {String} FactorID
+ */
+Observation.prototype['FactorID'] = undefined;
+
+/**
+ * Is the subject a Company or a Product?
+ * @member {Object} SubjectType
+ */
+Observation.prototype['SubjectType'] = undefined;
+
+/**
+ * The ID of the Company being analyzed
+ * @member {String} AccountID
+ */
+Observation.prototype['AccountID'] = undefined;
+
+/**
+ * The ID of the Product being analyzed
+ * @member {String} companyProductID
+ */
+Observation.prototype['companyProductID'] = undefined;
+
+/**
+ * Notes concerning data collection
+ * @member {String} Description
+ */
+Observation.prototype['Description'] = undefined;
+
+/**
+ * The data point collected
+ * @member {String} Value
+ */
+Observation.prototype['Value'] = undefined;
+
+
+
+
+
+
+export default Observation;
+
diff --git a/client/research/src/model/Pagination.js b/client/research/src/model/Pagination.js
new file mode 100644
index 0000000..2df41b2
--- /dev/null
+++ b/client/research/src/model/Pagination.js
@@ -0,0 +1,95 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Pagination model module.
+ * @module model/Pagination
+ * @version 0.0.2
+ */
+class Pagination {
+ /**
+ * Constructs a new Pagination
.
+ * @alias module:model/Pagination
+ */
+ constructor() {
+
+ Pagination.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Pagination
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Pagination} obj Optional instance to populate.
+ * @return {module:model/Pagination} The populated Pagination
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Pagination();
+
+ if (data.hasOwnProperty('limit')) {
+ obj['limit'] = ApiClient.convertToType(data['limit'], 'Number');
+ }
+ if (data.hasOwnProperty('pagesize')) {
+ obj['pagesize'] = ApiClient.convertToType(data['pagesize'], 'Number');
+ }
+ if (data.hasOwnProperty('poffset')) {
+ obj['poffset'] = ApiClient.convertToType(data['poffset'], 'Number');
+ }
+ if (data.hasOwnProperty('setsize')) {
+ obj['setsize'] = ApiClient.convertToType(data['setsize'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} limit
+ */
+Pagination.prototype['limit'] = undefined;
+
+/**
+ * @member {Number} pagesize
+ */
+Pagination.prototype['pagesize'] = undefined;
+
+/**
+ * @member {Number} poffset
+ */
+Pagination.prototype['poffset'] = undefined;
+
+/**
+ * @member {Number} setsize
+ */
+Pagination.prototype['setsize'] = undefined;
+
+
+
+
+
+
+export default Pagination;
+
diff --git a/client/research/src/model/RequestMeta.js b/client/research/src/model/RequestMeta.js
new file mode 100644
index 0000000..eef5c11
--- /dev/null
+++ b/client/research/src/model/RequestMeta.js
@@ -0,0 +1,74 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RequestMeta model module.
+ * @module model/RequestMeta
+ * @version 0.0.2
+ */
+class RequestMeta {
+ /**
+ * Constructs a new RequestMeta
.
+ * @alias module:model/RequestMeta
+ * @param taxnexusAccount {String} Taxnexus Account Number of the Reseller or OEM
+ */
+ constructor(taxnexusAccount) {
+
+ RequestMeta.initialize(this, taxnexusAccount);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, taxnexusAccount) {
+ obj['TaxnexusAccount'] = taxnexusAccount;
+ }
+
+ /**
+ * Constructs a RequestMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RequestMeta} obj Optional instance to populate.
+ * @return {module:model/RequestMeta} The populated RequestMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RequestMeta();
+
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the Reseller or OEM
+ * @member {String} TaxnexusAccount
+ */
+RequestMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default RequestMeta;
+
diff --git a/client/research/src/model/ResponseMeta.js b/client/research/src/model/ResponseMeta.js
new file mode 100644
index 0000000..5682ce3
--- /dev/null
+++ b/client/research/src/model/ResponseMeta.js
@@ -0,0 +1,171 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Pagination from './Pagination';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('Pagination')) {
+ obj['Pagination'] = Pagination.constructFromObject(data['Pagination']);
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * @member {module:model/Pagination} Pagination
+ */
+ResponseMeta.prototype['Pagination'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/research/src/model/Topic.js b/client/research/src/model/Topic.js
new file mode 100644
index 0000000..576be59
--- /dev/null
+++ b/client/research/src/model/Topic.js
@@ -0,0 +1,155 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Factor from './Factor';
+
+/**
+ * The Topic model module.
+ * @module model/Topic
+ * @version 0.0.2
+ */
+class Topic {
+ /**
+ * Constructs a new Topic
.
+ * A research topic that collects data
+ * @alias module:model/Topic
+ */
+ constructor() {
+
+ Topic.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Topic
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Topic} obj Optional instance to populate.
+ * @return {module:model/Topic} The populated Topic
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Topic();
+
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('SiteURL')) {
+ obj['SiteURL'] = ApiClient.convertToType(data['SiteURL'], 'String');
+ }
+ if (data.hasOwnProperty('ParentTopicID')) {
+ obj['ParentTopicID'] = ApiClient.convertToType(data['ParentTopicID'], 'String');
+ }
+ if (data.hasOwnProperty('Factors')) {
+ obj['Factors'] = ApiClient.convertToType(data['Factors'], [Factor]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Topic.prototype['ID'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Topic.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Topic.prototype['CreatedDate'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Topic.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Topic.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Topic Name
+ * @member {String} Name
+ */
+Topic.prototype['Name'] = undefined;
+
+/**
+ * Topic Description
+ * @member {String} Description
+ */
+Topic.prototype['Description'] = undefined;
+
+/**
+ * The URL of the corresponding page on the CMS
+ * @member {String} SiteURL
+ */
+Topic.prototype['SiteURL'] = undefined;
+
+/**
+ * The ID of the Parent Topic
+ * @member {String} ParentTopicID
+ */
+Topic.prototype['ParentTopicID'] = undefined;
+
+/**
+ * The list of Factors used to analyze this industry
+ * @member {Array.} Factors
+ */
+Topic.prototype['Factors'] = undefined;
+
+
+
+
+
+
+export default Topic;
+
diff --git a/client/research/src/model/TopicRequest.js b/client/research/src/model/TopicRequest.js
new file mode 100644
index 0000000..727b850
--- /dev/null
+++ b/client/research/src/model/TopicRequest.js
@@ -0,0 +1,73 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Topic from './Topic';
+
+/**
+ * The TopicRequest model module.
+ * @module model/TopicRequest
+ * @version 0.0.2
+ */
+class TopicRequest {
+ /**
+ * Constructs a new TopicRequest
.
+ * An array of Topic objects submitted for processing
+ * @alias module:model/TopicRequest
+ */
+ constructor() {
+
+ TopicRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TopicRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TopicRequest} obj Optional instance to populate.
+ * @return {module:model/TopicRequest} The populated TopicRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TopicRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Topic]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TopicRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default TopicRequest;
+
diff --git a/client/research/src/model/TopicResponse.js b/client/research/src/model/TopicResponse.js
new file mode 100644
index 0000000..43e5eff
--- /dev/null
+++ b/client/research/src/model/TopicResponse.js
@@ -0,0 +1,82 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Topic from './Topic';
+
+/**
+ * The TopicResponse model module.
+ * @module model/TopicResponse
+ * @version 0.0.2
+ */
+class TopicResponse {
+ /**
+ * Constructs a new TopicResponse
.
+ * An array of Topic objects produced in response to a request
+ * @alias module:model/TopicResponse
+ */
+ constructor() {
+
+ TopicResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TopicResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TopicResponse} obj Optional instance to populate.
+ * @return {module:model/TopicResponse} The populated TopicResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TopicResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Topic]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+TopicResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+TopicResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default TopicResponse;
+
diff --git a/client/research/test/api/CorsApi.spec.js b/client/research/test/api/CorsApi.spec.js
new file mode 100644
index 0000000..3d94379
--- /dev/null
+++ b/client/research/test/api/CorsApi.spec.js
@@ -0,0 +1,93 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.CorsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('CorsApi', function() {
+ describe('industryObservableOptions', function() {
+ it('should call industryObservableOptions successfully', function(done) {
+ //uncomment below and update the code to test industryObservableOptions
+ //instance.industryObservableOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('industryOptions', function() {
+ it('should call industryOptions successfully', function(done) {
+ //uncomment below and update the code to test industryOptions
+ //instance.industryOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('topicObservableOptions', function() {
+ it('should call topicObservableOptions successfully', function(done) {
+ //uncomment below and update the code to test topicObservableOptions
+ //instance.topicObservableOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('topicOptions', function() {
+ it('should call topicOptions successfully', function(done) {
+ //uncomment below and update the code to test topicOptions
+ //instance.topicOptions(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/research/test/api/IndustryApi.spec.js b/client/research/test/api/IndustryApi.spec.js
new file mode 100644
index 0000000..ff25cad
--- /dev/null
+++ b/client/research/test/api/IndustryApi.spec.js
@@ -0,0 +1,83 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.IndustryApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('IndustryApi', function() {
+ describe('getIndustries', function() {
+ it('should call getIndustries successfully', function(done) {
+ //uncomment below and update the code to test getIndustries
+ //instance.getIndustries(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getIndustriesObservable', function() {
+ it('should call getIndustriesObservable successfully', function(done) {
+ //uncomment below and update the code to test getIndustriesObservable
+ //instance.getIndustriesObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postIndustries', function() {
+ it('should call postIndustries successfully', function(done) {
+ //uncomment below and update the code to test postIndustries
+ //instance.postIndustries(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/research/test/api/TopicApi.spec.js b/client/research/test/api/TopicApi.spec.js
new file mode 100644
index 0000000..6dff4d3
--- /dev/null
+++ b/client/research/test/api/TopicApi.spec.js
@@ -0,0 +1,83 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.TopicApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TopicApi', function() {
+ describe('getTopics', function() {
+ it('should call getTopics successfully', function(done) {
+ //uncomment below and update the code to test getTopics
+ //instance.getTopics(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getTopicsObservable', function() {
+ it('should call getTopicsObservable successfully', function(done) {
+ //uncomment below and update the code to test getTopicsObservable
+ //instance.getTopicsObservable(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postTopics', function() {
+ it('should call postTopics successfully', function(done) {
+ //uncomment below and update the code to test postTopics
+ //instance.postTopics(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/research/test/model/Address.spec.js b/client/research/test/model/Address.spec.js
new file mode 100644
index 0000000..7360f59
--- /dev/null
+++ b/client/research/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new Research.Address();
+ //expect(instance).to.be.a(Research.Address);
+ });
+
+ it('should have the property city (base name: "City")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "Country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countryCode (base name: "CountryCode")', function() {
+ // uncomment below and update the code to test the property countryCode
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalCode (base name: "PostalCode")', function() {
+ // uncomment below and update the code to test the property postalCode
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "State")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property stateCode (base name: "StateCode")', function() {
+ // uncomment below and update the code to test the property stateCode
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "Street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new Research.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/CompanyProduct.spec.js b/client/research/test/model/CompanyProduct.spec.js
new file mode 100644
index 0000000..d7ab9ec
--- /dev/null
+++ b/client/research/test/model/CompanyProduct.spec.js
@@ -0,0 +1,119 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.CompanyProduct();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('CompanyProduct', function() {
+ it('should create an instance of CompanyProduct', function() {
+ // uncomment below and update the code to test CompanyProduct
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be.a(Research.CompanyProduct);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tagLine (base name: "TagLine")', function() {
+ // uncomment below and update the code to test the property tagLine
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property URL (base name: "URL")', function() {
+ // uncomment below and update the code to test the property URL
+ //var instance = new Research.CompanyProduct();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/DeleteResponse.spec.js b/client/research/test/model/DeleteResponse.spec.js
new file mode 100644
index 0000000..8e24381
--- /dev/null
+++ b/client/research/test/model/DeleteResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.DeleteResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DeleteResponse', function() {
+ it('should create an instance of DeleteResponse', function() {
+ // uncomment below and update the code to test DeleteResponse
+ //var instance = new Research.DeleteResponse();
+ //expect(instance).to.be.a(Research.DeleteResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Research.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Research.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Error.spec.js b/client/research/test/model/Error.spec.js
new file mode 100644
index 0000000..a546b50
--- /dev/null
+++ b/client/research/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Research.Error();
+ //expect(instance).to.be.a(Research.Error);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Research.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Research.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Research.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Factor.spec.js b/client/research/test/model/Factor.spec.js
new file mode 100644
index 0000000..3ff8d6b
--- /dev/null
+++ b/client/research/test/model/Factor.spec.js
@@ -0,0 +1,119 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Factor();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Factor', function() {
+ it('should create an instance of Factor', function() {
+ // uncomment below and update the code to test Factor
+ //var instance = new Research.Factor();
+ //expect(instance).to.be.a(Research.Factor);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property siteURL (base name: "SiteURL")', function() {
+ // uncomment below and update the code to test the property siteURL
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property topicID (base name: "TopicID")', function() {
+ // uncomment below and update the code to test the property topicID
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property observations (base name: "Observations")', function() {
+ // uncomment below and update the code to test the property observations
+ //var instance = new Research.Factor();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Industry.spec.js b/client/research/test/model/Industry.spec.js
new file mode 100644
index 0000000..7533713
--- /dev/null
+++ b/client/research/test/model/Industry.spec.js
@@ -0,0 +1,143 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Industry();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Industry', function() {
+ it('should create an instance of Industry', function() {
+ // uncomment below and update the code to test Industry
+ //var instance = new Research.Industry();
+ //expect(instance).to.be.a(Research.Industry);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentIndustryID (base name: "ParentIndustryID")', function() {
+ // uncomment below and update the code to test the property parentIndustryID
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property level (base name: "Level")', function() {
+ // uncomment below and update the code to test the property level
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property path (base name: "Path")', function() {
+ // uncomment below and update the code to test the property path
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property slug (base name: "Slug")', function() {
+ // uncomment below and update the code to test the property slug
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property siteURL (base name: "SiteURL")', function() {
+ // uncomment below and update the code to test the property siteURL
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companies (base name: "Companies")', function() {
+ // uncomment below and update the code to test the property companies
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyProducts (base name: "CompanyProducts")', function() {
+ // uncomment below and update the code to test the property companyProducts
+ //var instance = new Research.Industry();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/IndustryRequest.spec.js b/client/research/test/model/IndustryRequest.spec.js
new file mode 100644
index 0000000..e88a47d
--- /dev/null
+++ b/client/research/test/model/IndustryRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.IndustryRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('IndustryRequest', function() {
+ it('should create an instance of IndustryRequest', function() {
+ // uncomment below and update the code to test IndustryRequest
+ //var instance = new Research.IndustryRequest();
+ //expect(instance).to.be.a(Research.IndustryRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Research.IndustryRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/IndustryResponse.spec.js b/client/research/test/model/IndustryResponse.spec.js
new file mode 100644
index 0000000..7b085de
--- /dev/null
+++ b/client/research/test/model/IndustryResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.IndustryResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('IndustryResponse', function() {
+ it('should create an instance of IndustryResponse', function() {
+ // uncomment below and update the code to test IndustryResponse
+ //var instance = new Research.IndustryResponse();
+ //expect(instance).to.be.a(Research.IndustryResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Research.IndustryResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Research.IndustryResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/InvalidError.spec.js b/client/research/test/model/InvalidError.spec.js
new file mode 100644
index 0000000..215d2ff
--- /dev/null
+++ b/client/research/test/model/InvalidError.spec.js
@@ -0,0 +1,83 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.InvalidError();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidError', function() {
+ it('should create an instance of InvalidError', function() {
+ // uncomment below and update the code to test InvalidError
+ //var instance = new Research.InvalidError();
+ //expect(instance).to.be.a(Research.InvalidError);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Research.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Research.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Research.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new Research.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/InvalidErrorAllOf.spec.js b/client/research/test/model/InvalidErrorAllOf.spec.js
new file mode 100644
index 0000000..40e52ca
--- /dev/null
+++ b/client/research/test/model/InvalidErrorAllOf.spec.js
@@ -0,0 +1,65 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.InvalidErrorAllOf();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidErrorAllOf', function() {
+ it('should create an instance of InvalidErrorAllOf', function() {
+ // uncomment below and update the code to test InvalidErrorAllOf
+ //var instance = new Research.InvalidErrorAllOf();
+ //expect(instance).to.be.a(Research.InvalidErrorAllOf);
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new Research.InvalidErrorAllOf();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Message.spec.js b/client/research/test/model/Message.spec.js
new file mode 100644
index 0000000..8b85941
--- /dev/null
+++ b/client/research/test/model/Message.spec.js
@@ -0,0 +1,77 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Message();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Message', function() {
+ it('should create an instance of Message', function() {
+ // uncomment below and update the code to test Message
+ //var instance = new Research.Message();
+ //expect(instance).to.be.a(Research.Message);
+ });
+
+ it('should have the property message (base name: "message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Research.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Research.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new Research.Message();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Observation.spec.js b/client/research/test/model/Observation.spec.js
new file mode 100644
index 0000000..26678eb
--- /dev/null
+++ b/client/research/test/model/Observation.spec.js
@@ -0,0 +1,125 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Observation();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Observation', function() {
+ it('should create an instance of Observation', function() {
+ // uncomment below and update the code to test Observation
+ //var instance = new Research.Observation();
+ //expect(instance).to.be.a(Research.Observation);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property factorID (base name: "FactorID")', function() {
+ // uncomment below and update the code to test the property factorID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property subjectType (base name: "SubjectType")', function() {
+ // uncomment below and update the code to test the property subjectType
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyProductID (base name: "companyProductID")', function() {
+ // uncomment below and update the code to test the property companyProductID
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property value (base name: "Value")', function() {
+ // uncomment below and update the code to test the property value
+ //var instance = new Research.Observation();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Pagination.spec.js b/client/research/test/model/Pagination.spec.js
new file mode 100644
index 0000000..dd02690
--- /dev/null
+++ b/client/research/test/model/Pagination.spec.js
@@ -0,0 +1,83 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Pagination();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Pagination', function() {
+ it('should create an instance of Pagination', function() {
+ // uncomment below and update the code to test Pagination
+ //var instance = new Research.Pagination();
+ //expect(instance).to.be.a(Research.Pagination);
+ });
+
+ it('should have the property limit (base name: "limit")', function() {
+ // uncomment below and update the code to test the property limit
+ //var instance = new Research.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagesize (base name: "pagesize")', function() {
+ // uncomment below and update the code to test the property pagesize
+ //var instance = new Research.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property poffset (base name: "poffset")', function() {
+ // uncomment below and update the code to test the property poffset
+ //var instance = new Research.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property setsize (base name: "setsize")', function() {
+ // uncomment below and update the code to test the property setsize
+ //var instance = new Research.Pagination();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/RequestMeta.spec.js b/client/research/test/model/RequestMeta.spec.js
new file mode 100644
index 0000000..7144080
--- /dev/null
+++ b/client/research/test/model/RequestMeta.spec.js
@@ -0,0 +1,65 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.RequestMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RequestMeta', function() {
+ it('should create an instance of RequestMeta', function() {
+ // uncomment below and update the code to test RequestMeta
+ //var instance = new Research.RequestMeta();
+ //expect(instance).to.be.a(Research.RequestMeta);
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Research.RequestMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/ResponseMeta.spec.js b/client/research/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..722dff3
--- /dev/null
+++ b/client/research/test/model/ResponseMeta.spec.js
@@ -0,0 +1,131 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be.a(Research.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagination (base name: "Pagination")', function() {
+ // uncomment below and update the code to test the property pagination
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Research.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/Topic.spec.js b/client/research/test/model/Topic.spec.js
new file mode 100644
index 0000000..bd101e8
--- /dev/null
+++ b/client/research/test/model/Topic.spec.js
@@ -0,0 +1,119 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.Topic();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Topic', function() {
+ it('should create an instance of Topic', function() {
+ // uncomment below and update the code to test Topic
+ //var instance = new Research.Topic();
+ //expect(instance).to.be.a(Research.Topic);
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property siteURL (base name: "SiteURL")', function() {
+ // uncomment below and update the code to test the property siteURL
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentTopicID (base name: "ParentTopicID")', function() {
+ // uncomment below and update the code to test the property parentTopicID
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property factors (base name: "Factors")', function() {
+ // uncomment below and update the code to test the property factors
+ //var instance = new Research.Topic();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/TopicRequest.spec.js b/client/research/test/model/TopicRequest.spec.js
new file mode 100644
index 0000000..9842475
--- /dev/null
+++ b/client/research/test/model/TopicRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.TopicRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TopicRequest', function() {
+ it('should create an instance of TopicRequest', function() {
+ // uncomment below and update the code to test TopicRequest
+ //var instance = new Research.TopicRequest();
+ //expect(instance).to.be.a(Research.TopicRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Research.TopicRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/research/test/model/TopicResponse.spec.js b/client/research/test/model/TopicResponse.spec.js
new file mode 100644
index 0000000..31794d8
--- /dev/null
+++ b/client/research/test/model/TopicResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * research
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Research);
+ }
+}(this, function(expect, Research) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Research.TopicResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TopicResponse', function() {
+ it('should create an instance of TopicResponse', function() {
+ // uncomment below and update the code to test TopicResponse
+ //var instance = new Research.TopicResponse();
+ //expect(instance).to.be.a(Research.TopicResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Research.TopicResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Research.TopicResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/.babelrc b/client/sf-gate/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/sf-gate/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/sf-gate/.gitignore b/client/sf-gate/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/sf-gate/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/sf-gate/.openapi-generator-ignore b/client/sf-gate/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/sf-gate/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/sf-gate/.openapi-generator/FILES b/client/sf-gate/.openapi-generator/FILES
new file mode 100644
index 0000000..36e108e
--- /dev/null
+++ b/client/sf-gate/.openapi-generator/FILES
@@ -0,0 +1,145 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Account.md
+docs/AccountRequest.md
+docs/AccountResponse.md
+docs/AccountsApi.md
+docs/Address.md
+docs/Cluster.md
+docs/ClusterRequest.md
+docs/ClusterResponse.md
+docs/ClustersApi.md
+docs/Contact.md
+docs/ContactRequest.md
+docs/ContactResponse.md
+docs/ContactsApi.md
+docs/Contract.md
+docs/ContractRequest.md
+docs/ContractResponse.md
+docs/ContractsApi.md
+docs/Database.md
+docs/DatabaseRequest.md
+docs/DatabaseResponse.md
+docs/DatabasesApi.md
+docs/DeleteResponse.md
+docs/Error.md
+docs/InvalidError.md
+docs/InvalidErrorAllOf.md
+docs/Message.md
+docs/Pagination.md
+docs/RequestMeta.md
+docs/ResponseMeta.md
+docs/Role.md
+docs/RoleRequest.md
+docs/RoleResponse.md
+docs/RolesApi.md
+docs/Template.md
+docs/TemplateResponse.md
+docs/TemplatesApi.md
+docs/Tenant.md
+docs/TenantRequest.md
+docs/TenantResponse.md
+docs/TenantUser.md
+docs/TenantsApi.md
+docs/User.md
+docs/UserResponse.md
+docs/UserRole.md
+docs/UsersApi.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/AccountsApi.js
+src/api/ClustersApi.js
+src/api/ContactsApi.js
+src/api/ContractsApi.js
+src/api/DatabasesApi.js
+src/api/RolesApi.js
+src/api/TemplatesApi.js
+src/api/TenantsApi.js
+src/api/UsersApi.js
+src/index.js
+src/model/Account.js
+src/model/AccountRequest.js
+src/model/AccountResponse.js
+src/model/Address.js
+src/model/Cluster.js
+src/model/ClusterRequest.js
+src/model/ClusterResponse.js
+src/model/Contact.js
+src/model/ContactRequest.js
+src/model/ContactResponse.js
+src/model/Contract.js
+src/model/ContractRequest.js
+src/model/ContractResponse.js
+src/model/Database.js
+src/model/DatabaseRequest.js
+src/model/DatabaseResponse.js
+src/model/DeleteResponse.js
+src/model/Error.js
+src/model/InvalidError.js
+src/model/InvalidErrorAllOf.js
+src/model/Message.js
+src/model/Pagination.js
+src/model/RequestMeta.js
+src/model/ResponseMeta.js
+src/model/Role.js
+src/model/RoleRequest.js
+src/model/RoleResponse.js
+src/model/Template.js
+src/model/TemplateResponse.js
+src/model/Tenant.js
+src/model/TenantRequest.js
+src/model/TenantResponse.js
+src/model/TenantUser.js
+src/model/User.js
+src/model/UserResponse.js
+src/model/UserRole.js
+test/api/AccountsApi.spec.js
+test/api/ClustersApi.spec.js
+test/api/ContactsApi.spec.js
+test/api/ContractsApi.spec.js
+test/api/DatabasesApi.spec.js
+test/api/RolesApi.spec.js
+test/api/TemplatesApi.spec.js
+test/api/TenantsApi.spec.js
+test/api/UsersApi.spec.js
+test/model/Account.spec.js
+test/model/AccountRequest.spec.js
+test/model/AccountResponse.spec.js
+test/model/Address.spec.js
+test/model/Cluster.spec.js
+test/model/ClusterRequest.spec.js
+test/model/ClusterResponse.spec.js
+test/model/Contact.spec.js
+test/model/ContactRequest.spec.js
+test/model/ContactResponse.spec.js
+test/model/Contract.spec.js
+test/model/ContractRequest.spec.js
+test/model/ContractResponse.spec.js
+test/model/Database.spec.js
+test/model/DatabaseRequest.spec.js
+test/model/DatabaseResponse.spec.js
+test/model/DeleteResponse.spec.js
+test/model/Error.spec.js
+test/model/InvalidError.spec.js
+test/model/InvalidErrorAllOf.spec.js
+test/model/Message.spec.js
+test/model/Pagination.spec.js
+test/model/RequestMeta.spec.js
+test/model/ResponseMeta.spec.js
+test/model/Role.spec.js
+test/model/RoleRequest.spec.js
+test/model/RoleResponse.spec.js
+test/model/Template.spec.js
+test/model/TemplateResponse.spec.js
+test/model/Tenant.spec.js
+test/model/TenantRequest.spec.js
+test/model/TenantResponse.spec.js
+test/model/TenantUser.spec.js
+test/model/User.spec.js
+test/model/UserResponse.spec.js
+test/model/UserRole.spec.js
diff --git a/client/sf-gate/.openapi-generator/VERSION b/client/sf-gate/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/sf-gate/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/sf-gate/.travis.yml b/client/sf-gate/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/sf-gate/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/sf-gate/README.md b/client/sf-gate/README.md
new file mode 100644
index 0000000..437a91c
--- /dev/null
+++ b/client/sf-gate/README.md
@@ -0,0 +1,203 @@
+# sf_gate
+
+SfGate - JavaScript client for sf_gate
+Customer Information Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install sf_gate --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your sf_gate from, and run:
+
+```shell
+npm link /path/to/
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+#### git
+
+If the library is hosted at a git repository, e.g.https://github.com/GIT_USER_ID/GIT_REPO_ID
+then install it via:
+
+```shell
+ npm install GIT_USER_ID/GIT_REPO_ID --save
+```
+
+### For browser
+
+The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
+the above steps with Node.js and installing browserify with `npm install -g browserify`,
+perform the following (assuming *main.js* is your entry file):
+
+```shell
+browserify main.js > bundle.js
+```
+
+Then include *bundle.js* in the HTML pages.
+
+### Webpack Configuration
+
+Using Webpack you may encounter the following error: "Module not found: Error:
+Cannot resolve module", most certainly you should disable AMD loader. Add/merge
+the following section to your webpack config:
+
+```javascript
+module: {
+ rules: [
+ {
+ parser: {
+ amd: false
+ }
+ }
+ ]
+}
+```
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following JS code:
+
+```javascript
+var SfGate = require('sf_gate');
+
+var defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+var ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = "YOUR API KEY"
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix['X-API-Key'] = "Token"
+
+var api = new SfGate.AccountsApi()
+var opts = {
+ 'accountId': "accountId_example" // {String} Taxnexus Record Id of an Account
+};
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.deleteAccount(opts, callback);
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*SfGate.AccountsApi* | [**deleteAccount**](docs/AccountsApi.md#deleteAccount) | **DELETE** /accounts | Delete An Account
+*SfGate.AccountsApi* | [**getAccounts**](docs/AccountsApi.md#getAccounts) | **GET** /accounts | Get a list of accounts
+*SfGate.AccountsApi* | [**postAccounts**](docs/AccountsApi.md#postAccounts) | **POST** /accounts | Add a new account to Taxnexus
+*SfGate.AccountsApi* | [**putAccount**](docs/AccountsApi.md#putAccount) | **PUT** /accounts | Update a single account
+*SfGate.ClustersApi* | [**getClusters**](docs/ClustersApi.md#getClusters) | **GET** /clusters | Get a list Clusters
+*SfGate.ClustersApi* | [**postClusters**](docs/ClustersApi.md#postClusters) | **POST** /clusters | Create new Clusters
+*SfGate.ClustersApi* | [**putClusters**](docs/ClustersApi.md#putClusters) | **PUT** /clusters | Update Clusters
+*SfGate.ContactsApi* | [**getContacts**](docs/ContactsApi.md#getContacts) | **GET** /contacts | Get a Contact record
+*SfGate.ContactsApi* | [**postContacts**](docs/ContactsApi.md#postContacts) | **POST** /contacts | Add a new Contacts to Taxnexus
+*SfGate.ContractsApi* | [**getContracts**](docs/ContractsApi.md#getContracts) | **GET** /contracts | Get a list of contracts
+*SfGate.ContractsApi* | [**postContracts**](docs/ContractsApi.md#postContracts) | **POST** /contracts | Add a new contract to Taxnexus
+*SfGate.DatabasesApi* | [**getDatabases**](docs/DatabasesApi.md#getDatabases) | **GET** /databases | Get a list Databases
+*SfGate.DatabasesApi* | [**postDatabases**](docs/DatabasesApi.md#postDatabases) | **POST** /databases | Create new Databases
+*SfGate.DatabasesApi* | [**putDatabases**](docs/DatabasesApi.md#putDatabases) | **PUT** /databases | Update Databases
+*SfGate.RolesApi* | [**getRoles**](docs/RolesApi.md#getRoles) | **GET** /roles | Get a list of Roles
+*SfGate.TemplatesApi* | [**getTemplates**](docs/TemplatesApi.md#getTemplates) | **GET** /templates | Get PDF Rendering Templates
+*SfGate.TenantsApi* | [**getTenants**](docs/TenantsApi.md#getTenants) | **GET** /tenants | Get a list Tenants
+*SfGate.TenantsApi* | [**putTenants**](docs/TenantsApi.md#putTenants) | **PUT** /tenants | Update Tenants
+*SfGate.TenantsApi* | [**tenants**](docs/TenantsApi.md#tenants) | **POST** /tenants | Create new Tenants
+*SfGate.UsersApi* | [**getUsers**](docs/UsersApi.md#getUsers) | **GET** /users | Get a list Users
+
+
+## Documentation for Models
+
+ - [SfGate.Account](docs/Account.md)
+ - [SfGate.AccountRequest](docs/AccountRequest.md)
+ - [SfGate.AccountResponse](docs/AccountResponse.md)
+ - [SfGate.Address](docs/Address.md)
+ - [SfGate.Cluster](docs/Cluster.md)
+ - [SfGate.ClusterRequest](docs/ClusterRequest.md)
+ - [SfGate.ClusterResponse](docs/ClusterResponse.md)
+ - [SfGate.Contact](docs/Contact.md)
+ - [SfGate.ContactRequest](docs/ContactRequest.md)
+ - [SfGate.ContactResponse](docs/ContactResponse.md)
+ - [SfGate.Contract](docs/Contract.md)
+ - [SfGate.ContractRequest](docs/ContractRequest.md)
+ - [SfGate.ContractResponse](docs/ContractResponse.md)
+ - [SfGate.Database](docs/Database.md)
+ - [SfGate.DatabaseRequest](docs/DatabaseRequest.md)
+ - [SfGate.DatabaseResponse](docs/DatabaseResponse.md)
+ - [SfGate.DeleteResponse](docs/DeleteResponse.md)
+ - [SfGate.Error](docs/Error.md)
+ - [SfGate.InvalidError](docs/InvalidError.md)
+ - [SfGate.InvalidErrorAllOf](docs/InvalidErrorAllOf.md)
+ - [SfGate.Message](docs/Message.md)
+ - [SfGate.Pagination](docs/Pagination.md)
+ - [SfGate.RequestMeta](docs/RequestMeta.md)
+ - [SfGate.ResponseMeta](docs/ResponseMeta.md)
+ - [SfGate.Role](docs/Role.md)
+ - [SfGate.RoleRequest](docs/RoleRequest.md)
+ - [SfGate.RoleResponse](docs/RoleResponse.md)
+ - [SfGate.Template](docs/Template.md)
+ - [SfGate.TemplateResponse](docs/TemplateResponse.md)
+ - [SfGate.Tenant](docs/Tenant.md)
+ - [SfGate.TenantRequest](docs/TenantRequest.md)
+ - [SfGate.TenantResponse](docs/TenantResponse.md)
+ - [SfGate.TenantUser](docs/TenantUser.md)
+ - [SfGate.User](docs/User.md)
+ - [SfGate.UserResponse](docs/UserResponse.md)
+ - [SfGate.UserRole](docs/UserRole.md)
+
+
+## Documentation for Authorization
+
+
+
+### ApiKeyAuth
+
+
+- **Type**: API key
+- **API key parameter name**: X-API-Key
+- **Location**: HTTP header
+
diff --git a/client/sf-gate/docs/Account.md b/client/sf-gate/docs/Account.md
new file mode 100644
index 0000000..56254b7
--- /dev/null
+++ b/client/sf-gate/docs/Account.md
@@ -0,0 +1,96 @@
+# SfGate.Account
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**tenantid** | **String** | tenant identifier | [optional]
+**accountnumber** | **String** | Account Number | [optional]
+**accountsource** | **String** | The marketing orgin of this account | [optional]
+**active** | **Boolean** | Active | [optional]
+**administrativelevel** | **String** | For tax authorities, this account's administrative level, e.g. Local, County, State or Federal | [optional]
+**amount** | **Number** | Rollup Tax Amount | [optional]
+**amountinvoiced** | **Number** | Amount Invoiced | [optional]
+**amountpaid** | **Number** | Amount Paid | [optional]
+**annualrevenue** | **Number** | Annual Revenue Estimate | [optional]
+**balance** | **Number** | Account Balance | [optional]
+**billingaddress** | [**Address**](Address.md) | | [optional]
+**billingcontactid** | **String** | Contact ID | [optional]
+**billingpreference** | **String** | Billing Preference | [optional]
+**businessaddress** | [**Address**](Address.md) | | [optional]
+**cannabiscustomer** | **Boolean** | Is this a cannabis customer? | [optional]
+**channelprogramlevelname** | **String** | Channel Program Level Name | [optional]
+**channelprogramname** | **String** | Channel Program Name | [optional]
+**clientenddate** | **String** | Client End Date | [optional]
+**clientstartdate** | **String** | Client Start Date | [optional]
+**companyid** | **String** | The Company ID of this Account | [optional]
+**coordinateid** | **String** | The Id of the geo coordinates of this account | [optional]
+**createdbyid** | **String** | Created By User ID | [optional]
+**createddate** | **String** | Created Date | [optional]
+**customerid** | **String** | Customer ID from source system | [optional]
+**customerpriority** | **String** | Customer Priority | [optional]
+**dandbcompanyid** | **String** | D-n-B Company | [optional]
+**dba** | **String** | This Account's 'Doing Business As' name | [optional]
+**defaultaddress** | [**Address**](Address.md) | | [optional]
+**defaultbackendid** | **String** | Default Backend ID | [optional]
+**defaultdeliverycontactid** | **String** | Default Delivery Address Contact ID | [optional]
+**defaultenduserid** | **String** | Default End User Contact ID | [optional]
+**description** | **String** | Description | [optional]
+**dunsnumber** | **String** | D-U-N-S Number | [optional]
+**ein** | **String** | EIN | [optional]
+**email** | **String** | Main Account Email | [optional]
+**enrollmentstatus** | **String** | Enrollment Status | [optional]
+**fax** | **String** | Fax | [optional]
+**id** | **String** | Taxnexus Account Id | [optional]
+**industry** | **String** | Industry | [optional]
+**iscustomerportal** | **Boolean** | Customer Portal Account | [optional]
+**ispartner** | **Boolean** | Partner Account | [optional]
+**ispcustomer** | **Boolean** | ISP Customer? | [optional]
+**jigsaw** | **String** | Data.com Key | [optional]
+**lastmodifiedbyid** | **String** | Last Modified By User ID | [optional]
+**lastmodifieddate** | **String** | Last Modified Date | [optional]
+**mspcustomer** | **Boolean** | MSP Customer? | [optional]
+**naicscode** | **String** | NAICS Code | [optional]
+**naicsdesc** | **String** | NAICS Description | [optional]
+**name** | **String** | Account Name | [optional]
+**numberofemployees** | **Number** | Employee Count Estimate | [optional]
+**numberoflocations** | **Number** | Number of Locations Estimate | [optional]
+**opencharges** | **Number** | Open Charges | [optional]
+**ordercontactid** | **String** | Vendor Order Contact ID | [optional]
+**orderemail** | **String** | Order Email | [optional]
+**ownerid** | **String** | Account Owner User ID | [optional]
+**ownership** | **String** | Ownership | [optional]
+**parentfk** | **String** | Parent Foreign Key | [optional]
+**parentid** | **String** | Parent Account | [optional]
+**phone** | **String** | Phone | [optional]
+**placeid** | **String** | The ID of the Place situs record that applies to this Account | [optional]
+**preparerid** | **String** | Tax Preparer Contact ID | [optional]
+**rating** | **String** | Rating | [optional]
+**ratingengineid** | **String** | Rating Engine identifier | [optional]
+**ref** | **String** | External Reference ID | [optional]
+**revenuebase** | **Number** | Rollup Revenue Base | [optional]
+**revenuenet** | **Number** | Rollup Revenue Net | [optional]
+**revenuenottaxable** | **Number** | Rollup Revenue Not Taxable | [optional]
+**shippingaddress** | [**Address**](Address.md) | | [optional]
+**shippingcensustract** | **String** | Shipping Census Tract | [optional]
+**shippingcounty** | **String** | Shipping County | [optional]
+**shippingcontactid** | **String** | Shipping Contact ID | [optional]
+**sic** | **String** | SIC Code | [optional]
+**sicdesc** | **String** | SIC Description | [optional]
+**site** | **String** | Account Site | [optional]
+**status** | **String** | Account Status | [optional]
+**taxexemption** | **String** | Tax Exemption | [optional]
+**taxontax** | **Number** | Rollup Tax On Tax | [optional]
+**telecomcustomer** | **Boolean** | Telecom Customer? | [optional]
+**tickersymbol** | **String** | Ticker Symbol | [optional]
+**tradestyle** | **String** | Tradestyle | [optional]
+**type** | **String** | Type | [optional]
+**unappliedpayments** | **Number** | Unapplied Payments | [optional]
+**unitbase** | **Number** | Rollup Unit Base | [optional]
+**upsellopportunity** | **String** | Upsell Opportunity | [optional]
+**website** | **String** | Website | [optional]
+**whmcsclientid** | **Number** | WHMCS Client ID | [optional]
+**xerocontactid** | **String** | Xero Contact ID | [optional]
+**yearstarted** | **String** | Year Started | [optional]
+
+
diff --git a/client/sf-gate/docs/AccountRequest.md b/client/sf-gate/docs/AccountRequest.md
new file mode 100644
index 0000000..9f0bcb2
--- /dev/null
+++ b/client/sf-gate/docs/AccountRequest.md
@@ -0,0 +1,10 @@
+# SfGate.AccountRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Account]**](Account.md) | | [optional]
+**meta** | [**RequestMeta**](RequestMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/AccountResponse.md b/client/sf-gate/docs/AccountResponse.md
new file mode 100644
index 0000000..49cb340
--- /dev/null
+++ b/client/sf-gate/docs/AccountResponse.md
@@ -0,0 +1,10 @@
+# SfGate.AccountResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Account]**](Account.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/AccountsApi.md b/client/sf-gate/docs/AccountsApi.md
new file mode 100644
index 0000000..1461242
--- /dev/null
+++ b/client/sf-gate/docs/AccountsApi.md
@@ -0,0 +1,230 @@
+# SfGate.AccountsApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteAccount**](AccountsApi.md#deleteAccount) | **DELETE** /accounts | Delete An Account
+[**getAccounts**](AccountsApi.md#getAccounts) | **GET** /accounts | Get a list of accounts
+[**postAccounts**](AccountsApi.md#postAccounts) | **POST** /accounts | Add a new account to Taxnexus
+[**putAccount**](AccountsApi.md#putAccount) | **PUT** /accounts | Update a single account
+
+
+
+## deleteAccount
+
+> DeleteResponse deleteAccount(opts)
+
+Delete An Account
+
+Delete Taxnexus Account record
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.AccountsApi();
+let opts = {
+ 'accountId': "accountId_example" // String | Taxnexus Record Id of an Account
+};
+apiInstance.deleteAccount(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+
+### Return type
+
+[**DeleteResponse**](DeleteResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## getAccounts
+
+> AccountResponse getAccounts(opts)
+
+Get a list of accounts
+
+Return a list of all available Accounts
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.AccountsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'name': "name_example", // String | The Name of this Object
+ 'offset': 789, // Number | How many objects to skip?
+ 'active': true, // Boolean | Only retrieve active records?
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'email': "email_example" // String | Email address used for identity lookup
+};
+apiInstance.getAccounts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postAccounts
+
+> AccountResponse postAccounts(accountRequest)
+
+Add a new account to Taxnexus
+
+Account record to be added
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.AccountsApi();
+let accountRequest = new SfGate.AccountRequest(); // AccountRequest | A request with an array of Account Objects
+apiInstance.postAccounts(accountRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountRequest** | [**AccountRequest**](AccountRequest.md)| A request with an array of Account Objects |
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putAccount
+
+> AccountResponse putAccount(accountRequest)
+
+Update a single account
+
+Update a single account specified by accountId
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.AccountsApi();
+let accountRequest = new SfGate.AccountRequest(); // AccountRequest | A request with an array of Account Objects
+apiInstance.putAccount(accountRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **accountRequest** | [**AccountRequest**](AccountRequest.md)| A request with an array of Account Objects |
+
+### Return type
+
+[**AccountResponse**](AccountResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Address.md b/client/sf-gate/docs/Address.md
new file mode 100644
index 0000000..649084c
--- /dev/null
+++ b/client/sf-gate/docs/Address.md
@@ -0,0 +1,15 @@
+# SfGate.Address
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**city** | **String** | City |
+**country** | **String** | Country full name | [optional]
+**countrycode** | **String** | Country Code | [optional]
+**postalcode** | **String** | Postal Code | [optional]
+**state** | **String** | State full name | [optional]
+**statecode** | **String** | State Code |
+**street** | **String** | Street number and name | [optional]
+
+
diff --git a/client/sf-gate/docs/Cluster.md b/client/sf-gate/docs/Cluster.md
new file mode 100644
index 0000000..fe518fc
--- /dev/null
+++ b/client/sf-gate/docs/Cluster.md
@@ -0,0 +1,25 @@
+# SfGate.Cluster
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Taxnexus Record Id | [optional]
+**name** | **String** | Cluster Name | [optional]
+**createdbyid** | **String** | Created By | [optional]
+**createddate** | **String** | Created Date | [optional]
+**description** | **String** | Description | [optional]
+**environment** | **String** | Environment | [optional]
+**ref** | **String** | External Reference | [optional]
+**gateway** | **String** | Gateway | [optional]
+**ipAddress** | **String** | IP Address | [optional]
+**lastmodifiedbyid** | **String** | Last Modified By | [optional]
+**lastmodifieddate** | **String** | Last Modified Date | [optional]
+**ownerid** | **String** | Owner | [optional]
+**status** | **String** | Status | [optional]
+**subnet** | **String** | Subnet | [optional]
+**tenantid** | **String** | tenantid | [optional]
+**type** | **String** | Type | [optional]
+**zone** | **String** | Zone | [optional]
+
+
diff --git a/client/sf-gate/docs/ClusterRequest.md b/client/sf-gate/docs/ClusterRequest.md
new file mode 100644
index 0000000..658eb21
--- /dev/null
+++ b/client/sf-gate/docs/ClusterRequest.md
@@ -0,0 +1,10 @@
+# SfGate.ClusterRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Cluster]**](Cluster.md) | |
+**meta** | [**RequestMeta**](RequestMeta.md) | |
+
+
diff --git a/client/sf-gate/docs/ClusterResponse.md b/client/sf-gate/docs/ClusterResponse.md
new file mode 100644
index 0000000..e386e23
--- /dev/null
+++ b/client/sf-gate/docs/ClusterResponse.md
@@ -0,0 +1,10 @@
+# SfGate.ClusterResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Cluster]**](Cluster.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/ClustersApi.md b/client/sf-gate/docs/ClustersApi.md
new file mode 100644
index 0000000..c889a33
--- /dev/null
+++ b/client/sf-gate/docs/ClustersApi.md
@@ -0,0 +1,170 @@
+# SfGate.ClustersApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getClusters**](ClustersApi.md#getClusters) | **GET** /clusters | Get a list Clusters
+[**postClusters**](ClustersApi.md#postClusters) | **POST** /clusters | Create new Clusters
+[**putClusters**](ClustersApi.md#putClusters) | **PUT** /clusters | Update Clusters
+
+
+
+## getClusters
+
+> ClusterResponse getClusters(opts)
+
+Get a list Clusters
+
+Return a list of Cluster records from the datastore
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ClustersApi();
+let opts = {
+ 'clusterId': "clusterId_example", // String | Taxnexus Record Id of a Cluster
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip?
+};
+apiInstance.getClusters(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterId** | **String**| Taxnexus Record Id of a Cluster | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postClusters
+
+> ClusterResponse postClusters(clusterRequest)
+
+Create new Clusters
+
+Create Clusters in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ClustersApi();
+let clusterRequest = new SfGate.ClusterRequest(); // ClusterRequest | An array of Cluster records
+apiInstance.postClusters(clusterRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterRequest** | [**ClusterRequest**](ClusterRequest.md)| An array of Cluster records |
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putClusters
+
+> ClusterResponse putClusters(clusterRequest)
+
+Update Clusters
+
+Update Cluster in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ClustersApi();
+let clusterRequest = new SfGate.ClusterRequest(); // ClusterRequest | An array of Cluster records
+apiInstance.putClusters(clusterRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **clusterRequest** | [**ClusterRequest**](ClusterRequest.md)| An array of Cluster records |
+
+### Return type
+
+[**ClusterResponse**](ClusterResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Contact.md b/client/sf-gate/docs/Contact.md
new file mode 100644
index 0000000..4c4ed56
--- /dev/null
+++ b/client/sf-gate/docs/Contact.md
@@ -0,0 +1,53 @@
+# SfGate.Contact
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**tenantid** | **String** | tenant identifier | [optional]
+**accountid** | **String** | The primary account ID of this contact | [optional]
+**assistantname** | **String** | Assistant Name | [optional]
+**assistantphone** | **String** | Asst. Phone | [optional]
+**birthdate** | **String** | Birthdate | [optional]
+**createdbyid** | **String** | Created By User ID | [optional]
+**createddate** | **String** | Created Date | [optional]
+**department** | **String** | Department | [optional]
+**description** | **String** | Description | [optional]
+**donotcall** | **Boolean** | Do Not Call? | [optional]
+**email** | **String** | Email address | [optional]
+**emailbounceddate** | **String** | Email Bounce Date | [optional]
+**emailbouncedreason** | **String** | Email Bounce Reason | [optional]
+**enrollmentstatus** | **String** | Taxnexus Enrollment Status | [optional]
+**fax** | **String** | Fax Number | [optional]
+**firstname** | **String** | First Name | [optional]
+**hasoptedoutofemail** | **Boolean** | Email Opt Out | [optional]
+**hasoptedoutoffax** | **Boolean** | Fax Opt Out | [optional]
+**homephone** | **String** | Home Phone | [optional]
+**id** | **String** | Taxnexus Record Id | [optional]
+**isemailbounced** | **Boolean** | Does this contact have bounced emails? | [optional]
+**isprovisioned** | **Boolean** | Is Provisioned? | [optional]
+**lastmodifiedbyid** | **String** | Last Modified By User ID | [optional]
+**lastmodifieddate** | **String** | Last Modified Date | [optional]
+**lastname** | **String** | Last Name | [optional]
+**leadsource** | **String** | Lead Source | [optional]
+**level** | **String** | Level | [optional]
+**linkedin** | **String** | LinkedIn Page | [optional]
+**mailingaddress** | [**Address**](Address.md) | | [optional]
+**mailinglists** | **String** | Mailing Lists | [optional]
+**mobilephone** | **String** | Mobile Phone | [optional]
+**name** | **String** | Full Name | [optional]
+**otheraddress** | [**Address**](Address.md) | | [optional]
+**otherphone** | **String** | Other Phone | [optional]
+**ownerid** | **String** | The User ID of the user who owns this Contact | [optional]
+**personalemail** | **String** | Personal Email Address for this Contact | [optional]
+**phone** | **String** | Phone Number | [optional]
+**photourl** | **String** | URL of a photograph of this User | [optional]
+**recruitingstatus** | **String** | Recruiting Status | [optional]
+**ref** | **String** | External reference to this contact, if any | [optional]
+**reportstoid** | **String** | Reports To Contact ID | [optional]
+**salutation** | **String** | Contact Salutation | [optional]
+**status** | **String** | The Contact Status | [optional]
+**title** | **String** | Contact Title | [optional]
+**type** | **String** | Contact Type | [optional]
+
+
diff --git a/client/sf-gate/docs/ContactRequest.md b/client/sf-gate/docs/ContactRequest.md
new file mode 100644
index 0000000..855a40d
--- /dev/null
+++ b/client/sf-gate/docs/ContactRequest.md
@@ -0,0 +1,10 @@
+# SfGate.ContactRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contact]**](Contact.md) | |
+**meta** | [**RequestMeta**](RequestMeta.md) | |
+
+
diff --git a/client/sf-gate/docs/ContactResponse.md b/client/sf-gate/docs/ContactResponse.md
new file mode 100644
index 0000000..25f9b3f
--- /dev/null
+++ b/client/sf-gate/docs/ContactResponse.md
@@ -0,0 +1,10 @@
+# SfGate.ContactResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contact]**](Contact.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/ContactsApi.md b/client/sf-gate/docs/ContactsApi.md
new file mode 100644
index 0000000..8a7134d
--- /dev/null
+++ b/client/sf-gate/docs/ContactsApi.md
@@ -0,0 +1,126 @@
+# SfGate.ContactsApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getContacts**](ContactsApi.md#getContacts) | **GET** /contacts | Get a Contact record
+[**postContacts**](ContactsApi.md#postContacts) | **POST** /contacts | Add a new Contacts to Taxnexus
+
+
+
+## getContacts
+
+> ContactResponse getContacts(opts)
+
+Get a Contact record
+
+Retrieve Contact records from the datastore
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ContactsApi();
+let opts = {
+ 'contactId': "contactId_example", // String | Taxnexus Record Id of a Contact
+ 'limit': 789, // Number | How many objects to return at one time
+ 'name': "name_example", // String | The Name of this Object
+ 'offset': 789, // Number | How many objects to skip?
+ 'active': true, // Boolean | Only retrieve active records?
+ 'accountId': "accountId_example", // String | Taxnexus Record Id of an Account
+ 'email': "email_example" // String | Email address used for identity lookup
+};
+apiInstance.getContacts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactId** | **String**| Taxnexus Record Id of a Contact | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **name** | **String**| The Name of this Object | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **accountId** | **String**| Taxnexus Record Id of an Account | [optional]
+ **email** | **String**| Email address used for identity lookup | [optional]
+
+### Return type
+
+[**ContactResponse**](ContactResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postContacts
+
+> ContactResponse postContacts(contactRequest)
+
+Add a new Contacts to Taxnexus
+
+Contacts record to be added
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ContactsApi();
+let contactRequest = new SfGate.ContactRequest(); // ContactRequest | An array of new Contact records
+apiInstance.postContacts(contactRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contactRequest** | [**ContactRequest**](ContactRequest.md)| An array of new Contact records |
+
+### Return type
+
+[**ContactResponse**](ContactResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Contract.md b/client/sf-gate/docs/Contract.md
new file mode 100644
index 0000000..d45e64a
--- /dev/null
+++ b/client/sf-gate/docs/Contract.md
@@ -0,0 +1,38 @@
+# SfGate.Contract
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accountID** | **String** | Account | [optional]
+**activatedByID** | **String** | Activated By | [optional]
+**activatedDate** | **String** | Activated Date | [optional]
+**billingAddress** | [**Address**](Address.md) | | [optional]
+**billingContactID** | **String** | Billing Contact | [optional]
+**companySignedDate** | **String** | Company Signed Date | [optional]
+**companySignedID** | **String** | Company Signed By | [optional]
+**contractNumber** | **String** | Contract Number | [optional]
+**contractTerm** | **Number** | Contract Term (months) | [optional]
+**createdByID** | **String** | Created By User ID | [optional]
+**createdDate** | **String** | Created Date | [optional]
+**customerSignedDate** | **String** | Customer Signed Date | [optional]
+**customerSignedID** | **String** | Customer Signed By | [optional]
+**customerSignedTitle** | **String** | Customer Signed Title | [optional]
+**defaultEndUserID** | **String** | End User | [optional]
+**description** | **String** | Description | [optional]
+**endDate** | **String** | Contract End Date | [optional]
+**hourlyRate** | **Number** | Hourly Rate | [optional]
+**ID** | **String** | Telnexus Record Id | [optional]
+**lastModifiedByID** | **String** | Last Modified By User ID | [optional]
+**lastModifiedDate** | **String** | Last Modified Date | [optional]
+**name** | **String** | Contract Name | [optional]
+**paymentMethodID** | **String** | Payment Method | [optional]
+**paymentTerms** | **String** | Payment Terms | [optional]
+**perpetual** | **Boolean** | Perpetual Agreement? | [optional]
+**shippingAddress** | [**Address**](Address.md) | | [optional]
+**shippingContactID** | **String** | Shipping Contact | [optional]
+**startDate** | **String** | Contract Start Date | [optional]
+**status** | **String** | Status | [optional]
+**tenantID** | **String** | Tenant Identifier | [optional]
+
+
diff --git a/client/sf-gate/docs/ContractRequest.md b/client/sf-gate/docs/ContractRequest.md
new file mode 100644
index 0000000..ad84209
--- /dev/null
+++ b/client/sf-gate/docs/ContractRequest.md
@@ -0,0 +1,9 @@
+# SfGate.ContractRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contract]**](Contract.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/ContractResponse.md b/client/sf-gate/docs/ContractResponse.md
new file mode 100644
index 0000000..fefe700
--- /dev/null
+++ b/client/sf-gate/docs/ContractResponse.md
@@ -0,0 +1,10 @@
+# SfGate.ContractResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Contract]**](Contract.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/ContractsApi.md b/client/sf-gate/docs/ContractsApi.md
new file mode 100644
index 0000000..d11067e
--- /dev/null
+++ b/client/sf-gate/docs/ContractsApi.md
@@ -0,0 +1,120 @@
+# SfGate.ContractsApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getContracts**](ContractsApi.md#getContracts) | **GET** /contracts | Get a list of contracts
+[**postContracts**](ContractsApi.md#postContracts) | **POST** /contracts | Add a new contract to Taxnexus
+
+
+
+## getContracts
+
+> ContractResponse getContracts(opts)
+
+Get a list of contracts
+
+Return a list of all available Contracts
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ContractsApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'active': true, // Boolean | Only retrieve active records?
+ 'contractId': "contractId_example" // String | Taxnexus Contact record ID
+};
+apiInstance.getContracts(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **contractId** | **String**| Taxnexus Contact record ID | [optional]
+
+### Return type
+
+[**ContractResponse**](ContractResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postContracts
+
+> ContractResponse postContracts(contractsRequest)
+
+Add a new contract to Taxnexus
+
+Contract record to be added
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.ContractsApi();
+let contractsRequest = new SfGate.ContractRequest(); // ContractRequest | An array of new Contract records
+apiInstance.postContracts(contractsRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **contractsRequest** | [**ContractRequest**](ContractRequest.md)| An array of new Contract records |
+
+### Return type
+
+[**ContractResponse**](ContractResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Database.md b/client/sf-gate/docs/Database.md
new file mode 100644
index 0000000..696d5bd
--- /dev/null
+++ b/client/sf-gate/docs/Database.md
@@ -0,0 +1,21 @@
+# SfGate.Database
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**active** | **Boolean** | Is this database active? | [optional]
+**clusterid** | **String** | The ID of the Cluster in which this database is deployed | [optional]
+**createdbyid** | **String** | Created By | [optional]
+**createddate** | **String** | Created Date | [optional]
+**databasename** | **String** | The name of the physical database in the cluster | [optional]
+**dsn** | **String** | Database connection string | [optional]
+**id** | **String** | Record Id | [optional]
+**lastmodifiedbyid** | **String** | Last Modified By | [optional]
+**lastmodifieddate** | **String** | Last Modifed Date | [optional]
+**microservices** | **String** | List of Taxnexus microservices implemented by this Database | [optional]
+**status** | **String** | The current status of this Tenant | [optional]
+**tenantid** | **String** | The ID of the tenant who owns this Database | [optional]
+**type** | **String** | The type of Database (mysql, etc) | [optional]
+
+
diff --git a/client/sf-gate/docs/DatabaseRequest.md b/client/sf-gate/docs/DatabaseRequest.md
new file mode 100644
index 0000000..d5025ec
--- /dev/null
+++ b/client/sf-gate/docs/DatabaseRequest.md
@@ -0,0 +1,10 @@
+# SfGate.DatabaseRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Database]**](Database.md) | | [optional]
+**meta** | [**RequestMeta**](RequestMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/DatabaseResponse.md b/client/sf-gate/docs/DatabaseResponse.md
new file mode 100644
index 0000000..cd0e5f7
--- /dev/null
+++ b/client/sf-gate/docs/DatabaseResponse.md
@@ -0,0 +1,10 @@
+# SfGate.DatabaseResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Database]**](Database.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/DatabasesApi.md b/client/sf-gate/docs/DatabasesApi.md
new file mode 100644
index 0000000..0965f44
--- /dev/null
+++ b/client/sf-gate/docs/DatabasesApi.md
@@ -0,0 +1,170 @@
+# SfGate.DatabasesApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getDatabases**](DatabasesApi.md#getDatabases) | **GET** /databases | Get a list Databases
+[**postDatabases**](DatabasesApi.md#postDatabases) | **POST** /databases | Create new Databases
+[**putDatabases**](DatabasesApi.md#putDatabases) | **PUT** /databases | Update Databases
+
+
+
+## getDatabases
+
+> DatabaseResponse getDatabases(opts)
+
+Get a list Databases
+
+Return a list of Database records from the datastore
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.DatabasesApi();
+let opts = {
+ 'databaseId': "databaseId_example", // String | Taxnexus Record Id of a Database
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip?
+};
+apiInstance.getDatabases(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseId** | **String**| Taxnexus Record Id of a Database | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## postDatabases
+
+> DatabaseResponse postDatabases(databaseRequest)
+
+Create new Databases
+
+Create Databases in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.DatabasesApi();
+let databaseRequest = new SfGate.DatabaseRequest(); // DatabaseRequest | An array of Database records
+apiInstance.postDatabases(databaseRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseRequest** | [**DatabaseRequest**](DatabaseRequest.md)| An array of Database records |
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## putDatabases
+
+> DatabaseResponse putDatabases(databaseRequest)
+
+Update Databases
+
+Update Database in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.DatabasesApi();
+let databaseRequest = new SfGate.DatabaseRequest(); // DatabaseRequest | An array of Database records
+apiInstance.putDatabases(databaseRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **databaseRequest** | [**DatabaseRequest**](DatabaseRequest.md)| An array of Database records |
+
+### Return type
+
+[**DatabaseResponse**](DatabaseResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/DeleteResponse.md b/client/sf-gate/docs/DeleteResponse.md
new file mode 100644
index 0000000..714f865
--- /dev/null
+++ b/client/sf-gate/docs/DeleteResponse.md
@@ -0,0 +1,10 @@
+# SfGate.DeleteResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Message]**](Message.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/Error.md b/client/sf-gate/docs/Error.md
new file mode 100644
index 0000000..267e89f
--- /dev/null
+++ b/client/sf-gate/docs/Error.md
@@ -0,0 +1,11 @@
+# SfGate.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+
+
diff --git a/client/sf-gate/docs/InvalidError.md b/client/sf-gate/docs/InvalidError.md
new file mode 100644
index 0000000..8acae25
--- /dev/null
+++ b/client/sf-gate/docs/InvalidError.md
@@ -0,0 +1,12 @@
+# SfGate.InvalidError
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/sf-gate/docs/InvalidErrorAllOf.md b/client/sf-gate/docs/InvalidErrorAllOf.md
new file mode 100644
index 0000000..e6215f0
--- /dev/null
+++ b/client/sf-gate/docs/InvalidErrorAllOf.md
@@ -0,0 +1,9 @@
+# SfGate.InvalidErrorAllOf
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**details** | **[String]** | | [optional]
+
+
diff --git a/client/sf-gate/docs/Message.md b/client/sf-gate/docs/Message.md
new file mode 100644
index 0000000..1b55f1a
--- /dev/null
+++ b/client/sf-gate/docs/Message.md
@@ -0,0 +1,11 @@
+# SfGate.Message
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**message** | **String** | | [optional]
+**ref** | **String** | | [optional]
+**status** | **Number** | | [optional]
+
+
diff --git a/client/sf-gate/docs/Pagination.md b/client/sf-gate/docs/Pagination.md
new file mode 100644
index 0000000..7e970b7
--- /dev/null
+++ b/client/sf-gate/docs/Pagination.md
@@ -0,0 +1,12 @@
+# SfGate.Pagination
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**limit** | **Number** | | [optional]
+**pagesize** | **Number** | | [optional]
+**poffset** | **Number** | | [optional]
+**setsize** | **Number** | | [optional]
+
+
diff --git a/client/sf-gate/docs/RequestMeta.md b/client/sf-gate/docs/RequestMeta.md
new file mode 100644
index 0000000..135c722
--- /dev/null
+++ b/client/sf-gate/docs/RequestMeta.md
@@ -0,0 +1,9 @@
+# SfGate.RequestMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**taxnexusAccount** | **String** | Taxnexus Account Number of the Reseller or OEM |
+
+
diff --git a/client/sf-gate/docs/ResponseMeta.md b/client/sf-gate/docs/ResponseMeta.md
new file mode 100644
index 0000000..940f880
--- /dev/null
+++ b/client/sf-gate/docs/ResponseMeta.md
@@ -0,0 +1,20 @@
+# SfGate.ResponseMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contact** | **String** | Microservice Contact Info | [optional]
+**copyright** | **String** | Copyright Info | [optional]
+**license** | **String** | License Information and Restrictions | [optional]
+**operationID** | **String** | Operation ID | [optional]
+**pagination** | [**Pagination**](Pagination.md) | | [optional]
+**requestIP** | **String** | Request IP Address | [optional]
+**requestType** | **String** | Request Type | [optional]
+**requestURL** | **String** | Request URL | [optional]
+**serverInfo** | **String** | Data Server Info | [optional]
+**serverResponseTime** | **String** | Data Server Response Time (ms) | [optional]
+**serverTimestamp** | **String** | Backend Server Timestamp | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number used for recording transactions | [optional]
+
+
diff --git a/client/sf-gate/docs/Role.md b/client/sf-gate/docs/Role.md
new file mode 100644
index 0000000..d0afb3c
--- /dev/null
+++ b/client/sf-gate/docs/Role.md
@@ -0,0 +1,17 @@
+# SfGate.Role
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | record id | [optional]
+**auth0roleid** | **String** | the corresponding auth0 role | [optional]
+**createdbyid** | **String** | created by | [optional]
+**createddate** | **String** | created date | [optional]
+**description** | **String** | role description | [optional]
+**lastmodifiedbyid** | **String** | last modified by | [optional]
+**lastmodifieddate** | **String** | last modifed date | [optional]
+**rolename** | **String** | the name of this role | [optional]
+**tenantid** | **String** | the id of the tenant that owns this role | [optional]
+
+
diff --git a/client/sf-gate/docs/RoleRequest.md b/client/sf-gate/docs/RoleRequest.md
new file mode 100644
index 0000000..ce7d213
--- /dev/null
+++ b/client/sf-gate/docs/RoleRequest.md
@@ -0,0 +1,10 @@
+# SfGate.RoleRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Role]**](Role.md) | | [optional]
+**meta** | [**RequestMeta**](RequestMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/RoleResponse.md b/client/sf-gate/docs/RoleResponse.md
new file mode 100644
index 0000000..6017ae3
--- /dev/null
+++ b/client/sf-gate/docs/RoleResponse.md
@@ -0,0 +1,10 @@
+# SfGate.RoleResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Role]**](Role.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/RolesApi.md b/client/sf-gate/docs/RolesApi.md
new file mode 100644
index 0000000..d78c062
--- /dev/null
+++ b/client/sf-gate/docs/RolesApi.md
@@ -0,0 +1,66 @@
+# SfGate.RolesApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getRoles**](RolesApi.md#getRoles) | **GET** /roles | Get a list of Roles
+
+
+
+## getRoles
+
+> RoleResponse getRoles(opts)
+
+Get a list of Roles
+
+Return a list of Roles
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.RolesApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'roleId': "roleId_example" // String | Taxnexus Id of the Role to be retrieved
+};
+apiInstance.getRoles(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **roleId** | **String**| Taxnexus Id of the Role to be retrieved | [optional]
+
+### Return type
+
+[**RoleResponse**](RoleResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Template.md b/client/sf-gate/docs/Template.md
new file mode 100644
index 0000000..3a8119f
--- /dev/null
+++ b/client/sf-gate/docs/Template.md
@@ -0,0 +1,24 @@
+# SfGate.Template
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**tenantid** | **String** | tenant identifier | [optional]
+**companyID** | **String** | Company | [optional]
+**createdByID** | **String** | | [optional]
+**createdDate** | **String** | | [optional]
+**description** | **String** | Description | [optional]
+**HTML** | **Blob** | HTML Body | [optional]
+**ID** | **String** | Taxnexus Record Id | [optional]
+**isActive** | **Boolean** | Active? | [optional]
+**isMaster** | **Boolean** | Master Template? | [optional]
+**lastModifiedByID** | **String** | | [optional]
+**lastModifiedDate** | **String** | | [optional]
+**name** | **String** | Template Name | [optional]
+**objectType** | **String** | Object | [optional]
+**recordTypeName** | **String** | Record Type Name | [optional]
+**type** | **String** | Type | [optional]
+**URL** | **String** | URL | [optional]
+
+
diff --git a/client/sf-gate/docs/TemplateResponse.md b/client/sf-gate/docs/TemplateResponse.md
new file mode 100644
index 0000000..bb9d8d4
--- /dev/null
+++ b/client/sf-gate/docs/TemplateResponse.md
@@ -0,0 +1,10 @@
+# SfGate.TemplateResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Template]**](Template.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/TemplatesApi.md b/client/sf-gate/docs/TemplatesApi.md
new file mode 100644
index 0000000..dbc1c0f
--- /dev/null
+++ b/client/sf-gate/docs/TemplatesApi.md
@@ -0,0 +1,66 @@
+# SfGate.TemplatesApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getTemplates**](TemplatesApi.md#getTemplates) | **GET** /templates | Get PDF Rendering Templates
+
+
+
+## getTemplates
+
+> TemplateResponse getTemplates(opts)
+
+Get PDF Rendering Templates
+
+Returns the PDF rendering template, or a link to where to get the template
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.TemplatesApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'templateId': "templateId_example" // String | Taxnexus Record Id of a Template
+};
+apiInstance.getTemplates(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **templateId** | **String**| Taxnexus Record Id of a Template | [optional]
+
+### Return type
+
+[**TemplateResponse**](TemplateResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/Tenant.md b/client/sf-gate/docs/Tenant.md
new file mode 100644
index 0000000..ffea94c
--- /dev/null
+++ b/client/sf-gate/docs/Tenant.md
@@ -0,0 +1,22 @@
+# SfGate.Tenant
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **String** | Record Id | [optional]
+**accountid** | **String** | The Account that owns this Tenant | [optional]
+**active** | **Boolean** | Is this Tenant currently active? | [optional]
+**createdbyid** | **String** | Created By | [optional]
+**createddate** | **String** | Created Date | [optional]
+**lastmodifiedbyid** | **String** | Last Modified By | [optional]
+**lastmodifieddate** | **String** | Last Modifed Date | [optional]
+**status** | **String** | The current status of this Tenant | [optional]
+**tenantname** | **String** | Name of the Tenant Resource | [optional]
+**type** | **String** | Type of tenant | [optional]
+**version** | **String** | The version number of the Tenant Onboarding system used to create this tenant | [optional]
+**databases** | [**[Database]**](Database.md) | | [optional]
+**roles** | [**[Role]**](Role.md) | | [optional]
+**tenantusers** | [**[TenantUser]**](TenantUser.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/TenantRequest.md b/client/sf-gate/docs/TenantRequest.md
new file mode 100644
index 0000000..ecbe249
--- /dev/null
+++ b/client/sf-gate/docs/TenantRequest.md
@@ -0,0 +1,10 @@
+# SfGate.TenantRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Tenant]**](Tenant.md) | | [optional]
+**meta** | [**RequestMeta**](RequestMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/TenantResponse.md b/client/sf-gate/docs/TenantResponse.md
new file mode 100644
index 0000000..a1b82a0
--- /dev/null
+++ b/client/sf-gate/docs/TenantResponse.md
@@ -0,0 +1,10 @@
+# SfGate.TenantResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Tenant]**](Tenant.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/TenantUser.md b/client/sf-gate/docs/TenantUser.md
new file mode 100644
index 0000000..fe36320
--- /dev/null
+++ b/client/sf-gate/docs/TenantUser.md
@@ -0,0 +1,11 @@
+# SfGate.TenantUser
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**accesslevel** | **String** | The Tenant access level for this User | [optional]
+**tenantid** | **String** | The Tenant ID | [optional]
+**userid** | **String** | The User ID | [optional]
+
+
diff --git a/client/sf-gate/docs/TenantsApi.md b/client/sf-gate/docs/TenantsApi.md
new file mode 100644
index 0000000..71e0826
--- /dev/null
+++ b/client/sf-gate/docs/TenantsApi.md
@@ -0,0 +1,164 @@
+# SfGate.TenantsApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getTenants**](TenantsApi.md#getTenants) | **GET** /tenants | Get a list Tenants
+[**putTenants**](TenantsApi.md#putTenants) | **PUT** /tenants | Update Tenants
+[**tenants**](TenantsApi.md#tenants) | **POST** /tenants | Create new Tenants
+
+
+
+## getTenants
+
+> TenantResponse getTenants(opts)
+
+Get a list Tenants
+
+Return a list of Tenant records from the datastore
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.TenantsApi();
+let opts = {
+ 'tenantId': "tenantId_example", // String | Taxnexus Record Id of a Tenant
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789 // Number | How many objects to skip?
+};
+apiInstance.getTenants(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tenantId** | **String**| Taxnexus Record Id of a Tenant | [optional]
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+
+## putTenants
+
+> TenantResponse putTenants(cTenantRequest)
+
+Update Tenants
+
+Update Tenant in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.TenantsApi();
+let cTenantRequest = new SfGate.TenantRequest(); // TenantRequest | An array of Tenant records
+apiInstance.putTenants(cTenantRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **cTenantRequest** | [**TenantRequest**](TenantRequest.md)| An array of Tenant records |
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+
+## tenants
+
+> TenantResponse tenants(cTenantRequest)
+
+Create new Tenants
+
+Create Tenants in Taxnexus
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+
+let apiInstance = new SfGate.TenantsApi();
+let cTenantRequest = new SfGate.TenantRequest(); // TenantRequest | An array of Tenant records
+apiInstance.tenants(cTenantRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **cTenantRequest** | [**TenantRequest**](TenantRequest.md)| An array of Tenant records |
+
+### Return type
+
+[**TenantResponse**](TenantResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/sf-gate/docs/User.md b/client/sf-gate/docs/User.md
new file mode 100644
index 0000000..a4ec8d7
--- /dev/null
+++ b/client/sf-gate/docs/User.md
@@ -0,0 +1,66 @@
+# SfGate.User
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**tenantid** | **String** | | [optional]
+**aboutme** | **String** | About Me | [optional]
+**accountid** | **String** | Account ID | [optional]
+**address** | [**Address**](Address.md) | | [optional]
+**alias** | **String** | Alias | [optional]
+**apikey** | **String** | API Key | [optional]
+**auth0userid** | **String** | Auth0 User ID | [optional]
+**communitynickname** | **String** | Nickname | [optional]
+**companyname** | **String** | Company Name | [optional]
+**contactid** | **String** | Contact | [optional]
+**createdbyid** | **String** | Created User ID | [optional]
+**createddate** | **String** | Date Created | [optional]
+**delegatedapproverid** | **String** | Delegated Approver | [optional]
+**department** | **String** | Department | [optional]
+**division** | **String** | Division | [optional]
+**email** | **String** | Email address | [optional]
+**employeenumber** | **String** | Employee Number | [optional]
+**endday** | **String** | Time day ends | [optional]
+**environment** | **String** | Environment | [optional]
+**extension** | **String** | Extension | [optional]
+**fabricapikey** | **String** | Fabric API Key | [optional]
+**fax** | **String** | Fax | [optional]
+**firstname** | **String** | The first name | [optional]
+**forecastenabled** | **Boolean** | Allow Forecasting | [optional]
+**fullphotourl** | **String** | Full Photo URL | [optional]
+**id** | **String** | Taxnexus ID | [optional]
+**isactive** | **Boolean** | Active | [optional]
+**isportalenabled** | **Boolean** | Is the user enabled for Communities? | [optional]
+**isprofilephotoactive** | **Boolean** | Has Profile Photo | [optional]
+**issystemcontrolled** | **Boolean** | | [optional]
+**lastip** | **String** | ip address of last login | [optional]
+**lastlogin** | **String** | last login time | [optional]
+**lastmodifiedbyid** | **String** | Last Modified User ID | [optional]
+**lastmodifieddate** | **String** | Last Modified Date | [optional]
+**lastname** | **String** | The Last Name | [optional]
+**logincount** | **Number** | number of times user has logged in | [optional]
+**managerid** | **String** | Manager | [optional]
+**mobilephone** | **String** | Mobile | [optional]
+**name** | **String** | Name | [optional]
+**outofofficemessage** | **String** | Out of office message | [optional]
+**phone** | **String** | Phone | [optional]
+**portalrole** | **String** | Portal Role Level | [optional]
+**profileid** | **String** | Profile | [optional]
+**receivesadmininfoemails** | **Boolean** | Admin Info Emails | [optional]
+**receivesinfoemails** | **Boolean** | Info Emails | [optional]
+**senderemail** | **String** | Email Sender Address | [optional]
+**sendername** | **String** | Email Sender Name | [optional]
+**signature** | **String** | Email Signature | [optional]
+**smallphotourl** | **String** | Small Photo URL | [optional]
+**startday** | **String** | The time day starts | [optional]
+**taxnexusaccount** | **String** | Taxnexus Account | [optional]
+**timezonesidkey** | **String** | Time Zone | [optional]
+**title** | **String** | Title | [optional]
+**username** | **String** | Username | [optional]
+**userroleid** | **String** | Role | [optional]
+**usertype** | **String** | User Type | [optional]
+**userroles** | [**[UserRole]**](UserRole.md) | | [optional]
+**tenantusers** | [**[TenantUser]**](TenantUser.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/UserResponse.md b/client/sf-gate/docs/UserResponse.md
new file mode 100644
index 0000000..b2c1901
--- /dev/null
+++ b/client/sf-gate/docs/UserResponse.md
@@ -0,0 +1,10 @@
+# SfGate.UserResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[User]**](User.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/sf-gate/docs/UserRole.md b/client/sf-gate/docs/UserRole.md
new file mode 100644
index 0000000..e02ebb7
--- /dev/null
+++ b/client/sf-gate/docs/UserRole.md
@@ -0,0 +1,13 @@
+# SfGate.UserRole
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**description** | **String** | Role description | [optional]
+**roleid** | **String** | The Role ID | [optional]
+**userid** | **String** | The User ID | [optional]
+**name** | **String** | Role Name | [optional]
+**auth0roleid** | **String** | Linked role ID | [optional]
+
+
diff --git a/client/sf-gate/docs/UsersApi.md b/client/sf-gate/docs/UsersApi.md
new file mode 100644
index 0000000..5d6058a
--- /dev/null
+++ b/client/sf-gate/docs/UsersApi.md
@@ -0,0 +1,70 @@
+# SfGate.UsersApi
+
+All URIs are relative to *http://sf-gate.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**getUsers**](UsersApi.md#getUsers) | **GET** /users | Get a list Users
+
+
+
+## getUsers
+
+> UserResponse getUsers(opts)
+
+Get a list Users
+
+Return a list of User records from the datastore
+
+### Example
+
+```javascript
+import SfGate from 'sf_gate';
+let defaultClient = SfGate.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new SfGate.UsersApi();
+let opts = {
+ 'limit': 789, // Number | How many objects to return at one time
+ 'offset': 789, // Number | How many objects to skip?
+ 'userId': "userId_example", // String | Taxnexus Id of the User to be retrieved
+ 'active': true, // Boolean | Only retrieve active records?
+ 'apikey': "apikey_example" // String | Taxnexus Id of the User to be retrieved
+};
+apiInstance.getUsers(opts, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **limit** | **Number**| How many objects to return at one time | [optional]
+ **offset** | **Number**| How many objects to skip? | [optional]
+ **userId** | **String**| Taxnexus Id of the User to be retrieved | [optional]
+ **active** | **Boolean**| Only retrieve active records? | [optional]
+ **apikey** | **String**| Taxnexus Id of the User to be retrieved | [optional]
+
+### Return type
+
+[**UserResponse**](UserResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
diff --git a/client/sf-gate/git_push.sh b/client/sf-gate/git_push.sh
new file mode 100644
index 0000000..f53a75d
--- /dev/null
+++ b/client/sf-gate/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/client/sf-gate/mocha.opts b/client/sf-gate/mocha.opts
new file mode 100644
index 0000000..9070118
--- /dev/null
+++ b/client/sf-gate/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/client/sf-gate/package.json b/client/sf-gate/package.json
new file mode 100644
index 0000000..49e0aa1
--- /dev/null
+++ b/client/sf-gate/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "sf_gate",
+ "version": "0.0.2",
+ "description": "Customer_Information_Microservice",
+ "license": "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc.",
+ "main": "dist/index.js",
+ "scripts": {
+ "build": "babel src -d dist",
+ "prepare": "npm run build",
+ "test": "mocha --require @babel/register --recursive"
+ },
+ "browser": {
+ "fs": false
+ },
+ "dependencies": {
+ "@babel/cli": "^7.0.0",
+ "superagent": "^5.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-decorators": "^7.0.0",
+ "@babel/plugin-proposal-do-expressions": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
+ "@babel/plugin-proposal-function-bind": "^7.0.0",
+ "@babel/plugin-proposal-function-sent": "^7.0.0",
+ "@babel/plugin-proposal-json-strings": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-import-meta": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "expect.js": "^0.3.1",
+ "mocha": "^8.0.1",
+ "sinon": "^7.2.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/client/sf-gate/src/ApiClient.js b/client/sf-gate/src/ApiClient.js
new file mode 100644
index 0000000..46b0f4d
--- /dev/null
+++ b/client/sf-gate/src/ApiClient.js
@@ -0,0 +1,692 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import superagent from "superagent";
+import querystring from "querystring";
+
+/**
+* @module ApiClient
+* @version 0.0.2
+*/
+
+/**
+* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
+* application to use this class directly - the *Api and model classes provide the public API for the service. The
+* contents of this file should be regarded as internal but are documented for completeness.
+* @alias module:ApiClient
+* @class
+*/
+class ApiClient {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * Overrides the default value set in spec file if present
+ * @param {String} basePath
+ */
+ constructor(basePath = 'http://sf-gate.vernonkeenan.com:8080/v1') {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * @type {String}
+ * @default http://sf-gate.vernonkeenan.com:8080/v1
+ */
+ this.basePath = basePath.replace(/\/+$/, '');
+
+ /**
+ * The authentication methods to be included for all API calls.
+ * @type {Array.}
+ */
+ this.authentications = {
+ 'ApiKeyAuth': {type: 'apiKey', 'in': 'header', name: 'X-API-Key'}
+ }
+
+ /**
+ * The default HTTP headers to be included for all API calls.
+ * @type {Array.}
+ * @default {}
+ */
+ this.defaultHeaders = {
+ 'User-Agent': 'OpenAPI-Generator/0.0.2/Javascript'
+ };
+
+ /**
+ * The default HTTP timeout for all API calls.
+ * @type {Number}
+ * @default 60000
+ */
+ this.timeout = 60000;
+
+ /**
+ * If set to false an additional timestamp parameter is added to all API GET calls to
+ * prevent browser caching
+ * @type {Boolean}
+ * @default true
+ */
+ this.cache = true;
+
+ /**
+ * If set to true, the client will save the cookies from each server
+ * response, and return them in the next request.
+ * @default false
+ */
+ this.enableCookies = false;
+
+ /*
+ * Used to save and return cookies in a node.js (non-browser) setting,
+ * if this.enableCookies is set to true.
+ */
+ if (typeof window === 'undefined') {
+ this.agent = new superagent.agent();
+ }
+
+ /*
+ * Allow user to override superagent agent
+ */
+ this.requestAgent = null;
+
+ /*
+ * Allow user to add superagent plugins
+ */
+ this.plugins = null;
+
+ }
+
+ /**
+ * Returns a string representation for an actual parameter.
+ * @param param The actual parameter.
+ * @returns {String} The string representation of param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ * - application/json
+ * - application/json; charset=UTF8
+ * - APPLICATION/JSON
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.} contentTypes
+ * @returns {String} The chosen content type, preferring JSON.
+ */
+ jsonPreferredMime(contentTypes) {
+ for (var i = 0; i < contentTypes.length; i++) {
+ if (this.isJsonMime(contentTypes[i])) {
+ return contentTypes[i];
+ }
+ }
+
+ return contentTypes[0];
+ }
+
+ /**
+ * Checks whether the given parameter value represents file-like content.
+ * @param param The parameter to check.
+ * @returns {Boolean} true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ * - remove nils
+ * - keep files and arrays
+ * - format to string with `paramToString` for other cases
+ *
+ * @param {Object.} params The parameters as object properties.
+ * @returns {Object.} normalized parameters.
+ */
+ normalizeParams(params) {
+ var newParams = {};
+ for (var key in params) {
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
+ var value = params[key];
+ if (this.isFileParam(value) || Array.isArray(value)) {
+ newParams[key] = value;
+ } else {
+ newParams[key] = this.paramToString(value);
+ }
+ }
+ }
+
+ return newParams;
+ }
+
+ /**
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
+ * @param {Array} param An array parameter.
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.} authNames An array of authentication method names.
+ */
+ applyAuthToRequest(request, authNames) {
+ authNames.forEach((authName) => {
+ var auth = this.authentications[authName];
+ switch (auth.type) {
+ case 'basic':
+ if (auth.username || auth.password) {
+ request.auth(auth.username || '', auth.password || '');
+ }
+
+ break;
+ case 'bearer':
+ if (auth.accessToken) {
+ var localVarBearerToken = typeof auth.accessToken === 'function'
+ ? auth.accessToken()
+ : auth.accessToken
+ request.set({'Authorization': 'Bearer ' + localVarBearerToken});
+ }
+
+ break;
+ case 'apiKey':
+ if (auth.apiKey) {
+ var data = {};
+ if (auth.apiKeyPrefix) {
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
+ } else {
+ data[auth.name] = auth.apiKey;
+ }
+
+ if (auth['in'] === 'header') {
+ request.set(data);
+ } else {
+ request.query(data);
+ }
+ }
+
+ break;
+ case 'oauth2':
+ if (auth.accessToken) {
+ request.set({'Authorization': 'Bearer ' + auth.accessToken});
+ }
+
+ break;
+ default:
+ throw new Error('Unknown authentication type: ' + auth.type);
+ }
+ });
+ }
+
+ /**
+ * Deserializes an HTTP response body into a value of the specified type.
+ * @param {Object} response A SuperAgent response object.
+ * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://sf-gate.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/sf-gate/src/api/AccountsApi.js b/client/sf-gate/src/api/AccountsApi.js
new file mode 100644
index 0000000..3cbd08c
--- /dev/null
+++ b/client/sf-gate/src/api/AccountsApi.js
@@ -0,0 +1,217 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import AccountRequest from '../model/AccountRequest';
+import AccountResponse from '../model/AccountResponse';
+import DeleteResponse from '../model/DeleteResponse';
+import Error from '../model/Error';
+
+/**
+* Accounts service.
+* @module api/AccountsApi
+* @version 0.0.2
+*/
+export default class AccountsApi {
+
+ /**
+ * Constructs a new AccountsApi.
+ * @alias module:api/AccountsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the deleteAccount operation.
+ * @callback module:api/AccountsApi~deleteAccountCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DeleteResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Delete An Account
+ * Delete Taxnexus Account record
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {module:api/AccountsApi~deleteAccountCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DeleteResponse}
+ */
+ deleteAccount(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'accountId': opts['accountId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DeleteResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'DELETE',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the getAccounts operation.
+ * @callback module:api/AccountsApi~getAccountsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of accounts
+ * Return a list of all available Accounts
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {String} opts.name The Name of this Object
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {module:api/AccountsApi~getAccountsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ getAccounts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'name': opts['name'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'accountId': opts['accountId'],
+ 'email': opts['email']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postAccounts operation.
+ * @callback module:api/AccountsApi~postAccountsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new account to Taxnexus
+ * Account record to be added
+ * @param {module:model/AccountRequest} accountRequest A request with an array of Account Objects
+ * @param {module:api/AccountsApi~postAccountsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ postAccounts(accountRequest, callback) {
+ let postBody = accountRequest;
+ // verify the required parameter 'accountRequest' is set
+ if (accountRequest === undefined || accountRequest === null) {
+ throw new Error("Missing the required parameter 'accountRequest' when calling postAccounts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putAccount operation.
+ * @callback module:api/AccountsApi~putAccountCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/AccountResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update a single account
+ * Update a single account specified by accountId
+ * @param {module:model/AccountRequest} accountRequest A request with an array of Account Objects
+ * @param {module:api/AccountsApi~putAccountCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/AccountResponse}
+ */
+ putAccount(accountRequest, callback) {
+ let postBody = accountRequest;
+ // verify the required parameter 'accountRequest' is set
+ if (accountRequest === undefined || accountRequest === null) {
+ throw new Error("Missing the required parameter 'accountRequest' when calling putAccount");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = AccountResponse;
+ return this.apiClient.callApi(
+ '/accounts', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/ClustersApi.js b/client/sf-gate/src/api/ClustersApi.js
new file mode 100644
index 0000000..d62e40d
--- /dev/null
+++ b/client/sf-gate/src/api/ClustersApi.js
@@ -0,0 +1,169 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import ClusterRequest from '../model/ClusterRequest';
+import ClusterResponse from '../model/ClusterResponse';
+import Error from '../model/Error';
+
+/**
+* Clusters service.
+* @module api/ClustersApi
+* @version 0.0.2
+*/
+export default class ClustersApi {
+
+ /**
+ * Constructs a new ClustersApi.
+ * @alias module:api/ClustersApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getClusters operation.
+ * @callback module:api/ClustersApi~getClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Clusters
+ * Return a list of Cluster records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.clusterId Taxnexus Record Id of a Cluster
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {module:api/ClustersApi~getClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ getClusters(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'clusterId': opts['clusterId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postClusters operation.
+ * @callback module:api/ClustersApi~postClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Clusters
+ * Create Clusters in Taxnexus
+ * @param {module:model/ClusterRequest} clusterRequest An array of Cluster records
+ * @param {module:api/ClustersApi~postClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ postClusters(clusterRequest, callback) {
+ let postBody = clusterRequest;
+ // verify the required parameter 'clusterRequest' is set
+ if (clusterRequest === undefined || clusterRequest === null) {
+ throw new Error("Missing the required parameter 'clusterRequest' when calling postClusters");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putClusters operation.
+ * @callback module:api/ClustersApi~putClustersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ClusterResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Clusters
+ * Update Cluster in Taxnexus
+ * @param {module:model/ClusterRequest} clusterRequest An array of Cluster records
+ * @param {module:api/ClustersApi~putClustersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ClusterResponse}
+ */
+ putClusters(clusterRequest, callback) {
+ let postBody = clusterRequest;
+ // verify the required parameter 'clusterRequest' is set
+ if (clusterRequest === undefined || clusterRequest === null) {
+ throw new Error("Missing the required parameter 'clusterRequest' when calling putClusters");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ClusterResponse;
+ return this.apiClient.callApi(
+ '/clusters', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/ContactsApi.js b/client/sf-gate/src/api/ContactsApi.js
new file mode 100644
index 0000000..e2c0eca
--- /dev/null
+++ b/client/sf-gate/src/api/ContactsApi.js
@@ -0,0 +1,135 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import ContactRequest from '../model/ContactRequest';
+import ContactResponse from '../model/ContactResponse';
+import Error from '../model/Error';
+
+/**
+* Contacts service.
+* @module api/ContactsApi
+* @version 0.0.2
+*/
+export default class ContactsApi {
+
+ /**
+ * Constructs a new ContactsApi.
+ * @alias module:api/ContactsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getContacts operation.
+ * @callback module:api/ContactsApi~getContactsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContactResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a Contact record
+ * Retrieve Contact records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.contactId Taxnexus Record Id of a Contact
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {String} opts.name The Name of this Object
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.accountId Taxnexus Record Id of an Account
+ * @param {String} opts.email Email address used for identity lookup
+ * @param {module:api/ContactsApi~getContactsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContactResponse}
+ */
+ getContacts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'contactId': opts['contactId'],
+ 'limit': opts['limit'],
+ 'name': opts['name'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'accountId': opts['accountId'],
+ 'email': opts['email']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ContactResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postContacts operation.
+ * @callback module:api/ContactsApi~postContactsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContactResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new Contacts to Taxnexus
+ * Contacts record to be added
+ * @param {module:model/ContactRequest} contactRequest An array of new Contact records
+ * @param {module:api/ContactsApi~postContactsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContactResponse}
+ */
+ postContacts(contactRequest, callback) {
+ let postBody = contactRequest;
+ // verify the required parameter 'contactRequest' is set
+ if (contactRequest === undefined || contactRequest === null) {
+ throw new Error("Missing the required parameter 'contactRequest' when calling postContacts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContactResponse;
+ return this.apiClient.callApi(
+ '/contacts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/ContractsApi.js b/client/sf-gate/src/api/ContractsApi.js
new file mode 100644
index 0000000..775c170
--- /dev/null
+++ b/client/sf-gate/src/api/ContractsApi.js
@@ -0,0 +1,129 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import ContractRequest from '../model/ContractRequest';
+import ContractResponse from '../model/ContractResponse';
+import Error from '../model/Error';
+
+/**
+* Contracts service.
+* @module api/ContractsApi
+* @version 0.0.2
+*/
+export default class ContractsApi {
+
+ /**
+ * Constructs a new ContractsApi.
+ * @alias module:api/ContractsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getContracts operation.
+ * @callback module:api/ContractsApi~getContractsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContractResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of contracts
+ * Return a list of all available Contracts
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.contractId Taxnexus Contact record ID
+ * @param {module:api/ContractsApi~getContractsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContractResponse}
+ */
+ getContracts(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'active': opts['active'],
+ 'contractId': opts['contractId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = ContractResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postContracts operation.
+ * @callback module:api/ContractsApi~postContractsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/ContractResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Add a new contract to Taxnexus
+ * Contract record to be added
+ * @param {module:model/ContractRequest} contractsRequest An array of new Contract records
+ * @param {module:api/ContractsApi~postContractsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/ContractResponse}
+ */
+ postContracts(contractsRequest, callback) {
+ let postBody = contractsRequest;
+ // verify the required parameter 'contractsRequest' is set
+ if (contractsRequest === undefined || contractsRequest === null) {
+ throw new Error("Missing the required parameter 'contractsRequest' when calling postContracts");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = ContractResponse;
+ return this.apiClient.callApi(
+ '/contracts', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/DatabasesApi.js b/client/sf-gate/src/api/DatabasesApi.js
new file mode 100644
index 0000000..1ceeb69
--- /dev/null
+++ b/client/sf-gate/src/api/DatabasesApi.js
@@ -0,0 +1,169 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import DatabaseRequest from '../model/DatabaseRequest';
+import DatabaseResponse from '../model/DatabaseResponse';
+import Error from '../model/Error';
+
+/**
+* Databases service.
+* @module api/DatabasesApi
+* @version 0.0.2
+*/
+export default class DatabasesApi {
+
+ /**
+ * Constructs a new DatabasesApi.
+ * @alias module:api/DatabasesApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getDatabases operation.
+ * @callback module:api/DatabasesApi~getDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Databases
+ * Return a list of Database records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.databaseId Taxnexus Record Id of a Database
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {module:api/DatabasesApi~getDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ getDatabases(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'databaseId': opts['databaseId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the postDatabases operation.
+ * @callback module:api/DatabasesApi~postDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Databases
+ * Create Databases in Taxnexus
+ * @param {module:model/DatabaseRequest} databaseRequest An array of Database records
+ * @param {module:api/DatabasesApi~postDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ postDatabases(databaseRequest, callback) {
+ let postBody = databaseRequest;
+ // verify the required parameter 'databaseRequest' is set
+ if (databaseRequest === undefined || databaseRequest === null) {
+ throw new Error("Missing the required parameter 'databaseRequest' when calling postDatabases");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putDatabases operation.
+ * @callback module:api/DatabasesApi~putDatabasesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DatabaseResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Databases
+ * Update Database in Taxnexus
+ * @param {module:model/DatabaseRequest} databaseRequest An array of Database records
+ * @param {module:api/DatabasesApi~putDatabasesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DatabaseResponse}
+ */
+ putDatabases(databaseRequest, callback) {
+ let postBody = databaseRequest;
+ // verify the required parameter 'databaseRequest' is set
+ if (databaseRequest === undefined || databaseRequest === null) {
+ throw new Error("Missing the required parameter 'databaseRequest' when calling putDatabases");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = DatabaseResponse;
+ return this.apiClient.callApi(
+ '/databases', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/RolesApi.js b/client/sf-gate/src/api/RolesApi.js
new file mode 100644
index 0000000..48c8c9f
--- /dev/null
+++ b/client/sf-gate/src/api/RolesApi.js
@@ -0,0 +1,84 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import RoleResponse from '../model/RoleResponse';
+
+/**
+* Roles service.
+* @module api/RolesApi
+* @version 0.0.2
+*/
+export default class RolesApi {
+
+ /**
+ * Constructs a new RolesApi.
+ * @alias module:api/RolesApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getRoles operation.
+ * @callback module:api/RolesApi~getRolesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/RoleResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list of Roles
+ * Return a list of Roles
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.roleId Taxnexus Id of the Role to be retrieved
+ * @param {module:api/RolesApi~getRolesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/RoleResponse}
+ */
+ getRoles(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'roleId': opts['roleId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = RoleResponse;
+ return this.apiClient.callApi(
+ '/roles', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/TemplatesApi.js b/client/sf-gate/src/api/TemplatesApi.js
new file mode 100644
index 0000000..0ebc77f
--- /dev/null
+++ b/client/sf-gate/src/api/TemplatesApi.js
@@ -0,0 +1,84 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import TemplateResponse from '../model/TemplateResponse';
+
+/**
+* Templates service.
+* @module api/TemplatesApi
+* @version 0.0.2
+*/
+export default class TemplatesApi {
+
+ /**
+ * Constructs a new TemplatesApi.
+ * @alias module:api/TemplatesApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getTemplates operation.
+ * @callback module:api/TemplatesApi~getTemplatesCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TemplateResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get PDF Rendering Templates
+ * Returns the PDF rendering template, or a link to where to get the template
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.templateId Taxnexus Record Id of a Template
+ * @param {module:api/TemplatesApi~getTemplatesCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TemplateResponse}
+ */
+ getTemplates(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'templateId': opts['templateId']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = TemplateResponse;
+ return this.apiClient.callApi(
+ '/templates', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/TenantsApi.js b/client/sf-gate/src/api/TenantsApi.js
new file mode 100644
index 0000000..e317f95
--- /dev/null
+++ b/client/sf-gate/src/api/TenantsApi.js
@@ -0,0 +1,169 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import TenantRequest from '../model/TenantRequest';
+import TenantResponse from '../model/TenantResponse';
+
+/**
+* Tenants service.
+* @module api/TenantsApi
+* @version 0.0.2
+*/
+export default class TenantsApi {
+
+ /**
+ * Constructs a new TenantsApi.
+ * @alias module:api/TenantsApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getTenants operation.
+ * @callback module:api/TenantsApi~getTenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Tenants
+ * Return a list of Tenant records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {String} opts.tenantId Taxnexus Record Id of a Tenant
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {module:api/TenantsApi~getTenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ getTenants(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'tenantId': opts['tenantId'],
+ 'limit': opts['limit'],
+ 'offset': opts['offset']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the putTenants operation.
+ * @callback module:api/TenantsApi~putTenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Update Tenants
+ * Update Tenant in Taxnexus
+ * @param {module:model/TenantRequest} cTenantRequest An array of Tenant records
+ * @param {module:api/TenantsApi~putTenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ putTenants(cTenantRequest, callback) {
+ let postBody = cTenantRequest;
+ // verify the required parameter 'cTenantRequest' is set
+ if (cTenantRequest === undefined || cTenantRequest === null) {
+ throw new Error("Missing the required parameter 'cTenantRequest' when calling putTenants");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'PUT',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+ /**
+ * Callback function to receive the result of the tenants operation.
+ * @callback module:api/TenantsApi~tenantsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/TenantResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new Tenants
+ * Create Tenants in Taxnexus
+ * @param {module:model/TenantRequest} cTenantRequest An array of Tenant records
+ * @param {module:api/TenantsApi~tenantsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/TenantResponse}
+ */
+ tenants(cTenantRequest, callback) {
+ let postBody = cTenantRequest;
+ // verify the required parameter 'cTenantRequest' is set
+ if (cTenantRequest === undefined || cTenantRequest === null) {
+ throw new Error("Missing the required parameter 'cTenantRequest' when calling tenants");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = [];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = TenantResponse;
+ return this.apiClient.callApi(
+ '/tenants', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/api/UsersApi.js b/client/sf-gate/src/api/UsersApi.js
new file mode 100644
index 0000000..70d7cc8
--- /dev/null
+++ b/client/sf-gate/src/api/UsersApi.js
@@ -0,0 +1,88 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import Error from '../model/Error';
+import UserResponse from '../model/UserResponse';
+
+/**
+* Users service.
+* @module api/UsersApi
+* @version 0.0.2
+*/
+export default class UsersApi {
+
+ /**
+ * Constructs a new UsersApi.
+ * @alias module:api/UsersApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the getUsers operation.
+ * @callback module:api/UsersApi~getUsersCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/UserResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Get a list Users
+ * Return a list of User records from the datastore
+ * @param {Object} opts Optional parameters
+ * @param {Number} opts.limit How many objects to return at one time
+ * @param {Number} opts.offset How many objects to skip?
+ * @param {String} opts.userId Taxnexus Id of the User to be retrieved
+ * @param {Boolean} opts.active Only retrieve active records?
+ * @param {String} opts.apikey Taxnexus Id of the User to be retrieved
+ * @param {module:api/UsersApi~getUsersCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/UserResponse}
+ */
+ getUsers(opts, callback) {
+ opts = opts || {};
+ let postBody = null;
+
+ let pathParams = {
+ };
+ let queryParams = {
+ 'limit': opts['limit'],
+ 'offset': opts['offset'],
+ 'userId': opts['userId'],
+ 'active': opts['active'],
+ 'apikey': opts['apikey']
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = [];
+ let accepts = ['application/json'];
+ let returnType = UserResponse;
+ return this.apiClient.callApi(
+ '/users', 'GET',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/sf-gate/src/index.js b/client/sf-gate/src/index.js
new file mode 100644
index 0000000..e26b8e5
--- /dev/null
+++ b/client/sf-gate/src/index.js
@@ -0,0 +1,370 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Account from './model/Account';
+import AccountRequest from './model/AccountRequest';
+import AccountResponse from './model/AccountResponse';
+import Address from './model/Address';
+import Cluster from './model/Cluster';
+import ClusterRequest from './model/ClusterRequest';
+import ClusterResponse from './model/ClusterResponse';
+import Contact from './model/Contact';
+import ContactRequest from './model/ContactRequest';
+import ContactResponse from './model/ContactResponse';
+import Contract from './model/Contract';
+import ContractRequest from './model/ContractRequest';
+import ContractResponse from './model/ContractResponse';
+import Database from './model/Database';
+import DatabaseRequest from './model/DatabaseRequest';
+import DatabaseResponse from './model/DatabaseResponse';
+import DeleteResponse from './model/DeleteResponse';
+import Error from './model/Error';
+import InvalidError from './model/InvalidError';
+import InvalidErrorAllOf from './model/InvalidErrorAllOf';
+import Message from './model/Message';
+import Pagination from './model/Pagination';
+import RequestMeta from './model/RequestMeta';
+import ResponseMeta from './model/ResponseMeta';
+import Role from './model/Role';
+import RoleRequest from './model/RoleRequest';
+import RoleResponse from './model/RoleResponse';
+import Template from './model/Template';
+import TemplateResponse from './model/TemplateResponse';
+import Tenant from './model/Tenant';
+import TenantRequest from './model/TenantRequest';
+import TenantResponse from './model/TenantResponse';
+import TenantUser from './model/TenantUser';
+import User from './model/User';
+import UserResponse from './model/UserResponse';
+import UserRole from './model/UserRole';
+import AccountsApi from './api/AccountsApi';
+import ClustersApi from './api/ClustersApi';
+import ContactsApi from './api/ContactsApi';
+import ContractsApi from './api/ContractsApi';
+import DatabasesApi from './api/DatabasesApi';
+import RolesApi from './api/RolesApi';
+import TemplatesApi from './api/TemplatesApi';
+import TenantsApi from './api/TenantsApi';
+import UsersApi from './api/UsersApi';
+
+
+/**
+* Customer_Information_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var SfGate = require('index'); // See note below*.
+* var xxxSvc = new SfGate.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new SfGate.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new SfGate.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new SfGate.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Account model constructor.
+ * @property {module:model/Account}
+ */
+ Account,
+
+ /**
+ * The AccountRequest model constructor.
+ * @property {module:model/AccountRequest}
+ */
+ AccountRequest,
+
+ /**
+ * The AccountResponse model constructor.
+ * @property {module:model/AccountResponse}
+ */
+ AccountResponse,
+
+ /**
+ * The Address model constructor.
+ * @property {module:model/Address}
+ */
+ Address,
+
+ /**
+ * The Cluster model constructor.
+ * @property {module:model/Cluster}
+ */
+ Cluster,
+
+ /**
+ * The ClusterRequest model constructor.
+ * @property {module:model/ClusterRequest}
+ */
+ ClusterRequest,
+
+ /**
+ * The ClusterResponse model constructor.
+ * @property {module:model/ClusterResponse}
+ */
+ ClusterResponse,
+
+ /**
+ * The Contact model constructor.
+ * @property {module:model/Contact}
+ */
+ Contact,
+
+ /**
+ * The ContactRequest model constructor.
+ * @property {module:model/ContactRequest}
+ */
+ ContactRequest,
+
+ /**
+ * The ContactResponse model constructor.
+ * @property {module:model/ContactResponse}
+ */
+ ContactResponse,
+
+ /**
+ * The Contract model constructor.
+ * @property {module:model/Contract}
+ */
+ Contract,
+
+ /**
+ * The ContractRequest model constructor.
+ * @property {module:model/ContractRequest}
+ */
+ ContractRequest,
+
+ /**
+ * The ContractResponse model constructor.
+ * @property {module:model/ContractResponse}
+ */
+ ContractResponse,
+
+ /**
+ * The Database model constructor.
+ * @property {module:model/Database}
+ */
+ Database,
+
+ /**
+ * The DatabaseRequest model constructor.
+ * @property {module:model/DatabaseRequest}
+ */
+ DatabaseRequest,
+
+ /**
+ * The DatabaseResponse model constructor.
+ * @property {module:model/DatabaseResponse}
+ */
+ DatabaseResponse,
+
+ /**
+ * The DeleteResponse model constructor.
+ * @property {module:model/DeleteResponse}
+ */
+ DeleteResponse,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The InvalidError model constructor.
+ * @property {module:model/InvalidError}
+ */
+ InvalidError,
+
+ /**
+ * The InvalidErrorAllOf model constructor.
+ * @property {module:model/InvalidErrorAllOf}
+ */
+ InvalidErrorAllOf,
+
+ /**
+ * The Message model constructor.
+ * @property {module:model/Message}
+ */
+ Message,
+
+ /**
+ * The Pagination model constructor.
+ * @property {module:model/Pagination}
+ */
+ Pagination,
+
+ /**
+ * The RequestMeta model constructor.
+ * @property {module:model/RequestMeta}
+ */
+ RequestMeta,
+
+ /**
+ * The ResponseMeta model constructor.
+ * @property {module:model/ResponseMeta}
+ */
+ ResponseMeta,
+
+ /**
+ * The Role model constructor.
+ * @property {module:model/Role}
+ */
+ Role,
+
+ /**
+ * The RoleRequest model constructor.
+ * @property {module:model/RoleRequest}
+ */
+ RoleRequest,
+
+ /**
+ * The RoleResponse model constructor.
+ * @property {module:model/RoleResponse}
+ */
+ RoleResponse,
+
+ /**
+ * The Template model constructor.
+ * @property {module:model/Template}
+ */
+ Template,
+
+ /**
+ * The TemplateResponse model constructor.
+ * @property {module:model/TemplateResponse}
+ */
+ TemplateResponse,
+
+ /**
+ * The Tenant model constructor.
+ * @property {module:model/Tenant}
+ */
+ Tenant,
+
+ /**
+ * The TenantRequest model constructor.
+ * @property {module:model/TenantRequest}
+ */
+ TenantRequest,
+
+ /**
+ * The TenantResponse model constructor.
+ * @property {module:model/TenantResponse}
+ */
+ TenantResponse,
+
+ /**
+ * The TenantUser model constructor.
+ * @property {module:model/TenantUser}
+ */
+ TenantUser,
+
+ /**
+ * The User model constructor.
+ * @property {module:model/User}
+ */
+ User,
+
+ /**
+ * The UserResponse model constructor.
+ * @property {module:model/UserResponse}
+ */
+ UserResponse,
+
+ /**
+ * The UserRole model constructor.
+ * @property {module:model/UserRole}
+ */
+ UserRole,
+
+ /**
+ * The AccountsApi service constructor.
+ * @property {module:api/AccountsApi}
+ */
+ AccountsApi,
+
+ /**
+ * The ClustersApi service constructor.
+ * @property {module:api/ClustersApi}
+ */
+ ClustersApi,
+
+ /**
+ * The ContactsApi service constructor.
+ * @property {module:api/ContactsApi}
+ */
+ ContactsApi,
+
+ /**
+ * The ContractsApi service constructor.
+ * @property {module:api/ContractsApi}
+ */
+ ContractsApi,
+
+ /**
+ * The DatabasesApi service constructor.
+ * @property {module:api/DatabasesApi}
+ */
+ DatabasesApi,
+
+ /**
+ * The RolesApi service constructor.
+ * @property {module:api/RolesApi}
+ */
+ RolesApi,
+
+ /**
+ * The TemplatesApi service constructor.
+ * @property {module:api/TemplatesApi}
+ */
+ TemplatesApi,
+
+ /**
+ * The TenantsApi service constructor.
+ * @property {module:api/TenantsApi}
+ */
+ TenantsApi,
+
+ /**
+ * The UsersApi service constructor.
+ * @property {module:api/UsersApi}
+ */
+ UsersApi
+};
diff --git a/client/sf-gate/src/model/Account.js b/client/sf-gate/src/model/Account.js
new file mode 100644
index 0000000..170b184
--- /dev/null
+++ b/client/sf-gate/src/model/Account.js
@@ -0,0 +1,852 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Account model module.
+ * @module model/Account
+ * @version 0.0.2
+ */
+class Account {
+ /**
+ * Constructs a new Account
.
+ * @alias module:model/Account
+ */
+ constructor() {
+
+ Account.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Account
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Account} obj Optional instance to populate.
+ * @return {module:model/Account} The populated Account
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Account();
+
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('accountnumber')) {
+ obj['accountnumber'] = ApiClient.convertToType(data['accountnumber'], 'String');
+ }
+ if (data.hasOwnProperty('accountsource')) {
+ obj['accountsource'] = ApiClient.convertToType(data['accountsource'], 'String');
+ }
+ if (data.hasOwnProperty('active')) {
+ obj['active'] = ApiClient.convertToType(data['active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('administrativelevel')) {
+ obj['administrativelevel'] = ApiClient.convertToType(data['administrativelevel'], 'String');
+ }
+ if (data.hasOwnProperty('amount')) {
+ obj['amount'] = ApiClient.convertToType(data['amount'], 'Number');
+ }
+ if (data.hasOwnProperty('amountinvoiced')) {
+ obj['amountinvoiced'] = ApiClient.convertToType(data['amountinvoiced'], 'Number');
+ }
+ if (data.hasOwnProperty('amountpaid')) {
+ obj['amountpaid'] = ApiClient.convertToType(data['amountpaid'], 'Number');
+ }
+ if (data.hasOwnProperty('annualrevenue')) {
+ obj['annualrevenue'] = ApiClient.convertToType(data['annualrevenue'], 'Number');
+ }
+ if (data.hasOwnProperty('balance')) {
+ obj['balance'] = ApiClient.convertToType(data['balance'], 'Number');
+ }
+ if (data.hasOwnProperty('billingaddress')) {
+ obj['billingaddress'] = Address.constructFromObject(data['billingaddress']);
+ }
+ if (data.hasOwnProperty('billingcontactid')) {
+ obj['billingcontactid'] = ApiClient.convertToType(data['billingcontactid'], 'String');
+ }
+ if (data.hasOwnProperty('billingpreference')) {
+ obj['billingpreference'] = ApiClient.convertToType(data['billingpreference'], 'String');
+ }
+ if (data.hasOwnProperty('businessaddress')) {
+ obj['businessaddress'] = Address.constructFromObject(data['businessaddress']);
+ }
+ if (data.hasOwnProperty('cannabiscustomer')) {
+ obj['cannabiscustomer'] = ApiClient.convertToType(data['cannabiscustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('channelprogramlevelname')) {
+ obj['channelprogramlevelname'] = ApiClient.convertToType(data['channelprogramlevelname'], 'String');
+ }
+ if (data.hasOwnProperty('channelprogramname')) {
+ obj['channelprogramname'] = ApiClient.convertToType(data['channelprogramname'], 'String');
+ }
+ if (data.hasOwnProperty('clientenddate')) {
+ obj['clientenddate'] = ApiClient.convertToType(data['clientenddate'], 'String');
+ }
+ if (data.hasOwnProperty('clientstartdate')) {
+ obj['clientstartdate'] = ApiClient.convertToType(data['clientstartdate'], 'String');
+ }
+ if (data.hasOwnProperty('companyid')) {
+ obj['companyid'] = ApiClient.convertToType(data['companyid'], 'String');
+ }
+ if (data.hasOwnProperty('coordinateid')) {
+ obj['coordinateid'] = ApiClient.convertToType(data['coordinateid'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('customerid')) {
+ obj['customerid'] = ApiClient.convertToType(data['customerid'], 'String');
+ }
+ if (data.hasOwnProperty('customerpriority')) {
+ obj['customerpriority'] = ApiClient.convertToType(data['customerpriority'], 'String');
+ }
+ if (data.hasOwnProperty('dandbcompanyid')) {
+ obj['dandbcompanyid'] = ApiClient.convertToType(data['dandbcompanyid'], 'String');
+ }
+ if (data.hasOwnProperty('dba')) {
+ obj['dba'] = ApiClient.convertToType(data['dba'], 'String');
+ }
+ if (data.hasOwnProperty('defaultaddress')) {
+ obj['defaultaddress'] = Address.constructFromObject(data['defaultaddress']);
+ }
+ if (data.hasOwnProperty('defaultbackendid')) {
+ obj['defaultbackendid'] = ApiClient.convertToType(data['defaultbackendid'], 'String');
+ }
+ if (data.hasOwnProperty('defaultdeliverycontactid')) {
+ obj['defaultdeliverycontactid'] = ApiClient.convertToType(data['defaultdeliverycontactid'], 'String');
+ }
+ if (data.hasOwnProperty('defaultenduserid')) {
+ obj['defaultenduserid'] = ApiClient.convertToType(data['defaultenduserid'], 'String');
+ }
+ if (data.hasOwnProperty('description')) {
+ obj['description'] = ApiClient.convertToType(data['description'], 'String');
+ }
+ if (data.hasOwnProperty('dunsnumber')) {
+ obj['dunsnumber'] = ApiClient.convertToType(data['dunsnumber'], 'String');
+ }
+ if (data.hasOwnProperty('ein')) {
+ obj['ein'] = ApiClient.convertToType(data['ein'], 'String');
+ }
+ if (data.hasOwnProperty('email')) {
+ obj['email'] = ApiClient.convertToType(data['email'], 'String');
+ }
+ if (data.hasOwnProperty('enrollmentstatus')) {
+ obj['enrollmentstatus'] = ApiClient.convertToType(data['enrollmentstatus'], 'String');
+ }
+ if (data.hasOwnProperty('fax')) {
+ obj['fax'] = ApiClient.convertToType(data['fax'], 'String');
+ }
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('industry')) {
+ obj['industry'] = ApiClient.convertToType(data['industry'], 'String');
+ }
+ if (data.hasOwnProperty('iscustomerportal')) {
+ obj['iscustomerportal'] = ApiClient.convertToType(data['iscustomerportal'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ispartner')) {
+ obj['ispartner'] = ApiClient.convertToType(data['ispartner'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ispcustomer')) {
+ obj['ispcustomer'] = ApiClient.convertToType(data['ispcustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('jigsaw')) {
+ obj['jigsaw'] = ApiClient.convertToType(data['jigsaw'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('mspcustomer')) {
+ obj['mspcustomer'] = ApiClient.convertToType(data['mspcustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('naicscode')) {
+ obj['naicscode'] = ApiClient.convertToType(data['naicscode'], 'String');
+ }
+ if (data.hasOwnProperty('naicsdesc')) {
+ obj['naicsdesc'] = ApiClient.convertToType(data['naicsdesc'], 'String');
+ }
+ if (data.hasOwnProperty('name')) {
+ obj['name'] = ApiClient.convertToType(data['name'], 'String');
+ }
+ if (data.hasOwnProperty('numberofemployees')) {
+ obj['numberofemployees'] = ApiClient.convertToType(data['numberofemployees'], 'Number');
+ }
+ if (data.hasOwnProperty('numberoflocations')) {
+ obj['numberoflocations'] = ApiClient.convertToType(data['numberoflocations'], 'Number');
+ }
+ if (data.hasOwnProperty('opencharges')) {
+ obj['opencharges'] = ApiClient.convertToType(data['opencharges'], 'Number');
+ }
+ if (data.hasOwnProperty('ordercontactid')) {
+ obj['ordercontactid'] = ApiClient.convertToType(data['ordercontactid'], 'String');
+ }
+ if (data.hasOwnProperty('orderemail')) {
+ obj['orderemail'] = ApiClient.convertToType(data['orderemail'], 'String');
+ }
+ if (data.hasOwnProperty('ownerid')) {
+ obj['ownerid'] = ApiClient.convertToType(data['ownerid'], 'String');
+ }
+ if (data.hasOwnProperty('ownership')) {
+ obj['ownership'] = ApiClient.convertToType(data['ownership'], 'String');
+ }
+ if (data.hasOwnProperty('parentfk')) {
+ obj['parentfk'] = ApiClient.convertToType(data['parentfk'], 'String');
+ }
+ if (data.hasOwnProperty('parentid')) {
+ obj['parentid'] = ApiClient.convertToType(data['parentid'], 'String');
+ }
+ if (data.hasOwnProperty('phone')) {
+ obj['phone'] = ApiClient.convertToType(data['phone'], 'String');
+ }
+ if (data.hasOwnProperty('placeid')) {
+ obj['placeid'] = ApiClient.convertToType(data['placeid'], 'String');
+ }
+ if (data.hasOwnProperty('preparerid')) {
+ obj['preparerid'] = ApiClient.convertToType(data['preparerid'], 'String');
+ }
+ if (data.hasOwnProperty('rating')) {
+ obj['rating'] = ApiClient.convertToType(data['rating'], 'String');
+ }
+ if (data.hasOwnProperty('ratingengineid')) {
+ obj['ratingengineid'] = ApiClient.convertToType(data['ratingengineid'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('revenuebase')) {
+ obj['revenuebase'] = ApiClient.convertToType(data['revenuebase'], 'Number');
+ }
+ if (data.hasOwnProperty('revenuenet')) {
+ obj['revenuenet'] = ApiClient.convertToType(data['revenuenet'], 'Number');
+ }
+ if (data.hasOwnProperty('revenuenottaxable')) {
+ obj['revenuenottaxable'] = ApiClient.convertToType(data['revenuenottaxable'], 'Number');
+ }
+ if (data.hasOwnProperty('shippingaddress')) {
+ obj['shippingaddress'] = Address.constructFromObject(data['shippingaddress']);
+ }
+ if (data.hasOwnProperty('shippingcensustract')) {
+ obj['shippingcensustract'] = ApiClient.convertToType(data['shippingcensustract'], 'String');
+ }
+ if (data.hasOwnProperty('shippingcounty')) {
+ obj['shippingcounty'] = ApiClient.convertToType(data['shippingcounty'], 'String');
+ }
+ if (data.hasOwnProperty('shippingcontactid')) {
+ obj['shippingcontactid'] = ApiClient.convertToType(data['shippingcontactid'], 'String');
+ }
+ if (data.hasOwnProperty('sic')) {
+ obj['sic'] = ApiClient.convertToType(data['sic'], 'String');
+ }
+ if (data.hasOwnProperty('sicdesc')) {
+ obj['sicdesc'] = ApiClient.convertToType(data['sicdesc'], 'String');
+ }
+ if (data.hasOwnProperty('site')) {
+ obj['site'] = ApiClient.convertToType(data['site'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'String');
+ }
+ if (data.hasOwnProperty('taxexemption')) {
+ obj['taxexemption'] = ApiClient.convertToType(data['taxexemption'], 'String');
+ }
+ if (data.hasOwnProperty('taxontax')) {
+ obj['taxontax'] = ApiClient.convertToType(data['taxontax'], 'Number');
+ }
+ if (data.hasOwnProperty('telecomcustomer')) {
+ obj['telecomcustomer'] = ApiClient.convertToType(data['telecomcustomer'], 'Boolean');
+ }
+ if (data.hasOwnProperty('tickersymbol')) {
+ obj['tickersymbol'] = ApiClient.convertToType(data['tickersymbol'], 'String');
+ }
+ if (data.hasOwnProperty('tradestyle')) {
+ obj['tradestyle'] = ApiClient.convertToType(data['tradestyle'], 'String');
+ }
+ if (data.hasOwnProperty('type')) {
+ obj['type'] = ApiClient.convertToType(data['type'], 'String');
+ }
+ if (data.hasOwnProperty('unappliedpayments')) {
+ obj['unappliedpayments'] = ApiClient.convertToType(data['unappliedpayments'], 'Number');
+ }
+ if (data.hasOwnProperty('unitbase')) {
+ obj['unitbase'] = ApiClient.convertToType(data['unitbase'], 'Number');
+ }
+ if (data.hasOwnProperty('upsellopportunity')) {
+ obj['upsellopportunity'] = ApiClient.convertToType(data['upsellopportunity'], 'String');
+ }
+ if (data.hasOwnProperty('website')) {
+ obj['website'] = ApiClient.convertToType(data['website'], 'String');
+ }
+ if (data.hasOwnProperty('whmcsclientid')) {
+ obj['whmcsclientid'] = ApiClient.convertToType(data['whmcsclientid'], 'Number');
+ }
+ if (data.hasOwnProperty('xerocontactid')) {
+ obj['xerocontactid'] = ApiClient.convertToType(data['xerocontactid'], 'String');
+ }
+ if (data.hasOwnProperty('yearstarted')) {
+ obj['yearstarted'] = ApiClient.convertToType(data['yearstarted'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * tenant identifier
+ * @member {String} tenantid
+ */
+Account.prototype['tenantid'] = undefined;
+
+/**
+ * Account Number
+ * @member {String} accountnumber
+ */
+Account.prototype['accountnumber'] = undefined;
+
+/**
+ * The marketing orgin of this account
+ * @member {String} accountsource
+ */
+Account.prototype['accountsource'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} active
+ */
+Account.prototype['active'] = undefined;
+
+/**
+ * For tax authorities, this account's administrative level, e.g. Local, County, State or Federal
+ * @member {String} administrativelevel
+ */
+Account.prototype['administrativelevel'] = undefined;
+
+/**
+ * Rollup Tax Amount
+ * @member {Number} amount
+ */
+Account.prototype['amount'] = undefined;
+
+/**
+ * Amount Invoiced
+ * @member {Number} amountinvoiced
+ */
+Account.prototype['amountinvoiced'] = undefined;
+
+/**
+ * Amount Paid
+ * @member {Number} amountpaid
+ */
+Account.prototype['amountpaid'] = undefined;
+
+/**
+ * Annual Revenue Estimate
+ * @member {Number} annualrevenue
+ */
+Account.prototype['annualrevenue'] = undefined;
+
+/**
+ * Account Balance
+ * @member {Number} balance
+ */
+Account.prototype['balance'] = undefined;
+
+/**
+ * @member {module:model/Address} billingaddress
+ */
+Account.prototype['billingaddress'] = undefined;
+
+/**
+ * Contact ID
+ * @member {String} billingcontactid
+ */
+Account.prototype['billingcontactid'] = undefined;
+
+/**
+ * Billing Preference
+ * @member {String} billingpreference
+ */
+Account.prototype['billingpreference'] = undefined;
+
+/**
+ * @member {module:model/Address} businessaddress
+ */
+Account.prototype['businessaddress'] = undefined;
+
+/**
+ * Is this a cannabis customer?
+ * @member {Boolean} cannabiscustomer
+ */
+Account.prototype['cannabiscustomer'] = undefined;
+
+/**
+ * Channel Program Level Name
+ * @member {String} channelprogramlevelname
+ */
+Account.prototype['channelprogramlevelname'] = undefined;
+
+/**
+ * Channel Program Name
+ * @member {String} channelprogramname
+ */
+Account.prototype['channelprogramname'] = undefined;
+
+/**
+ * Client End Date
+ * @member {String} clientenddate
+ */
+Account.prototype['clientenddate'] = undefined;
+
+/**
+ * Client Start Date
+ * @member {String} clientstartdate
+ */
+Account.prototype['clientstartdate'] = undefined;
+
+/**
+ * The Company ID of this Account
+ * @member {String} companyid
+ */
+Account.prototype['companyid'] = undefined;
+
+/**
+ * The Id of the geo coordinates of this account
+ * @member {String} coordinateid
+ */
+Account.prototype['coordinateid'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} createdbyid
+ */
+Account.prototype['createdbyid'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} createddate
+ */
+Account.prototype['createddate'] = undefined;
+
+/**
+ * Customer ID from source system
+ * @member {String} customerid
+ */
+Account.prototype['customerid'] = undefined;
+
+/**
+ * Customer Priority
+ * @member {String} customerpriority
+ */
+Account.prototype['customerpriority'] = undefined;
+
+/**
+ * D-n-B Company
+ * @member {String} dandbcompanyid
+ */
+Account.prototype['dandbcompanyid'] = undefined;
+
+/**
+ * This Account's 'Doing Business As' name
+ * @member {String} dba
+ */
+Account.prototype['dba'] = undefined;
+
+/**
+ * @member {module:model/Address} defaultaddress
+ */
+Account.prototype['defaultaddress'] = undefined;
+
+/**
+ * Default Backend ID
+ * @member {String} defaultbackendid
+ */
+Account.prototype['defaultbackendid'] = undefined;
+
+/**
+ * Default Delivery Address Contact ID
+ * @member {String} defaultdeliverycontactid
+ */
+Account.prototype['defaultdeliverycontactid'] = undefined;
+
+/**
+ * Default End User Contact ID
+ * @member {String} defaultenduserid
+ */
+Account.prototype['defaultenduserid'] = undefined;
+
+/**
+ * Description
+ * @member {String} description
+ */
+Account.prototype['description'] = undefined;
+
+/**
+ * D-U-N-S Number
+ * @member {String} dunsnumber
+ */
+Account.prototype['dunsnumber'] = undefined;
+
+/**
+ * EIN
+ * @member {String} ein
+ */
+Account.prototype['ein'] = undefined;
+
+/**
+ * Main Account Email
+ * @member {String} email
+ */
+Account.prototype['email'] = undefined;
+
+/**
+ * Enrollment Status
+ * @member {String} enrollmentstatus
+ */
+Account.prototype['enrollmentstatus'] = undefined;
+
+/**
+ * Fax
+ * @member {String} fax
+ */
+Account.prototype['fax'] = undefined;
+
+/**
+ * Taxnexus Account Id
+ * @member {String} id
+ */
+Account.prototype['id'] = undefined;
+
+/**
+ * Industry
+ * @member {String} industry
+ */
+Account.prototype['industry'] = undefined;
+
+/**
+ * Customer Portal Account
+ * @member {Boolean} iscustomerportal
+ */
+Account.prototype['iscustomerportal'] = undefined;
+
+/**
+ * Partner Account
+ * @member {Boolean} ispartner
+ */
+Account.prototype['ispartner'] = undefined;
+
+/**
+ * ISP Customer?
+ * @member {Boolean} ispcustomer
+ */
+Account.prototype['ispcustomer'] = undefined;
+
+/**
+ * Data.com Key
+ * @member {String} jigsaw
+ */
+Account.prototype['jigsaw'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} lastmodifiedbyid
+ */
+Account.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} lastmodifieddate
+ */
+Account.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * MSP Customer?
+ * @member {Boolean} mspcustomer
+ */
+Account.prototype['mspcustomer'] = undefined;
+
+/**
+ * NAICS Code
+ * @member {String} naicscode
+ */
+Account.prototype['naicscode'] = undefined;
+
+/**
+ * NAICS Description
+ * @member {String} naicsdesc
+ */
+Account.prototype['naicsdesc'] = undefined;
+
+/**
+ * Account Name
+ * @member {String} name
+ */
+Account.prototype['name'] = undefined;
+
+/**
+ * Employee Count Estimate
+ * @member {Number} numberofemployees
+ */
+Account.prototype['numberofemployees'] = undefined;
+
+/**
+ * Number of Locations Estimate
+ * @member {Number} numberoflocations
+ */
+Account.prototype['numberoflocations'] = undefined;
+
+/**
+ * Open Charges
+ * @member {Number} opencharges
+ */
+Account.prototype['opencharges'] = undefined;
+
+/**
+ * Vendor Order Contact ID
+ * @member {String} ordercontactid
+ */
+Account.prototype['ordercontactid'] = undefined;
+
+/**
+ * Order Email
+ * @member {String} orderemail
+ */
+Account.prototype['orderemail'] = undefined;
+
+/**
+ * Account Owner User ID
+ * @member {String} ownerid
+ */
+Account.prototype['ownerid'] = undefined;
+
+/**
+ * Ownership
+ * @member {String} ownership
+ */
+Account.prototype['ownership'] = undefined;
+
+/**
+ * Parent Foreign Key
+ * @member {String} parentfk
+ */
+Account.prototype['parentfk'] = undefined;
+
+/**
+ * Parent Account
+ * @member {String} parentid
+ */
+Account.prototype['parentid'] = undefined;
+
+/**
+ * Phone
+ * @member {String} phone
+ */
+Account.prototype['phone'] = undefined;
+
+/**
+ * The ID of the Place situs record that applies to this Account
+ * @member {String} placeid
+ */
+Account.prototype['placeid'] = undefined;
+
+/**
+ * Tax Preparer Contact ID
+ * @member {String} preparerid
+ */
+Account.prototype['preparerid'] = undefined;
+
+/**
+ * Rating
+ * @member {String} rating
+ */
+Account.prototype['rating'] = undefined;
+
+/**
+ * Rating Engine identifier
+ * @member {String} ratingengineid
+ */
+Account.prototype['ratingengineid'] = undefined;
+
+/**
+ * External Reference ID
+ * @member {String} ref
+ */
+Account.prototype['ref'] = undefined;
+
+/**
+ * Rollup Revenue Base
+ * @member {Number} revenuebase
+ */
+Account.prototype['revenuebase'] = undefined;
+
+/**
+ * Rollup Revenue Net
+ * @member {Number} revenuenet
+ */
+Account.prototype['revenuenet'] = undefined;
+
+/**
+ * Rollup Revenue Not Taxable
+ * @member {Number} revenuenottaxable
+ */
+Account.prototype['revenuenottaxable'] = undefined;
+
+/**
+ * @member {module:model/Address} shippingaddress
+ */
+Account.prototype['shippingaddress'] = undefined;
+
+/**
+ * Shipping Census Tract
+ * @member {String} shippingcensustract
+ */
+Account.prototype['shippingcensustract'] = undefined;
+
+/**
+ * Shipping County
+ * @member {String} shippingcounty
+ */
+Account.prototype['shippingcounty'] = undefined;
+
+/**
+ * Shipping Contact ID
+ * @member {String} shippingcontactid
+ */
+Account.prototype['shippingcontactid'] = undefined;
+
+/**
+ * SIC Code
+ * @member {String} sic
+ */
+Account.prototype['sic'] = undefined;
+
+/**
+ * SIC Description
+ * @member {String} sicdesc
+ */
+Account.prototype['sicdesc'] = undefined;
+
+/**
+ * Account Site
+ * @member {String} site
+ */
+Account.prototype['site'] = undefined;
+
+/**
+ * Account Status
+ * @member {String} status
+ */
+Account.prototype['status'] = undefined;
+
+/**
+ * Tax Exemption
+ * @member {String} taxexemption
+ */
+Account.prototype['taxexemption'] = undefined;
+
+/**
+ * Rollup Tax On Tax
+ * @member {Number} taxontax
+ */
+Account.prototype['taxontax'] = undefined;
+
+/**
+ * Telecom Customer?
+ * @member {Boolean} telecomcustomer
+ */
+Account.prototype['telecomcustomer'] = undefined;
+
+/**
+ * Ticker Symbol
+ * @member {String} tickersymbol
+ */
+Account.prototype['tickersymbol'] = undefined;
+
+/**
+ * Tradestyle
+ * @member {String} tradestyle
+ */
+Account.prototype['tradestyle'] = undefined;
+
+/**
+ * Type
+ * @member {String} type
+ */
+Account.prototype['type'] = undefined;
+
+/**
+ * Unapplied Payments
+ * @member {Number} unappliedpayments
+ */
+Account.prototype['unappliedpayments'] = undefined;
+
+/**
+ * Rollup Unit Base
+ * @member {Number} unitbase
+ */
+Account.prototype['unitbase'] = undefined;
+
+/**
+ * Upsell Opportunity
+ * @member {String} upsellopportunity
+ */
+Account.prototype['upsellopportunity'] = undefined;
+
+/**
+ * Website
+ * @member {String} website
+ */
+Account.prototype['website'] = undefined;
+
+/**
+ * WHMCS Client ID
+ * @member {Number} whmcsclientid
+ */
+Account.prototype['whmcsclientid'] = undefined;
+
+/**
+ * Xero Contact ID
+ * @member {String} xerocontactid
+ */
+Account.prototype['xerocontactid'] = undefined;
+
+/**
+ * Year Started
+ * @member {String} yearstarted
+ */
+Account.prototype['yearstarted'] = undefined;
+
+
+
+
+
+
+export default Account;
+
diff --git a/client/sf-gate/src/model/AccountRequest.js b/client/sf-gate/src/model/AccountRequest.js
new file mode 100644
index 0000000..6074593
--- /dev/null
+++ b/client/sf-gate/src/model/AccountRequest.js
@@ -0,0 +1,81 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+import RequestMeta from './RequestMeta';
+
+/**
+ * The AccountRequest model module.
+ * @module model/AccountRequest
+ * @version 0.0.2
+ */
+class AccountRequest {
+ /**
+ * Constructs a new AccountRequest
.
+ * @alias module:model/AccountRequest
+ */
+ constructor() {
+
+ AccountRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountRequest} obj Optional instance to populate.
+ * @return {module:model/AccountRequest} The populated AccountRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Account]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+AccountRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+AccountRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default AccountRequest;
+
diff --git a/client/sf-gate/src/model/AccountResponse.js b/client/sf-gate/src/model/AccountResponse.js
new file mode 100644
index 0000000..4084f44
--- /dev/null
+++ b/client/sf-gate/src/model/AccountResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Account from './Account';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The AccountResponse model module.
+ * @module model/AccountResponse
+ * @version 0.0.2
+ */
+class AccountResponse {
+ /**
+ * Constructs a new AccountResponse
.
+ * An array of Account objects
+ * @alias module:model/AccountResponse
+ */
+ constructor() {
+
+ AccountResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a AccountResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/AccountResponse} obj Optional instance to populate.
+ * @return {module:model/AccountResponse} The populated AccountResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new AccountResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Account]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+AccountResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+AccountResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default AccountResponse;
+
diff --git a/client/sf-gate/src/model/Address.js b/client/sf-gate/src/model/Address.js
new file mode 100644
index 0000000..9e02f43
--- /dev/null
+++ b/client/sf-gate/src/model/Address.js
@@ -0,0 +1,130 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Address model module.
+ * @module model/Address
+ * @version 0.0.2
+ */
+class Address {
+ /**
+ * Constructs a new Address
.
+ * @alias module:model/Address
+ * @param city {String} City
+ * @param statecode {String} State Code
+ */
+ constructor(city, statecode) {
+
+ Address.initialize(this, city, statecode);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, city, statecode) {
+ obj['city'] = city;
+ obj['statecode'] = statecode;
+ }
+
+ /**
+ * Constructs a Address
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Address} obj Optional instance to populate.
+ * @return {module:model/Address} The populated Address
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Address();
+
+ if (data.hasOwnProperty('city')) {
+ obj['city'] = ApiClient.convertToType(data['city'], 'String');
+ }
+ if (data.hasOwnProperty('country')) {
+ obj['country'] = ApiClient.convertToType(data['country'], 'String');
+ }
+ if (data.hasOwnProperty('countrycode')) {
+ obj['countrycode'] = ApiClient.convertToType(data['countrycode'], 'String');
+ }
+ if (data.hasOwnProperty('postalcode')) {
+ obj['postalcode'] = ApiClient.convertToType(data['postalcode'], 'String');
+ }
+ if (data.hasOwnProperty('state')) {
+ obj['state'] = ApiClient.convertToType(data['state'], 'String');
+ }
+ if (data.hasOwnProperty('statecode')) {
+ obj['statecode'] = ApiClient.convertToType(data['statecode'], 'String');
+ }
+ if (data.hasOwnProperty('street')) {
+ obj['street'] = ApiClient.convertToType(data['street'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * City
+ * @member {String} city
+ */
+Address.prototype['city'] = undefined;
+
+/**
+ * Country full name
+ * @member {String} country
+ */
+Address.prototype['country'] = undefined;
+
+/**
+ * Country Code
+ * @member {String} countrycode
+ */
+Address.prototype['countrycode'] = undefined;
+
+/**
+ * Postal Code
+ * @member {String} postalcode
+ */
+Address.prototype['postalcode'] = undefined;
+
+/**
+ * State full name
+ * @member {String} state
+ */
+Address.prototype['state'] = undefined;
+
+/**
+ * State Code
+ * @member {String} statecode
+ */
+Address.prototype['statecode'] = undefined;
+
+/**
+ * Street number and name
+ * @member {String} street
+ */
+Address.prototype['street'] = undefined;
+
+
+
+
+
+
+export default Address;
+
diff --git a/client/sf-gate/src/model/Cluster.js b/client/sf-gate/src/model/Cluster.js
new file mode 100644
index 0000000..d05a83d
--- /dev/null
+++ b/client/sf-gate/src/model/Cluster.js
@@ -0,0 +1,216 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Cluster model module.
+ * @module model/Cluster
+ * @version 0.0.2
+ */
+class Cluster {
+ /**
+ * Constructs a new Cluster
.
+ * @alias module:model/Cluster
+ */
+ constructor() {
+
+ Cluster.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Cluster
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Cluster} obj Optional instance to populate.
+ * @return {module:model/Cluster} The populated Cluster
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Cluster();
+
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('name')) {
+ obj['name'] = ApiClient.convertToType(data['name'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('description')) {
+ obj['description'] = ApiClient.convertToType(data['description'], 'String');
+ }
+ if (data.hasOwnProperty('environment')) {
+ obj['environment'] = ApiClient.convertToType(data['environment'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('gateway')) {
+ obj['gateway'] = ApiClient.convertToType(data['gateway'], 'String');
+ }
+ if (data.hasOwnProperty('ip_address')) {
+ obj['ip_address'] = ApiClient.convertToType(data['ip_address'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('ownerid')) {
+ obj['ownerid'] = ApiClient.convertToType(data['ownerid'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'String');
+ }
+ if (data.hasOwnProperty('subnet')) {
+ obj['subnet'] = ApiClient.convertToType(data['subnet'], 'String');
+ }
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('type')) {
+ obj['type'] = ApiClient.convertToType(data['type'], 'String');
+ }
+ if (data.hasOwnProperty('zone')) {
+ obj['zone'] = ApiClient.convertToType(data['zone'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Record Id
+ * @member {String} id
+ */
+Cluster.prototype['id'] = undefined;
+
+/**
+ * Cluster Name
+ * @member {String} name
+ */
+Cluster.prototype['name'] = undefined;
+
+/**
+ * Created By
+ * @member {String} createdbyid
+ */
+Cluster.prototype['createdbyid'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} createddate
+ */
+Cluster.prototype['createddate'] = undefined;
+
+/**
+ * Description
+ * @member {String} description
+ */
+Cluster.prototype['description'] = undefined;
+
+/**
+ * Environment
+ * @member {String} environment
+ */
+Cluster.prototype['environment'] = undefined;
+
+/**
+ * External Reference
+ * @member {String} ref
+ */
+Cluster.prototype['ref'] = undefined;
+
+/**
+ * Gateway
+ * @member {String} gateway
+ */
+Cluster.prototype['gateway'] = undefined;
+
+/**
+ * IP Address
+ * @member {String} ip_address
+ */
+Cluster.prototype['ip_address'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} lastmodifiedbyid
+ */
+Cluster.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} lastmodifieddate
+ */
+Cluster.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * Owner
+ * @member {String} ownerid
+ */
+Cluster.prototype['ownerid'] = undefined;
+
+/**
+ * Status
+ * @member {String} status
+ */
+Cluster.prototype['status'] = undefined;
+
+/**
+ * Subnet
+ * @member {String} subnet
+ */
+Cluster.prototype['subnet'] = undefined;
+
+/**
+ * tenantid
+ * @member {String} tenantid
+ */
+Cluster.prototype['tenantid'] = undefined;
+
+/**
+ * Type
+ * @member {String} type
+ */
+Cluster.prototype['type'] = undefined;
+
+/**
+ * Zone
+ * @member {String} zone
+ */
+Cluster.prototype['zone'] = undefined;
+
+
+
+
+
+
+export default Cluster;
+
diff --git a/client/sf-gate/src/model/ClusterRequest.js b/client/sf-gate/src/model/ClusterRequest.js
new file mode 100644
index 0000000..bd299e7
--- /dev/null
+++ b/client/sf-gate/src/model/ClusterRequest.js
@@ -0,0 +1,85 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Cluster from './Cluster';
+import RequestMeta from './RequestMeta';
+
+/**
+ * The ClusterRequest model module.
+ * @module model/ClusterRequest
+ * @version 0.0.2
+ */
+class ClusterRequest {
+ /**
+ * Constructs a new ClusterRequest
.
+ * @alias module:model/ClusterRequest
+ * @param data {Array.}
+ * @param meta {module:model/RequestMeta}
+ */
+ constructor(data, meta) {
+
+ ClusterRequest.initialize(this, data, meta);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, data, meta) {
+ obj['data'] = data;
+ obj['meta'] = meta;
+ }
+
+ /**
+ * Constructs a ClusterRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ClusterRequest} obj Optional instance to populate.
+ * @return {module:model/ClusterRequest} The populated ClusterRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ClusterRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Cluster]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+ClusterRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+ClusterRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default ClusterRequest;
+
diff --git a/client/sf-gate/src/model/ClusterResponse.js b/client/sf-gate/src/model/ClusterResponse.js
new file mode 100644
index 0000000..fa19799
--- /dev/null
+++ b/client/sf-gate/src/model/ClusterResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Cluster from './Cluster';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ClusterResponse model module.
+ * @module model/ClusterResponse
+ * @version 0.0.2
+ */
+class ClusterResponse {
+ /**
+ * Constructs a new ClusterResponse
.
+ * An array of cluster objects
+ * @alias module:model/ClusterResponse
+ */
+ constructor() {
+
+ ClusterResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ClusterResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ClusterResponse} obj Optional instance to populate.
+ * @return {module:model/ClusterResponse} The populated ClusterResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ClusterResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Cluster]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+ClusterResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+ClusterResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default ClusterResponse;
+
diff --git a/client/sf-gate/src/model/Contact.js b/client/sf-gate/src/model/Contact.js
new file mode 100644
index 0000000..38dce2b
--- /dev/null
+++ b/client/sf-gate/src/model/Contact.js
@@ -0,0 +1,467 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Contact model module.
+ * @module model/Contact
+ * @version 0.0.2
+ */
+class Contact {
+ /**
+ * Constructs a new Contact
.
+ * @alias module:model/Contact
+ */
+ constructor() {
+
+ Contact.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Contact
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Contact} obj Optional instance to populate.
+ * @return {module:model/Contact} The populated Contact
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Contact();
+
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('accountid')) {
+ obj['accountid'] = ApiClient.convertToType(data['accountid'], 'String');
+ }
+ if (data.hasOwnProperty('assistantname')) {
+ obj['assistantname'] = ApiClient.convertToType(data['assistantname'], 'String');
+ }
+ if (data.hasOwnProperty('assistantphone')) {
+ obj['assistantphone'] = ApiClient.convertToType(data['assistantphone'], 'String');
+ }
+ if (data.hasOwnProperty('birthdate')) {
+ obj['birthdate'] = ApiClient.convertToType(data['birthdate'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('department')) {
+ obj['department'] = ApiClient.convertToType(data['department'], 'String');
+ }
+ if (data.hasOwnProperty('description')) {
+ obj['description'] = ApiClient.convertToType(data['description'], 'String');
+ }
+ if (data.hasOwnProperty('donotcall')) {
+ obj['donotcall'] = ApiClient.convertToType(data['donotcall'], 'Boolean');
+ }
+ if (data.hasOwnProperty('email')) {
+ obj['email'] = ApiClient.convertToType(data['email'], 'String');
+ }
+ if (data.hasOwnProperty('emailbounceddate')) {
+ obj['emailbounceddate'] = ApiClient.convertToType(data['emailbounceddate'], 'String');
+ }
+ if (data.hasOwnProperty('emailbouncedreason')) {
+ obj['emailbouncedreason'] = ApiClient.convertToType(data['emailbouncedreason'], 'String');
+ }
+ if (data.hasOwnProperty('enrollmentstatus')) {
+ obj['enrollmentstatus'] = ApiClient.convertToType(data['enrollmentstatus'], 'String');
+ }
+ if (data.hasOwnProperty('fax')) {
+ obj['fax'] = ApiClient.convertToType(data['fax'], 'String');
+ }
+ if (data.hasOwnProperty('firstname')) {
+ obj['firstname'] = ApiClient.convertToType(data['firstname'], 'String');
+ }
+ if (data.hasOwnProperty('hasoptedoutofemail')) {
+ obj['hasoptedoutofemail'] = ApiClient.convertToType(data['hasoptedoutofemail'], 'Boolean');
+ }
+ if (data.hasOwnProperty('hasoptedoutoffax')) {
+ obj['hasoptedoutoffax'] = ApiClient.convertToType(data['hasoptedoutoffax'], 'Boolean');
+ }
+ if (data.hasOwnProperty('homephone')) {
+ obj['homephone'] = ApiClient.convertToType(data['homephone'], 'String');
+ }
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('isemailbounced')) {
+ obj['isemailbounced'] = ApiClient.convertToType(data['isemailbounced'], 'Boolean');
+ }
+ if (data.hasOwnProperty('isprovisioned')) {
+ obj['isprovisioned'] = ApiClient.convertToType(data['isprovisioned'], 'Boolean');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('lastname')) {
+ obj['lastname'] = ApiClient.convertToType(data['lastname'], 'String');
+ }
+ if (data.hasOwnProperty('leadsource')) {
+ obj['leadsource'] = ApiClient.convertToType(data['leadsource'], 'String');
+ }
+ if (data.hasOwnProperty('level')) {
+ obj['level'] = ApiClient.convertToType(data['level'], 'String');
+ }
+ if (data.hasOwnProperty('linkedin')) {
+ obj['linkedin'] = ApiClient.convertToType(data['linkedin'], 'String');
+ }
+ if (data.hasOwnProperty('mailingaddress')) {
+ obj['mailingaddress'] = Address.constructFromObject(data['mailingaddress']);
+ }
+ if (data.hasOwnProperty('mailinglists')) {
+ obj['mailinglists'] = ApiClient.convertToType(data['mailinglists'], 'String');
+ }
+ if (data.hasOwnProperty('mobilephone')) {
+ obj['mobilephone'] = ApiClient.convertToType(data['mobilephone'], 'String');
+ }
+ if (data.hasOwnProperty('name')) {
+ obj['name'] = ApiClient.convertToType(data['name'], 'String');
+ }
+ if (data.hasOwnProperty('otheraddress')) {
+ obj['otheraddress'] = Address.constructFromObject(data['otheraddress']);
+ }
+ if (data.hasOwnProperty('otherphone')) {
+ obj['otherphone'] = ApiClient.convertToType(data['otherphone'], 'String');
+ }
+ if (data.hasOwnProperty('ownerid')) {
+ obj['ownerid'] = ApiClient.convertToType(data['ownerid'], 'String');
+ }
+ if (data.hasOwnProperty('personalemail')) {
+ obj['personalemail'] = ApiClient.convertToType(data['personalemail'], 'String');
+ }
+ if (data.hasOwnProperty('phone')) {
+ obj['phone'] = ApiClient.convertToType(data['phone'], 'String');
+ }
+ if (data.hasOwnProperty('photourl')) {
+ obj['photourl'] = ApiClient.convertToType(data['photourl'], 'String');
+ }
+ if (data.hasOwnProperty('recruitingstatus')) {
+ obj['recruitingstatus'] = ApiClient.convertToType(data['recruitingstatus'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('reportstoid')) {
+ obj['reportstoid'] = ApiClient.convertToType(data['reportstoid'], 'String');
+ }
+ if (data.hasOwnProperty('salutation')) {
+ obj['salutation'] = ApiClient.convertToType(data['salutation'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'String');
+ }
+ if (data.hasOwnProperty('title')) {
+ obj['title'] = ApiClient.convertToType(data['title'], 'String');
+ }
+ if (data.hasOwnProperty('type')) {
+ obj['type'] = ApiClient.convertToType(data['type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * tenant identifier
+ * @member {String} tenantid
+ */
+Contact.prototype['tenantid'] = undefined;
+
+/**
+ * The primary account ID of this contact
+ * @member {String} accountid
+ */
+Contact.prototype['accountid'] = undefined;
+
+/**
+ * Assistant Name
+ * @member {String} assistantname
+ */
+Contact.prototype['assistantname'] = undefined;
+
+/**
+ * Asst. Phone
+ * @member {String} assistantphone
+ */
+Contact.prototype['assistantphone'] = undefined;
+
+/**
+ * Birthdate
+ * @member {String} birthdate
+ */
+Contact.prototype['birthdate'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} createdbyid
+ */
+Contact.prototype['createdbyid'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} createddate
+ */
+Contact.prototype['createddate'] = undefined;
+
+/**
+ * Department
+ * @member {String} department
+ */
+Contact.prototype['department'] = undefined;
+
+/**
+ * Description
+ * @member {String} description
+ */
+Contact.prototype['description'] = undefined;
+
+/**
+ * Do Not Call?
+ * @member {Boolean} donotcall
+ */
+Contact.prototype['donotcall'] = undefined;
+
+/**
+ * Email address
+ * @member {String} email
+ */
+Contact.prototype['email'] = undefined;
+
+/**
+ * Email Bounce Date
+ * @member {String} emailbounceddate
+ */
+Contact.prototype['emailbounceddate'] = undefined;
+
+/**
+ * Email Bounce Reason
+ * @member {String} emailbouncedreason
+ */
+Contact.prototype['emailbouncedreason'] = undefined;
+
+/**
+ * Taxnexus Enrollment Status
+ * @member {String} enrollmentstatus
+ */
+Contact.prototype['enrollmentstatus'] = undefined;
+
+/**
+ * Fax Number
+ * @member {String} fax
+ */
+Contact.prototype['fax'] = undefined;
+
+/**
+ * First Name
+ * @member {String} firstname
+ */
+Contact.prototype['firstname'] = undefined;
+
+/**
+ * Email Opt Out
+ * @member {Boolean} hasoptedoutofemail
+ */
+Contact.prototype['hasoptedoutofemail'] = undefined;
+
+/**
+ * Fax Opt Out
+ * @member {Boolean} hasoptedoutoffax
+ */
+Contact.prototype['hasoptedoutoffax'] = undefined;
+
+/**
+ * Home Phone
+ * @member {String} homephone
+ */
+Contact.prototype['homephone'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} id
+ */
+Contact.prototype['id'] = undefined;
+
+/**
+ * Does this contact have bounced emails?
+ * @member {Boolean} isemailbounced
+ */
+Contact.prototype['isemailbounced'] = undefined;
+
+/**
+ * Is Provisioned?
+ * @member {Boolean} isprovisioned
+ */
+Contact.prototype['isprovisioned'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} lastmodifiedbyid
+ */
+Contact.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} lastmodifieddate
+ */
+Contact.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * Last Name
+ * @member {String} lastname
+ */
+Contact.prototype['lastname'] = undefined;
+
+/**
+ * Lead Source
+ * @member {String} leadsource
+ */
+Contact.prototype['leadsource'] = undefined;
+
+/**
+ * Level
+ * @member {String} level
+ */
+Contact.prototype['level'] = undefined;
+
+/**
+ * LinkedIn Page
+ * @member {String} linkedin
+ */
+Contact.prototype['linkedin'] = undefined;
+
+/**
+ * @member {module:model/Address} mailingaddress
+ */
+Contact.prototype['mailingaddress'] = undefined;
+
+/**
+ * Mailing Lists
+ * @member {String} mailinglists
+ */
+Contact.prototype['mailinglists'] = undefined;
+
+/**
+ * Mobile Phone
+ * @member {String} mobilephone
+ */
+Contact.prototype['mobilephone'] = undefined;
+
+/**
+ * Full Name
+ * @member {String} name
+ */
+Contact.prototype['name'] = undefined;
+
+/**
+ * @member {module:model/Address} otheraddress
+ */
+Contact.prototype['otheraddress'] = undefined;
+
+/**
+ * Other Phone
+ * @member {String} otherphone
+ */
+Contact.prototype['otherphone'] = undefined;
+
+/**
+ * The User ID of the user who owns this Contact
+ * @member {String} ownerid
+ */
+Contact.prototype['ownerid'] = undefined;
+
+/**
+ * Personal Email Address for this Contact
+ * @member {String} personalemail
+ */
+Contact.prototype['personalemail'] = undefined;
+
+/**
+ * Phone Number
+ * @member {String} phone
+ */
+Contact.prototype['phone'] = undefined;
+
+/**
+ * URL of a photograph of this User
+ * @member {String} photourl
+ */
+Contact.prototype['photourl'] = undefined;
+
+/**
+ * Recruiting Status
+ * @member {String} recruitingstatus
+ */
+Contact.prototype['recruitingstatus'] = undefined;
+
+/**
+ * External reference to this contact, if any
+ * @member {String} ref
+ */
+Contact.prototype['ref'] = undefined;
+
+/**
+ * Reports To Contact ID
+ * @member {String} reportstoid
+ */
+Contact.prototype['reportstoid'] = undefined;
+
+/**
+ * Contact Salutation
+ * @member {String} salutation
+ */
+Contact.prototype['salutation'] = undefined;
+
+/**
+ * The Contact Status
+ * @member {String} status
+ */
+Contact.prototype['status'] = undefined;
+
+/**
+ * Contact Title
+ * @member {String} title
+ */
+Contact.prototype['title'] = undefined;
+
+/**
+ * Contact Type
+ * @member {String} type
+ */
+Contact.prototype['type'] = undefined;
+
+
+
+
+
+
+export default Contact;
+
diff --git a/client/sf-gate/src/model/ContactRequest.js b/client/sf-gate/src/model/ContactRequest.js
new file mode 100644
index 0000000..2e4030f
--- /dev/null
+++ b/client/sf-gate/src/model/ContactRequest.js
@@ -0,0 +1,85 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contact from './Contact';
+import RequestMeta from './RequestMeta';
+
+/**
+ * The ContactRequest model module.
+ * @module model/ContactRequest
+ * @version 0.0.2
+ */
+class ContactRequest {
+ /**
+ * Constructs a new ContactRequest
.
+ * @alias module:model/ContactRequest
+ * @param data {Array.}
+ * @param meta {module:model/RequestMeta}
+ */
+ constructor(data, meta) {
+
+ ContactRequest.initialize(this, data, meta);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, data, meta) {
+ obj['data'] = data;
+ obj['meta'] = meta;
+ }
+
+ /**
+ * Constructs a ContactRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContactRequest} obj Optional instance to populate.
+ * @return {module:model/ContactRequest} The populated ContactRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContactRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Contact]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+ContactRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+ContactRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default ContactRequest;
+
diff --git a/client/sf-gate/src/model/ContactResponse.js b/client/sf-gate/src/model/ContactResponse.js
new file mode 100644
index 0000000..ed5f221
--- /dev/null
+++ b/client/sf-gate/src/model/ContactResponse.js
@@ -0,0 +1,81 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contact from './Contact';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ContactResponse model module.
+ * @module model/ContactResponse
+ * @version 0.0.2
+ */
+class ContactResponse {
+ /**
+ * Constructs a new ContactResponse
.
+ * @alias module:model/ContactResponse
+ */
+ constructor() {
+
+ ContactResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContactResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContactResponse} obj Optional instance to populate.
+ * @return {module:model/ContactResponse} The populated ContactResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContactResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Contact]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+ContactResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+ContactResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default ContactResponse;
+
diff --git a/client/sf-gate/src/model/Contract.js b/client/sf-gate/src/model/Contract.js
new file mode 100644
index 0000000..c211b00
--- /dev/null
+++ b/client/sf-gate/src/model/Contract.js
@@ -0,0 +1,332 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+
+/**
+ * The Contract model module.
+ * @module model/Contract
+ * @version 0.0.2
+ */
+class Contract {
+ /**
+ * Constructs a new Contract
.
+ * @alias module:model/Contract
+ */
+ constructor() {
+
+ Contract.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Contract
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Contract} obj Optional instance to populate.
+ * @return {module:model/Contract} The populated Contract
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Contract();
+
+ if (data.hasOwnProperty('AccountID')) {
+ obj['AccountID'] = ApiClient.convertToType(data['AccountID'], 'String');
+ }
+ if (data.hasOwnProperty('ActivatedByID')) {
+ obj['ActivatedByID'] = ApiClient.convertToType(data['ActivatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('ActivatedDate')) {
+ obj['ActivatedDate'] = ApiClient.convertToType(data['ActivatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('BillingAddress')) {
+ obj['BillingAddress'] = Address.constructFromObject(data['BillingAddress']);
+ }
+ if (data.hasOwnProperty('BillingContactID')) {
+ obj['BillingContactID'] = ApiClient.convertToType(data['BillingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('CompanySignedDate')) {
+ obj['CompanySignedDate'] = ApiClient.convertToType(data['CompanySignedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CompanySignedID')) {
+ obj['CompanySignedID'] = ApiClient.convertToType(data['CompanySignedID'], 'String');
+ }
+ if (data.hasOwnProperty('ContractNumber')) {
+ obj['ContractNumber'] = ApiClient.convertToType(data['ContractNumber'], 'String');
+ }
+ if (data.hasOwnProperty('ContractTerm')) {
+ obj['ContractTerm'] = ApiClient.convertToType(data['ContractTerm'], 'Number');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedDate')) {
+ obj['CustomerSignedDate'] = ApiClient.convertToType(data['CustomerSignedDate'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedID')) {
+ obj['CustomerSignedID'] = ApiClient.convertToType(data['CustomerSignedID'], 'String');
+ }
+ if (data.hasOwnProperty('CustomerSignedTitle')) {
+ obj['CustomerSignedTitle'] = ApiClient.convertToType(data['CustomerSignedTitle'], 'String');
+ }
+ if (data.hasOwnProperty('DefaultEndUserID')) {
+ obj['DefaultEndUserID'] = ApiClient.convertToType(data['DefaultEndUserID'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('EndDate')) {
+ obj['EndDate'] = ApiClient.convertToType(data['EndDate'], 'String');
+ }
+ if (data.hasOwnProperty('HourlyRate')) {
+ obj['HourlyRate'] = ApiClient.convertToType(data['HourlyRate'], 'Number');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('PaymentMethodID')) {
+ obj['PaymentMethodID'] = ApiClient.convertToType(data['PaymentMethodID'], 'String');
+ }
+ if (data.hasOwnProperty('PaymentTerms')) {
+ obj['PaymentTerms'] = ApiClient.convertToType(data['PaymentTerms'], 'String');
+ }
+ if (data.hasOwnProperty('Perpetual')) {
+ obj['Perpetual'] = ApiClient.convertToType(data['Perpetual'], 'Boolean');
+ }
+ if (data.hasOwnProperty('ShippingAddress')) {
+ obj['ShippingAddress'] = Address.constructFromObject(data['ShippingAddress']);
+ }
+ if (data.hasOwnProperty('ShippingContactID')) {
+ obj['ShippingContactID'] = ApiClient.convertToType(data['ShippingContactID'], 'String');
+ }
+ if (data.hasOwnProperty('StartDate')) {
+ obj['StartDate'] = ApiClient.convertToType(data['StartDate'], 'String');
+ }
+ if (data.hasOwnProperty('Status')) {
+ obj['Status'] = ApiClient.convertToType(data['Status'], 'String');
+ }
+ if (data.hasOwnProperty('TenantID')) {
+ obj['TenantID'] = ApiClient.convertToType(data['TenantID'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Account
+ * @member {String} AccountID
+ */
+Contract.prototype['AccountID'] = undefined;
+
+/**
+ * Activated By
+ * @member {String} ActivatedByID
+ */
+Contract.prototype['ActivatedByID'] = undefined;
+
+/**
+ * Activated Date
+ * @member {String} ActivatedDate
+ */
+Contract.prototype['ActivatedDate'] = undefined;
+
+/**
+ * @member {module:model/Address} BillingAddress
+ */
+Contract.prototype['BillingAddress'] = undefined;
+
+/**
+ * Billing Contact
+ * @member {String} BillingContactID
+ */
+Contract.prototype['BillingContactID'] = undefined;
+
+/**
+ * Company Signed Date
+ * @member {String} CompanySignedDate
+ */
+Contract.prototype['CompanySignedDate'] = undefined;
+
+/**
+ * Company Signed By
+ * @member {String} CompanySignedID
+ */
+Contract.prototype['CompanySignedID'] = undefined;
+
+/**
+ * Contract Number
+ * @member {String} ContractNumber
+ */
+Contract.prototype['ContractNumber'] = undefined;
+
+/**
+ * Contract Term (months)
+ * @member {Number} ContractTerm
+ */
+Contract.prototype['ContractTerm'] = undefined;
+
+/**
+ * Created By User ID
+ * @member {String} CreatedByID
+ */
+Contract.prototype['CreatedByID'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} CreatedDate
+ */
+Contract.prototype['CreatedDate'] = undefined;
+
+/**
+ * Customer Signed Date
+ * @member {String} CustomerSignedDate
+ */
+Contract.prototype['CustomerSignedDate'] = undefined;
+
+/**
+ * Customer Signed By
+ * @member {String} CustomerSignedID
+ */
+Contract.prototype['CustomerSignedID'] = undefined;
+
+/**
+ * Customer Signed Title
+ * @member {String} CustomerSignedTitle
+ */
+Contract.prototype['CustomerSignedTitle'] = undefined;
+
+/**
+ * End User
+ * @member {String} DefaultEndUserID
+ */
+Contract.prototype['DefaultEndUserID'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Contract.prototype['Description'] = undefined;
+
+/**
+ * Contract End Date
+ * @member {String} EndDate
+ */
+Contract.prototype['EndDate'] = undefined;
+
+/**
+ * Hourly Rate
+ * @member {Number} HourlyRate
+ */
+Contract.prototype['HourlyRate'] = undefined;
+
+/**
+ * Telnexus Record Id
+ * @member {String} ID
+ */
+Contract.prototype['ID'] = undefined;
+
+/**
+ * Last Modified By User ID
+ * @member {String} LastModifiedByID
+ */
+Contract.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} LastModifiedDate
+ */
+Contract.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Contract Name
+ * @member {String} Name
+ */
+Contract.prototype['Name'] = undefined;
+
+/**
+ * Payment Method
+ * @member {String} PaymentMethodID
+ */
+Contract.prototype['PaymentMethodID'] = undefined;
+
+/**
+ * Payment Terms
+ * @member {String} PaymentTerms
+ */
+Contract.prototype['PaymentTerms'] = undefined;
+
+/**
+ * Perpetual Agreement?
+ * @member {Boolean} Perpetual
+ */
+Contract.prototype['Perpetual'] = undefined;
+
+/**
+ * @member {module:model/Address} ShippingAddress
+ */
+Contract.prototype['ShippingAddress'] = undefined;
+
+/**
+ * Shipping Contact
+ * @member {String} ShippingContactID
+ */
+Contract.prototype['ShippingContactID'] = undefined;
+
+/**
+ * Contract Start Date
+ * @member {String} StartDate
+ */
+Contract.prototype['StartDate'] = undefined;
+
+/**
+ * Status
+ * @member {String} Status
+ */
+Contract.prototype['Status'] = undefined;
+
+/**
+ * Tenant Identifier
+ * @member {String} TenantID
+ */
+Contract.prototype['TenantID'] = undefined;
+
+
+
+
+
+
+export default Contract;
+
diff --git a/client/sf-gate/src/model/ContractRequest.js b/client/sf-gate/src/model/ContractRequest.js
new file mode 100644
index 0000000..4aee39e
--- /dev/null
+++ b/client/sf-gate/src/model/ContractRequest.js
@@ -0,0 +1,72 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contract from './Contract';
+
+/**
+ * The ContractRequest model module.
+ * @module model/ContractRequest
+ * @version 0.0.2
+ */
+class ContractRequest {
+ /**
+ * Constructs a new ContractRequest
.
+ * @alias module:model/ContractRequest
+ */
+ constructor() {
+
+ ContractRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContractRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContractRequest} obj Optional instance to populate.
+ * @return {module:model/ContractRequest} The populated ContractRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContractRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contract]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContractRequest.prototype['Data'] = undefined;
+
+
+
+
+
+
+export default ContractRequest;
+
diff --git a/client/sf-gate/src/model/ContractResponse.js b/client/sf-gate/src/model/ContractResponse.js
new file mode 100644
index 0000000..118f8be
--- /dev/null
+++ b/client/sf-gate/src/model/ContractResponse.js
@@ -0,0 +1,81 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Contract from './Contract';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The ContractResponse model module.
+ * @module model/ContractResponse
+ * @version 0.0.2
+ */
+class ContractResponse {
+ /**
+ * Constructs a new ContractResponse
.
+ * @alias module:model/ContractResponse
+ */
+ constructor() {
+
+ ContractResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ContractResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ContractResponse} obj Optional instance to populate.
+ * @return {module:model/ContractResponse} The populated ContractResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ContractResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Contract]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+ContractResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+ContractResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default ContractResponse;
+
diff --git a/client/sf-gate/src/model/Database.js b/client/sf-gate/src/model/Database.js
new file mode 100644
index 0000000..3c1fdb7
--- /dev/null
+++ b/client/sf-gate/src/model/Database.js
@@ -0,0 +1,181 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Database model module.
+ * @module model/Database
+ * @version 0.0.2
+ */
+class Database {
+ /**
+ * Constructs a new Database
.
+ * A Database provisioned and owned by a Tenant
+ * @alias module:model/Database
+ */
+ constructor() {
+
+ Database.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Database
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Database} obj Optional instance to populate.
+ * @return {module:model/Database} The populated Database
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Database();
+
+ if (data.hasOwnProperty('active')) {
+ obj['active'] = ApiClient.convertToType(data['active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('clusterid')) {
+ obj['clusterid'] = ApiClient.convertToType(data['clusterid'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('databasename')) {
+ obj['databasename'] = ApiClient.convertToType(data['databasename'], 'String');
+ }
+ if (data.hasOwnProperty('dsn')) {
+ obj['dsn'] = ApiClient.convertToType(data['dsn'], 'String');
+ }
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('microservices')) {
+ obj['microservices'] = ApiClient.convertToType(data['microservices'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'String');
+ }
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('type')) {
+ obj['type'] = ApiClient.convertToType(data['type'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Is this database active?
+ * @member {Boolean} active
+ */
+Database.prototype['active'] = undefined;
+
+/**
+ * The ID of the Cluster in which this database is deployed
+ * @member {String} clusterid
+ */
+Database.prototype['clusterid'] = undefined;
+
+/**
+ * Created By
+ * @member {String} createdbyid
+ */
+Database.prototype['createdbyid'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} createddate
+ */
+Database.prototype['createddate'] = undefined;
+
+/**
+ * The name of the physical database in the cluster
+ * @member {String} databasename
+ */
+Database.prototype['databasename'] = undefined;
+
+/**
+ * Database connection string
+ * @member {String} dsn
+ */
+Database.prototype['dsn'] = undefined;
+
+/**
+ * Record Id
+ * @member {String} id
+ */
+Database.prototype['id'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} lastmodifiedbyid
+ */
+Database.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} lastmodifieddate
+ */
+Database.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * List of Taxnexus microservices implemented by this Database
+ * @member {String} microservices
+ */
+Database.prototype['microservices'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} status
+ */
+Database.prototype['status'] = undefined;
+
+/**
+ * The ID of the tenant who owns this Database
+ * @member {String} tenantid
+ */
+Database.prototype['tenantid'] = undefined;
+
+/**
+ * The type of Database (mysql, etc)
+ * @member {String} type
+ */
+Database.prototype['type'] = undefined;
+
+
+
+
+
+
+export default Database;
+
diff --git a/client/sf-gate/src/model/DatabaseRequest.js b/client/sf-gate/src/model/DatabaseRequest.js
new file mode 100644
index 0000000..37a7f16
--- /dev/null
+++ b/client/sf-gate/src/model/DatabaseRequest.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import RequestMeta from './RequestMeta';
+
+/**
+ * The DatabaseRequest model module.
+ * @module model/DatabaseRequest
+ * @version 0.0.2
+ */
+class DatabaseRequest {
+ /**
+ * Constructs a new DatabaseRequest
.
+ * An array of Database objects
+ * @alias module:model/DatabaseRequest
+ */
+ constructor() {
+
+ DatabaseRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DatabaseRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DatabaseRequest} obj Optional instance to populate.
+ * @return {module:model/DatabaseRequest} The populated DatabaseRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DatabaseRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Database]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+DatabaseRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+DatabaseRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default DatabaseRequest;
+
diff --git a/client/sf-gate/src/model/DatabaseResponse.js b/client/sf-gate/src/model/DatabaseResponse.js
new file mode 100644
index 0000000..f333a78
--- /dev/null
+++ b/client/sf-gate/src/model/DatabaseResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DatabaseResponse model module.
+ * @module model/DatabaseResponse
+ * @version 0.0.2
+ */
+class DatabaseResponse {
+ /**
+ * Constructs a new DatabaseResponse
.
+ * An array of Database objects
+ * @alias module:model/DatabaseResponse
+ */
+ constructor() {
+
+ DatabaseResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DatabaseResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DatabaseResponse} obj Optional instance to populate.
+ * @return {module:model/DatabaseResponse} The populated DatabaseResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DatabaseResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Database]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+DatabaseResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+DatabaseResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default DatabaseResponse;
+
diff --git a/client/sf-gate/src/model/DeleteResponse.js b/client/sf-gate/src/model/DeleteResponse.js
new file mode 100644
index 0000000..4cbca36
--- /dev/null
+++ b/client/sf-gate/src/model/DeleteResponse.js
@@ -0,0 +1,81 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Message from './Message';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DeleteResponse model module.
+ * @module model/DeleteResponse
+ * @version 0.0.2
+ */
+class DeleteResponse {
+ /**
+ * Constructs a new DeleteResponse
.
+ * @alias module:model/DeleteResponse
+ */
+ constructor() {
+
+ DeleteResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DeleteResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DeleteResponse} obj Optional instance to populate.
+ * @return {module:model/DeleteResponse} The populated DeleteResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DeleteResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Message]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DeleteResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DeleteResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DeleteResponse;
+
diff --git a/client/sf-gate/src/model/Error.js b/client/sf-gate/src/model/Error.js
new file mode 100644
index 0000000..7512064
--- /dev/null
+++ b/client/sf-gate/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/sf-gate/src/model/InvalidError.js b/client/sf-gate/src/model/InvalidError.js
new file mode 100644
index 0000000..05d9df3
--- /dev/null
+++ b/client/sf-gate/src/model/InvalidError.js
@@ -0,0 +1,119 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Error from './Error';
+import InvalidErrorAllOf from './InvalidErrorAllOf';
+
+/**
+ * The InvalidError model module.
+ * @module model/InvalidError
+ * @version 0.0.2
+ */
+class InvalidError {
+ /**
+ * Constructs a new InvalidError
.
+ * @alias module:model/InvalidError
+ * @implements module:model/Error
+ * @implements module:model/InvalidErrorAllOf
+ */
+ constructor() {
+ Error.initialize(this);InvalidErrorAllOf.initialize(this);
+ InvalidError.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidError
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidError} obj Optional instance to populate.
+ * @return {module:model/InvalidError} The populated InvalidError
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidError();
+ Error.constructFromObject(data, obj);
+ InvalidErrorAllOf.constructFromObject(data, obj);
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+InvalidError.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+InvalidError.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+InvalidError.prototype['Message'] = undefined;
+
+/**
+ * @member {Array.} details
+ */
+InvalidError.prototype['details'] = undefined;
+
+
+// Implement Error interface:
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+// Implement InvalidErrorAllOf interface:
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+export default InvalidError;
+
diff --git a/client/sf-gate/src/model/InvalidErrorAllOf.js b/client/sf-gate/src/model/InvalidErrorAllOf.js
new file mode 100644
index 0000000..441fcce
--- /dev/null
+++ b/client/sf-gate/src/model/InvalidErrorAllOf.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The InvalidErrorAllOf model module.
+ * @module model/InvalidErrorAllOf
+ * @version 0.0.2
+ */
+class InvalidErrorAllOf {
+ /**
+ * Constructs a new InvalidErrorAllOf
.
+ * @alias module:model/InvalidErrorAllOf
+ */
+ constructor() {
+
+ InvalidErrorAllOf.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a InvalidErrorAllOf
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/InvalidErrorAllOf} obj Optional instance to populate.
+ * @return {module:model/InvalidErrorAllOf} The populated InvalidErrorAllOf
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new InvalidErrorAllOf();
+
+ if (data.hasOwnProperty('details')) {
+ obj['details'] = ApiClient.convertToType(data['details'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} details
+ */
+InvalidErrorAllOf.prototype['details'] = undefined;
+
+
+
+
+
+
+export default InvalidErrorAllOf;
+
diff --git a/client/sf-gate/src/model/Message.js b/client/sf-gate/src/model/Message.js
new file mode 100644
index 0000000..898a968
--- /dev/null
+++ b/client/sf-gate/src/model/Message.js
@@ -0,0 +1,87 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Message model module.
+ * @module model/Message
+ * @version 0.0.2
+ */
+class Message {
+ /**
+ * Constructs a new Message
.
+ * @alias module:model/Message
+ */
+ constructor() {
+
+ Message.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Message
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Message} obj Optional instance to populate.
+ * @return {module:model/Message} The populated Message
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Message();
+
+ if (data.hasOwnProperty('message')) {
+ obj['message'] = ApiClient.convertToType(data['message'], 'String');
+ }
+ if (data.hasOwnProperty('ref')) {
+ obj['ref'] = ApiClient.convertToType(data['ref'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} message
+ */
+Message.prototype['message'] = undefined;
+
+/**
+ * @member {String} ref
+ */
+Message.prototype['ref'] = undefined;
+
+/**
+ * @member {Number} status
+ */
+Message.prototype['status'] = undefined;
+
+
+
+
+
+
+export default Message;
+
diff --git a/client/sf-gate/src/model/Pagination.js b/client/sf-gate/src/model/Pagination.js
new file mode 100644
index 0000000..c5eebec
--- /dev/null
+++ b/client/sf-gate/src/model/Pagination.js
@@ -0,0 +1,95 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Pagination model module.
+ * @module model/Pagination
+ * @version 0.0.2
+ */
+class Pagination {
+ /**
+ * Constructs a new Pagination
.
+ * @alias module:model/Pagination
+ */
+ constructor() {
+
+ Pagination.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Pagination
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Pagination} obj Optional instance to populate.
+ * @return {module:model/Pagination} The populated Pagination
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Pagination();
+
+ if (data.hasOwnProperty('limit')) {
+ obj['limit'] = ApiClient.convertToType(data['limit'], 'Number');
+ }
+ if (data.hasOwnProperty('pagesize')) {
+ obj['pagesize'] = ApiClient.convertToType(data['pagesize'], 'Number');
+ }
+ if (data.hasOwnProperty('poffset')) {
+ obj['poffset'] = ApiClient.convertToType(data['poffset'], 'Number');
+ }
+ if (data.hasOwnProperty('setsize')) {
+ obj['setsize'] = ApiClient.convertToType(data['setsize'], 'Number');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} limit
+ */
+Pagination.prototype['limit'] = undefined;
+
+/**
+ * @member {Number} pagesize
+ */
+Pagination.prototype['pagesize'] = undefined;
+
+/**
+ * @member {Number} poffset
+ */
+Pagination.prototype['poffset'] = undefined;
+
+/**
+ * @member {Number} setsize
+ */
+Pagination.prototype['setsize'] = undefined;
+
+
+
+
+
+
+export default Pagination;
+
diff --git a/client/sf-gate/src/model/RequestMeta.js b/client/sf-gate/src/model/RequestMeta.js
new file mode 100644
index 0000000..e2146a4
--- /dev/null
+++ b/client/sf-gate/src/model/RequestMeta.js
@@ -0,0 +1,74 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RequestMeta model module.
+ * @module model/RequestMeta
+ * @version 0.0.2
+ */
+class RequestMeta {
+ /**
+ * Constructs a new RequestMeta
.
+ * @alias module:model/RequestMeta
+ * @param taxnexusAccount {String} Taxnexus Account Number of the Reseller or OEM
+ */
+ constructor(taxnexusAccount) {
+
+ RequestMeta.initialize(this, taxnexusAccount);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, taxnexusAccount) {
+ obj['TaxnexusAccount'] = taxnexusAccount;
+ }
+
+ /**
+ * Constructs a RequestMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RequestMeta} obj Optional instance to populate.
+ * @return {module:model/RequestMeta} The populated RequestMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RequestMeta();
+
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the Reseller or OEM
+ * @member {String} TaxnexusAccount
+ */
+RequestMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default RequestMeta;
+
diff --git a/client/sf-gate/src/model/ResponseMeta.js b/client/sf-gate/src/model/ResponseMeta.js
new file mode 100644
index 0000000..5f9f91b
--- /dev/null
+++ b/client/sf-gate/src/model/ResponseMeta.js
@@ -0,0 +1,171 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Pagination from './Pagination';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('Pagination')) {
+ obj['Pagination'] = Pagination.constructFromObject(data['Pagination']);
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * @member {module:model/Pagination} Pagination
+ */
+ResponseMeta.prototype['Pagination'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/sf-gate/src/model/Role.js b/client/sf-gate/src/model/Role.js
new file mode 100644
index 0000000..df5133f
--- /dev/null
+++ b/client/sf-gate/src/model/Role.js
@@ -0,0 +1,145 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Role model module.
+ * @module model/Role
+ * @version 0.0.2
+ */
+class Role {
+ /**
+ * Constructs a new Role
.
+ * A functional role within a Tenant
+ * @alias module:model/Role
+ */
+ constructor() {
+
+ Role.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Role
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Role} obj Optional instance to populate.
+ * @return {module:model/Role} The populated Role
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Role();
+
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('auth0roleid')) {
+ obj['auth0roleid'] = ApiClient.convertToType(data['auth0roleid'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('description')) {
+ obj['description'] = ApiClient.convertToType(data['description'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('rolename')) {
+ obj['rolename'] = ApiClient.convertToType(data['rolename'], 'String');
+ }
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * record id
+ * @member {String} id
+ */
+Role.prototype['id'] = undefined;
+
+/**
+ * the corresponding auth0 role
+ * @member {String} auth0roleid
+ */
+Role.prototype['auth0roleid'] = undefined;
+
+/**
+ * created by
+ * @member {String} createdbyid
+ */
+Role.prototype['createdbyid'] = undefined;
+
+/**
+ * created date
+ * @member {String} createddate
+ */
+Role.prototype['createddate'] = undefined;
+
+/**
+ * role description
+ * @member {String} description
+ */
+Role.prototype['description'] = undefined;
+
+/**
+ * last modified by
+ * @member {String} lastmodifiedbyid
+ */
+Role.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * last modifed date
+ * @member {String} lastmodifieddate
+ */
+Role.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * the name of this role
+ * @member {String} rolename
+ */
+Role.prototype['rolename'] = undefined;
+
+/**
+ * the id of the tenant that owns this role
+ * @member {String} tenantid
+ */
+Role.prototype['tenantid'] = undefined;
+
+
+
+
+
+
+export default Role;
+
diff --git a/client/sf-gate/src/model/RoleRequest.js b/client/sf-gate/src/model/RoleRequest.js
new file mode 100644
index 0000000..805c8aa
--- /dev/null
+++ b/client/sf-gate/src/model/RoleRequest.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import RequestMeta from './RequestMeta';
+import Role from './Role';
+
+/**
+ * The RoleRequest model module.
+ * @module model/RoleRequest
+ * @version 0.0.2
+ */
+class RoleRequest {
+ /**
+ * Constructs a new RoleRequest
.
+ * An array of Role objects
+ * @alias module:model/RoleRequest
+ */
+ constructor() {
+
+ RoleRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a RoleRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RoleRequest} obj Optional instance to populate.
+ * @return {module:model/RoleRequest} The populated RoleRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RoleRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Role]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+RoleRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+RoleRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default RoleRequest;
+
diff --git a/client/sf-gate/src/model/RoleResponse.js b/client/sf-gate/src/model/RoleResponse.js
new file mode 100644
index 0000000..76e430b
--- /dev/null
+++ b/client/sf-gate/src/model/RoleResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Role from './Role';
+
+/**
+ * The RoleResponse model module.
+ * @module model/RoleResponse
+ * @version 0.0.2
+ */
+class RoleResponse {
+ /**
+ * Constructs a new RoleResponse
.
+ * An array of Role objects
+ * @alias module:model/RoleResponse
+ */
+ constructor() {
+
+ RoleResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a RoleResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RoleResponse} obj Optional instance to populate.
+ * @return {module:model/RoleResponse} The populated RoleResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RoleResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Role]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+RoleResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+RoleResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default RoleResponse;
+
diff --git a/client/sf-gate/src/model/Template.js b/client/sf-gate/src/model/Template.js
new file mode 100644
index 0000000..629ad06
--- /dev/null
+++ b/client/sf-gate/src/model/Template.js
@@ -0,0 +1,203 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Template model module.
+ * @module model/Template
+ * @version 0.0.2
+ */
+class Template {
+ /**
+ * Constructs a new Template
.
+ * @alias module:model/Template
+ */
+ constructor() {
+
+ Template.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Template
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Template} obj Optional instance to populate.
+ * @return {module:model/Template} The populated Template
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Template();
+
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('CompanyID')) {
+ obj['CompanyID'] = ApiClient.convertToType(data['CompanyID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedByID')) {
+ obj['CreatedByID'] = ApiClient.convertToType(data['CreatedByID'], 'String');
+ }
+ if (data.hasOwnProperty('CreatedDate')) {
+ obj['CreatedDate'] = ApiClient.convertToType(data['CreatedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('HTML')) {
+ obj['HTML'] = ApiClient.convertToType(data['HTML'], 'Blob');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('IsActive')) {
+ obj['IsActive'] = ApiClient.convertToType(data['IsActive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('IsMaster')) {
+ obj['IsMaster'] = ApiClient.convertToType(data['IsMaster'], 'Boolean');
+ }
+ if (data.hasOwnProperty('LastModifiedByID')) {
+ obj['LastModifiedByID'] = ApiClient.convertToType(data['LastModifiedByID'], 'String');
+ }
+ if (data.hasOwnProperty('LastModifiedDate')) {
+ obj['LastModifiedDate'] = ApiClient.convertToType(data['LastModifiedDate'], 'String');
+ }
+ if (data.hasOwnProperty('Name')) {
+ obj['Name'] = ApiClient.convertToType(data['Name'], 'String');
+ }
+ if (data.hasOwnProperty('ObjectType')) {
+ obj['ObjectType'] = ApiClient.convertToType(data['ObjectType'], 'String');
+ }
+ if (data.hasOwnProperty('RecordTypeName')) {
+ obj['RecordTypeName'] = ApiClient.convertToType(data['RecordTypeName'], 'String');
+ }
+ if (data.hasOwnProperty('Type')) {
+ obj['Type'] = ApiClient.convertToType(data['Type'], 'String');
+ }
+ if (data.hasOwnProperty('URL')) {
+ obj['URL'] = ApiClient.convertToType(data['URL'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * tenant identifier
+ * @member {String} tenantid
+ */
+Template.prototype['tenantid'] = undefined;
+
+/**
+ * Company
+ * @member {String} CompanyID
+ */
+Template.prototype['CompanyID'] = undefined;
+
+/**
+ * @member {String} CreatedByID
+ */
+Template.prototype['CreatedByID'] = undefined;
+
+/**
+ * @member {String} CreatedDate
+ */
+Template.prototype['CreatedDate'] = undefined;
+
+/**
+ * Description
+ * @member {String} Description
+ */
+Template.prototype['Description'] = undefined;
+
+/**
+ * HTML Body
+ * @member {Blob} HTML
+ */
+Template.prototype['HTML'] = undefined;
+
+/**
+ * Taxnexus Record Id
+ * @member {String} ID
+ */
+Template.prototype['ID'] = undefined;
+
+/**
+ * Active?
+ * @member {Boolean} IsActive
+ */
+Template.prototype['IsActive'] = undefined;
+
+/**
+ * Master Template?
+ * @member {Boolean} IsMaster
+ */
+Template.prototype['IsMaster'] = undefined;
+
+/**
+ * @member {String} LastModifiedByID
+ */
+Template.prototype['LastModifiedByID'] = undefined;
+
+/**
+ * @member {String} LastModifiedDate
+ */
+Template.prototype['LastModifiedDate'] = undefined;
+
+/**
+ * Template Name
+ * @member {String} Name
+ */
+Template.prototype['Name'] = undefined;
+
+/**
+ * Object
+ * @member {String} ObjectType
+ */
+Template.prototype['ObjectType'] = undefined;
+
+/**
+ * Record Type Name
+ * @member {String} RecordTypeName
+ */
+Template.prototype['RecordTypeName'] = undefined;
+
+/**
+ * Type
+ * @member {String} Type
+ */
+Template.prototype['Type'] = undefined;
+
+/**
+ * URL
+ * @member {String} URL
+ */
+Template.prototype['URL'] = undefined;
+
+
+
+
+
+
+export default Template;
+
diff --git a/client/sf-gate/src/model/TemplateResponse.js b/client/sf-gate/src/model/TemplateResponse.js
new file mode 100644
index 0000000..e8b7e81
--- /dev/null
+++ b/client/sf-gate/src/model/TemplateResponse.js
@@ -0,0 +1,81 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Template from './Template';
+
+/**
+ * The TemplateResponse model module.
+ * @module model/TemplateResponse
+ * @version 0.0.2
+ */
+class TemplateResponse {
+ /**
+ * Constructs a new TemplateResponse
.
+ * @alias module:model/TemplateResponse
+ */
+ constructor() {
+
+ TemplateResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TemplateResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TemplateResponse} obj Optional instance to populate.
+ * @return {module:model/TemplateResponse} The populated TemplateResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TemplateResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Template]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+TemplateResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+TemplateResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default TemplateResponse;
+
diff --git a/client/sf-gate/src/model/Tenant.js b/client/sf-gate/src/model/Tenant.js
new file mode 100644
index 0000000..49a6980
--- /dev/null
+++ b/client/sf-gate/src/model/Tenant.js
@@ -0,0 +1,190 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Database from './Database';
+import Role from './Role';
+import TenantUser from './TenantUser';
+
+/**
+ * The Tenant model module.
+ * @module model/Tenant
+ * @version 0.0.2
+ */
+class Tenant {
+ /**
+ * Constructs a new Tenant
.
+ * Taxnexus Account Tenant
+ * @alias module:model/Tenant
+ */
+ constructor() {
+
+ Tenant.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Tenant
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Tenant} obj Optional instance to populate.
+ * @return {module:model/Tenant} The populated Tenant
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Tenant();
+
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('accountid')) {
+ obj['accountid'] = ApiClient.convertToType(data['accountid'], 'String');
+ }
+ if (data.hasOwnProperty('active')) {
+ obj['active'] = ApiClient.convertToType(data['active'], 'Boolean');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('status')) {
+ obj['status'] = ApiClient.convertToType(data['status'], 'String');
+ }
+ if (data.hasOwnProperty('tenantname')) {
+ obj['tenantname'] = ApiClient.convertToType(data['tenantname'], 'String');
+ }
+ if (data.hasOwnProperty('type')) {
+ obj['type'] = ApiClient.convertToType(data['type'], 'String');
+ }
+ if (data.hasOwnProperty('version')) {
+ obj['version'] = ApiClient.convertToType(data['version'], 'String');
+ }
+ if (data.hasOwnProperty('databases')) {
+ obj['databases'] = ApiClient.convertToType(data['databases'], [Database]);
+ }
+ if (data.hasOwnProperty('roles')) {
+ obj['roles'] = ApiClient.convertToType(data['roles'], [Role]);
+ }
+ if (data.hasOwnProperty('tenantusers')) {
+ obj['tenantusers'] = ApiClient.convertToType(data['tenantusers'], [TenantUser]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Record Id
+ * @member {String} id
+ */
+Tenant.prototype['id'] = undefined;
+
+/**
+ * The Account that owns this Tenant
+ * @member {String} accountid
+ */
+Tenant.prototype['accountid'] = undefined;
+
+/**
+ * Is this Tenant currently active?
+ * @member {Boolean} active
+ */
+Tenant.prototype['active'] = undefined;
+
+/**
+ * Created By
+ * @member {String} createdbyid
+ */
+Tenant.prototype['createdbyid'] = undefined;
+
+/**
+ * Created Date
+ * @member {String} createddate
+ */
+Tenant.prototype['createddate'] = undefined;
+
+/**
+ * Last Modified By
+ * @member {String} lastmodifiedbyid
+ */
+Tenant.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modifed Date
+ * @member {String} lastmodifieddate
+ */
+Tenant.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * The current status of this Tenant
+ * @member {String} status
+ */
+Tenant.prototype['status'] = undefined;
+
+/**
+ * Name of the Tenant Resource
+ * @member {String} tenantname
+ */
+Tenant.prototype['tenantname'] = undefined;
+
+/**
+ * Type of tenant
+ * @member {String} type
+ */
+Tenant.prototype['type'] = undefined;
+
+/**
+ * The version number of the Tenant Onboarding system used to create this tenant
+ * @member {String} version
+ */
+Tenant.prototype['version'] = undefined;
+
+/**
+ * @member {Array.} databases
+ */
+Tenant.prototype['databases'] = undefined;
+
+/**
+ * @member {Array.} roles
+ */
+Tenant.prototype['roles'] = undefined;
+
+/**
+ * @member {Array.} tenantusers
+ */
+Tenant.prototype['tenantusers'] = undefined;
+
+
+
+
+
+
+export default Tenant;
+
diff --git a/client/sf-gate/src/model/TenantRequest.js b/client/sf-gate/src/model/TenantRequest.js
new file mode 100644
index 0000000..f509c24
--- /dev/null
+++ b/client/sf-gate/src/model/TenantRequest.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import RequestMeta from './RequestMeta';
+import Tenant from './Tenant';
+
+/**
+ * The TenantRequest model module.
+ * @module model/TenantRequest
+ * @version 0.0.2
+ */
+class TenantRequest {
+ /**
+ * Constructs a new TenantRequest
.
+ * An array of Tenant objects
+ * @alias module:model/TenantRequest
+ */
+ constructor() {
+
+ TenantRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantRequest} obj Optional instance to populate.
+ * @return {module:model/TenantRequest} The populated TenantRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantRequest();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Tenant]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = RequestMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+TenantRequest.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} meta
+ */
+TenantRequest.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default TenantRequest;
+
diff --git a/client/sf-gate/src/model/TenantResponse.js b/client/sf-gate/src/model/TenantResponse.js
new file mode 100644
index 0000000..085776a
--- /dev/null
+++ b/client/sf-gate/src/model/TenantResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import Tenant from './Tenant';
+
+/**
+ * The TenantResponse model module.
+ * @module model/TenantResponse
+ * @version 0.0.2
+ */
+class TenantResponse {
+ /**
+ * Constructs a new TenantResponse
.
+ * An array of Tenant objects
+ * @alias module:model/TenantResponse
+ */
+ constructor() {
+
+ TenantResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantResponse} obj Optional instance to populate.
+ * @return {module:model/TenantResponse} The populated TenantResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [Tenant]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+TenantResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+TenantResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default TenantResponse;
+
diff --git a/client/sf-gate/src/model/TenantUser.js b/client/sf-gate/src/model/TenantUser.js
new file mode 100644
index 0000000..6a45a2d
--- /dev/null
+++ b/client/sf-gate/src/model/TenantUser.js
@@ -0,0 +1,91 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The TenantUser model module.
+ * @module model/TenantUser
+ * @version 0.0.2
+ */
+class TenantUser {
+ /**
+ * Constructs a new TenantUser
.
+ * Relationship object that connects users to a tenant
+ * @alias module:model/TenantUser
+ */
+ constructor() {
+
+ TenantUser.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a TenantUser
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/TenantUser} obj Optional instance to populate.
+ * @return {module:model/TenantUser} The populated TenantUser
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new TenantUser();
+
+ if (data.hasOwnProperty('accesslevel')) {
+ obj['accesslevel'] = ApiClient.convertToType(data['accesslevel'], 'String');
+ }
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('userid')) {
+ obj['userid'] = ApiClient.convertToType(data['userid'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * The Tenant access level for this User
+ * @member {String} accesslevel
+ */
+TenantUser.prototype['accesslevel'] = undefined;
+
+/**
+ * The Tenant ID
+ * @member {String} tenantid
+ */
+TenantUser.prototype['tenantid'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} userid
+ */
+TenantUser.prototype['userid'] = undefined;
+
+
+
+
+
+
+export default TenantUser;
+
diff --git a/client/sf-gate/src/model/User.js b/client/sf-gate/src/model/User.js
new file mode 100644
index 0000000..fd878ed
--- /dev/null
+++ b/client/sf-gate/src/model/User.js
@@ -0,0 +1,583 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Address from './Address';
+import TenantUser from './TenantUser';
+import UserRole from './UserRole';
+
+/**
+ * The User model module.
+ * @module model/User
+ * @version 0.0.2
+ */
+class User {
+ /**
+ * Constructs a new User
.
+ * @alias module:model/User
+ */
+ constructor() {
+
+ User.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a User
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/User} obj Optional instance to populate.
+ * @return {module:model/User} The populated User
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new User();
+
+ if (data.hasOwnProperty('tenantid')) {
+ obj['tenantid'] = ApiClient.convertToType(data['tenantid'], 'String');
+ }
+ if (data.hasOwnProperty('aboutme')) {
+ obj['aboutme'] = ApiClient.convertToType(data['aboutme'], 'String');
+ }
+ if (data.hasOwnProperty('accountid')) {
+ obj['accountid'] = ApiClient.convertToType(data['accountid'], 'String');
+ }
+ if (data.hasOwnProperty('address')) {
+ obj['address'] = Address.constructFromObject(data['address']);
+ }
+ if (data.hasOwnProperty('alias')) {
+ obj['alias'] = ApiClient.convertToType(data['alias'], 'String');
+ }
+ if (data.hasOwnProperty('apikey')) {
+ obj['apikey'] = ApiClient.convertToType(data['apikey'], 'String');
+ }
+ if (data.hasOwnProperty('auth0userid')) {
+ obj['auth0userid'] = ApiClient.convertToType(data['auth0userid'], 'String');
+ }
+ if (data.hasOwnProperty('communitynickname')) {
+ obj['communitynickname'] = ApiClient.convertToType(data['communitynickname'], 'String');
+ }
+ if (data.hasOwnProperty('companyname')) {
+ obj['companyname'] = ApiClient.convertToType(data['companyname'], 'String');
+ }
+ if (data.hasOwnProperty('contactid')) {
+ obj['contactid'] = ApiClient.convertToType(data['contactid'], 'String');
+ }
+ if (data.hasOwnProperty('createdbyid')) {
+ obj['createdbyid'] = ApiClient.convertToType(data['createdbyid'], 'String');
+ }
+ if (data.hasOwnProperty('createddate')) {
+ obj['createddate'] = ApiClient.convertToType(data['createddate'], 'String');
+ }
+ if (data.hasOwnProperty('delegatedapproverid')) {
+ obj['delegatedapproverid'] = ApiClient.convertToType(data['delegatedapproverid'], 'String');
+ }
+ if (data.hasOwnProperty('department')) {
+ obj['department'] = ApiClient.convertToType(data['department'], 'String');
+ }
+ if (data.hasOwnProperty('division')) {
+ obj['division'] = ApiClient.convertToType(data['division'], 'String');
+ }
+ if (data.hasOwnProperty('email')) {
+ obj['email'] = ApiClient.convertToType(data['email'], 'String');
+ }
+ if (data.hasOwnProperty('employeenumber')) {
+ obj['employeenumber'] = ApiClient.convertToType(data['employeenumber'], 'String');
+ }
+ if (data.hasOwnProperty('endday')) {
+ obj['endday'] = ApiClient.convertToType(data['endday'], 'String');
+ }
+ if (data.hasOwnProperty('environment')) {
+ obj['environment'] = ApiClient.convertToType(data['environment'], 'String');
+ }
+ if (data.hasOwnProperty('extension')) {
+ obj['extension'] = ApiClient.convertToType(data['extension'], 'String');
+ }
+ if (data.hasOwnProperty('fabricapikey')) {
+ obj['fabricapikey'] = ApiClient.convertToType(data['fabricapikey'], 'String');
+ }
+ if (data.hasOwnProperty('fax')) {
+ obj['fax'] = ApiClient.convertToType(data['fax'], 'String');
+ }
+ if (data.hasOwnProperty('firstname')) {
+ obj['firstname'] = ApiClient.convertToType(data['firstname'], 'String');
+ }
+ if (data.hasOwnProperty('forecastenabled')) {
+ obj['forecastenabled'] = ApiClient.convertToType(data['forecastenabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('fullphotourl')) {
+ obj['fullphotourl'] = ApiClient.convertToType(data['fullphotourl'], 'String');
+ }
+ if (data.hasOwnProperty('id')) {
+ obj['id'] = ApiClient.convertToType(data['id'], 'String');
+ }
+ if (data.hasOwnProperty('isactive')) {
+ obj['isactive'] = ApiClient.convertToType(data['isactive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('isportalenabled')) {
+ obj['isportalenabled'] = ApiClient.convertToType(data['isportalenabled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('isprofilephotoactive')) {
+ obj['isprofilephotoactive'] = ApiClient.convertToType(data['isprofilephotoactive'], 'Boolean');
+ }
+ if (data.hasOwnProperty('issystemcontrolled')) {
+ obj['issystemcontrolled'] = ApiClient.convertToType(data['issystemcontrolled'], 'Boolean');
+ }
+ if (data.hasOwnProperty('lastip')) {
+ obj['lastip'] = ApiClient.convertToType(data['lastip'], 'String');
+ }
+ if (data.hasOwnProperty('lastlogin')) {
+ obj['lastlogin'] = ApiClient.convertToType(data['lastlogin'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifiedbyid')) {
+ obj['lastmodifiedbyid'] = ApiClient.convertToType(data['lastmodifiedbyid'], 'String');
+ }
+ if (data.hasOwnProperty('lastmodifieddate')) {
+ obj['lastmodifieddate'] = ApiClient.convertToType(data['lastmodifieddate'], 'String');
+ }
+ if (data.hasOwnProperty('lastname')) {
+ obj['lastname'] = ApiClient.convertToType(data['lastname'], 'String');
+ }
+ if (data.hasOwnProperty('logincount')) {
+ obj['logincount'] = ApiClient.convertToType(data['logincount'], 'Number');
+ }
+ if (data.hasOwnProperty('managerid')) {
+ obj['managerid'] = ApiClient.convertToType(data['managerid'], 'String');
+ }
+ if (data.hasOwnProperty('mobilephone')) {
+ obj['mobilephone'] = ApiClient.convertToType(data['mobilephone'], 'String');
+ }
+ if (data.hasOwnProperty('name')) {
+ obj['name'] = ApiClient.convertToType(data['name'], 'String');
+ }
+ if (data.hasOwnProperty('outofofficemessage')) {
+ obj['outofofficemessage'] = ApiClient.convertToType(data['outofofficemessage'], 'String');
+ }
+ if (data.hasOwnProperty('phone')) {
+ obj['phone'] = ApiClient.convertToType(data['phone'], 'String');
+ }
+ if (data.hasOwnProperty('portalrole')) {
+ obj['portalrole'] = ApiClient.convertToType(data['portalrole'], 'String');
+ }
+ if (data.hasOwnProperty('profileid')) {
+ obj['profileid'] = ApiClient.convertToType(data['profileid'], 'String');
+ }
+ if (data.hasOwnProperty('receivesadmininfoemails')) {
+ obj['receivesadmininfoemails'] = ApiClient.convertToType(data['receivesadmininfoemails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('receivesinfoemails')) {
+ obj['receivesinfoemails'] = ApiClient.convertToType(data['receivesinfoemails'], 'Boolean');
+ }
+ if (data.hasOwnProperty('senderemail')) {
+ obj['senderemail'] = ApiClient.convertToType(data['senderemail'], 'String');
+ }
+ if (data.hasOwnProperty('sendername')) {
+ obj['sendername'] = ApiClient.convertToType(data['sendername'], 'String');
+ }
+ if (data.hasOwnProperty('signature')) {
+ obj['signature'] = ApiClient.convertToType(data['signature'], 'String');
+ }
+ if (data.hasOwnProperty('smallphotourl')) {
+ obj['smallphotourl'] = ApiClient.convertToType(data['smallphotourl'], 'String');
+ }
+ if (data.hasOwnProperty('startday')) {
+ obj['startday'] = ApiClient.convertToType(data['startday'], 'String');
+ }
+ if (data.hasOwnProperty('taxnexusaccount')) {
+ obj['taxnexusaccount'] = ApiClient.convertToType(data['taxnexusaccount'], 'String');
+ }
+ if (data.hasOwnProperty('timezonesidkey')) {
+ obj['timezonesidkey'] = ApiClient.convertToType(data['timezonesidkey'], 'String');
+ }
+ if (data.hasOwnProperty('title')) {
+ obj['title'] = ApiClient.convertToType(data['title'], 'String');
+ }
+ if (data.hasOwnProperty('username')) {
+ obj['username'] = ApiClient.convertToType(data['username'], 'String');
+ }
+ if (data.hasOwnProperty('userroleid')) {
+ obj['userroleid'] = ApiClient.convertToType(data['userroleid'], 'String');
+ }
+ if (data.hasOwnProperty('usertype')) {
+ obj['usertype'] = ApiClient.convertToType(data['usertype'], 'String');
+ }
+ if (data.hasOwnProperty('userroles')) {
+ obj['userroles'] = ApiClient.convertToType(data['userroles'], [UserRole]);
+ }
+ if (data.hasOwnProperty('tenantusers')) {
+ obj['tenantusers'] = ApiClient.convertToType(data['tenantusers'], [TenantUser]);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} tenantid
+ */
+User.prototype['tenantid'] = undefined;
+
+/**
+ * About Me
+ * @member {String} aboutme
+ */
+User.prototype['aboutme'] = undefined;
+
+/**
+ * Account ID
+ * @member {String} accountid
+ */
+User.prototype['accountid'] = undefined;
+
+/**
+ * @member {module:model/Address} address
+ */
+User.prototype['address'] = undefined;
+
+/**
+ * Alias
+ * @member {String} alias
+ */
+User.prototype['alias'] = undefined;
+
+/**
+ * API Key
+ * @member {String} apikey
+ */
+User.prototype['apikey'] = undefined;
+
+/**
+ * Auth0 User ID
+ * @member {String} auth0userid
+ */
+User.prototype['auth0userid'] = undefined;
+
+/**
+ * Nickname
+ * @member {String} communitynickname
+ */
+User.prototype['communitynickname'] = undefined;
+
+/**
+ * Company Name
+ * @member {String} companyname
+ */
+User.prototype['companyname'] = undefined;
+
+/**
+ * Contact
+ * @member {String} contactid
+ */
+User.prototype['contactid'] = undefined;
+
+/**
+ * Created User ID
+ * @member {String} createdbyid
+ */
+User.prototype['createdbyid'] = undefined;
+
+/**
+ * Date Created
+ * @member {String} createddate
+ */
+User.prototype['createddate'] = undefined;
+
+/**
+ * Delegated Approver
+ * @member {String} delegatedapproverid
+ */
+User.prototype['delegatedapproverid'] = undefined;
+
+/**
+ * Department
+ * @member {String} department
+ */
+User.prototype['department'] = undefined;
+
+/**
+ * Division
+ * @member {String} division
+ */
+User.prototype['division'] = undefined;
+
+/**
+ * Email address
+ * @member {String} email
+ */
+User.prototype['email'] = undefined;
+
+/**
+ * Employee Number
+ * @member {String} employeenumber
+ */
+User.prototype['employeenumber'] = undefined;
+
+/**
+ * Time day ends
+ * @member {String} endday
+ */
+User.prototype['endday'] = undefined;
+
+/**
+ * Environment
+ * @member {String} environment
+ */
+User.prototype['environment'] = undefined;
+
+/**
+ * Extension
+ * @member {String} extension
+ */
+User.prototype['extension'] = undefined;
+
+/**
+ * Fabric API Key
+ * @member {String} fabricapikey
+ */
+User.prototype['fabricapikey'] = undefined;
+
+/**
+ * Fax
+ * @member {String} fax
+ */
+User.prototype['fax'] = undefined;
+
+/**
+ * The first name
+ * @member {String} firstname
+ */
+User.prototype['firstname'] = undefined;
+
+/**
+ * Allow Forecasting
+ * @member {Boolean} forecastenabled
+ */
+User.prototype['forecastenabled'] = undefined;
+
+/**
+ * Full Photo URL
+ * @member {String} fullphotourl
+ */
+User.prototype['fullphotourl'] = undefined;
+
+/**
+ * Taxnexus ID
+ * @member {String} id
+ */
+User.prototype['id'] = undefined;
+
+/**
+ * Active
+ * @member {Boolean} isactive
+ */
+User.prototype['isactive'] = undefined;
+
+/**
+ * Is the user enabled for Communities?
+ * @member {Boolean} isportalenabled
+ */
+User.prototype['isportalenabled'] = undefined;
+
+/**
+ * Has Profile Photo
+ * @member {Boolean} isprofilephotoactive
+ */
+User.prototype['isprofilephotoactive'] = undefined;
+
+/**
+ * @member {Boolean} issystemcontrolled
+ */
+User.prototype['issystemcontrolled'] = undefined;
+
+/**
+ * ip address of last login
+ * @member {String} lastip
+ */
+User.prototype['lastip'] = undefined;
+
+/**
+ * last login time
+ * @member {String} lastlogin
+ */
+User.prototype['lastlogin'] = undefined;
+
+/**
+ * Last Modified User ID
+ * @member {String} lastmodifiedbyid
+ */
+User.prototype['lastmodifiedbyid'] = undefined;
+
+/**
+ * Last Modified Date
+ * @member {String} lastmodifieddate
+ */
+User.prototype['lastmodifieddate'] = undefined;
+
+/**
+ * The Last Name
+ * @member {String} lastname
+ */
+User.prototype['lastname'] = undefined;
+
+/**
+ * number of times user has logged in
+ * @member {Number} logincount
+ */
+User.prototype['logincount'] = undefined;
+
+/**
+ * Manager
+ * @member {String} managerid
+ */
+User.prototype['managerid'] = undefined;
+
+/**
+ * Mobile
+ * @member {String} mobilephone
+ */
+User.prototype['mobilephone'] = undefined;
+
+/**
+ * Name
+ * @member {String} name
+ */
+User.prototype['name'] = undefined;
+
+/**
+ * Out of office message
+ * @member {String} outofofficemessage
+ */
+User.prototype['outofofficemessage'] = undefined;
+
+/**
+ * Phone
+ * @member {String} phone
+ */
+User.prototype['phone'] = undefined;
+
+/**
+ * Portal Role Level
+ * @member {String} portalrole
+ */
+User.prototype['portalrole'] = undefined;
+
+/**
+ * Profile
+ * @member {String} profileid
+ */
+User.prototype['profileid'] = undefined;
+
+/**
+ * Admin Info Emails
+ * @member {Boolean} receivesadmininfoemails
+ */
+User.prototype['receivesadmininfoemails'] = undefined;
+
+/**
+ * Info Emails
+ * @member {Boolean} receivesinfoemails
+ */
+User.prototype['receivesinfoemails'] = undefined;
+
+/**
+ * Email Sender Address
+ * @member {String} senderemail
+ */
+User.prototype['senderemail'] = undefined;
+
+/**
+ * Email Sender Name
+ * @member {String} sendername
+ */
+User.prototype['sendername'] = undefined;
+
+/**
+ * Email Signature
+ * @member {String} signature
+ */
+User.prototype['signature'] = undefined;
+
+/**
+ * Small Photo URL
+ * @member {String} smallphotourl
+ */
+User.prototype['smallphotourl'] = undefined;
+
+/**
+ * The time day starts
+ * @member {String} startday
+ */
+User.prototype['startday'] = undefined;
+
+/**
+ * Taxnexus Account
+ * @member {String} taxnexusaccount
+ */
+User.prototype['taxnexusaccount'] = undefined;
+
+/**
+ * Time Zone
+ * @member {String} timezonesidkey
+ */
+User.prototype['timezonesidkey'] = undefined;
+
+/**
+ * Title
+ * @member {String} title
+ */
+User.prototype['title'] = undefined;
+
+/**
+ * Username
+ * @member {String} username
+ */
+User.prototype['username'] = undefined;
+
+/**
+ * Role
+ * @member {String} userroleid
+ */
+User.prototype['userroleid'] = undefined;
+
+/**
+ * User Type
+ * @member {String} usertype
+ */
+User.prototype['usertype'] = undefined;
+
+/**
+ * @member {Array.} userroles
+ */
+User.prototype['userroles'] = undefined;
+
+/**
+ * @member {Array.} tenantusers
+ */
+User.prototype['tenantusers'] = undefined;
+
+
+
+
+
+
+export default User;
+
diff --git a/client/sf-gate/src/model/UserResponse.js b/client/sf-gate/src/model/UserResponse.js
new file mode 100644
index 0000000..e987386
--- /dev/null
+++ b/client/sf-gate/src/model/UserResponse.js
@@ -0,0 +1,82 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import ResponseMeta from './ResponseMeta';
+import User from './User';
+
+/**
+ * The UserResponse model module.
+ * @module model/UserResponse
+ * @version 0.0.2
+ */
+class UserResponse {
+ /**
+ * Constructs a new UserResponse
.
+ * An array of Print-Ready ingest Objects
+ * @alias module:model/UserResponse
+ */
+ constructor() {
+
+ UserResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserResponse} obj Optional instance to populate.
+ * @return {module:model/UserResponse} The populated UserResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserResponse();
+
+ if (data.hasOwnProperty('data')) {
+ obj['data'] = ApiClient.convertToType(data['data'], [User]);
+ }
+ if (data.hasOwnProperty('meta')) {
+ obj['meta'] = ResponseMeta.constructFromObject(data['meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} data
+ */
+UserResponse.prototype['data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} meta
+ */
+UserResponse.prototype['meta'] = undefined;
+
+
+
+
+
+
+export default UserResponse;
+
diff --git a/client/sf-gate/src/model/UserRole.js b/client/sf-gate/src/model/UserRole.js
new file mode 100644
index 0000000..e1de26b
--- /dev/null
+++ b/client/sf-gate/src/model/UserRole.js
@@ -0,0 +1,109 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The UserRole model module.
+ * @module model/UserRole
+ * @version 0.0.2
+ */
+class UserRole {
+ /**
+ * Constructs a new UserRole
.
+ * Relationship object that connects user to a role
+ * @alias module:model/UserRole
+ */
+ constructor() {
+
+ UserRole.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a UserRole
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/UserRole} obj Optional instance to populate.
+ * @return {module:model/UserRole} The populated UserRole
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new UserRole();
+
+ if (data.hasOwnProperty('description')) {
+ obj['description'] = ApiClient.convertToType(data['description'], 'String');
+ }
+ if (data.hasOwnProperty('roleid')) {
+ obj['roleid'] = ApiClient.convertToType(data['roleid'], 'String');
+ }
+ if (data.hasOwnProperty('userid')) {
+ obj['userid'] = ApiClient.convertToType(data['userid'], 'String');
+ }
+ if (data.hasOwnProperty('name')) {
+ obj['name'] = ApiClient.convertToType(data['name'], 'String');
+ }
+ if (data.hasOwnProperty('auth0roleid')) {
+ obj['auth0roleid'] = ApiClient.convertToType(data['auth0roleid'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Role description
+ * @member {String} description
+ */
+UserRole.prototype['description'] = undefined;
+
+/**
+ * The Role ID
+ * @member {String} roleid
+ */
+UserRole.prototype['roleid'] = undefined;
+
+/**
+ * The User ID
+ * @member {String} userid
+ */
+UserRole.prototype['userid'] = undefined;
+
+/**
+ * Role Name
+ * @member {String} name
+ */
+UserRole.prototype['name'] = undefined;
+
+/**
+ * Linked role ID
+ * @member {String} auth0roleid
+ */
+UserRole.prototype['auth0roleid'] = undefined;
+
+
+
+
+
+
+export default UserRole;
+
diff --git a/client/sf-gate/test/api/AccountsApi.spec.js b/client/sf-gate/test/api/AccountsApi.spec.js
new file mode 100644
index 0000000..e58d994
--- /dev/null
+++ b/client/sf-gate/test/api/AccountsApi.spec.js
@@ -0,0 +1,93 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.AccountsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountsApi', function() {
+ describe('deleteAccount', function() {
+ it('should call deleteAccount successfully', function(done) {
+ //uncomment below and update the code to test deleteAccount
+ //instance.deleteAccount(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('getAccounts', function() {
+ it('should call getAccounts successfully', function(done) {
+ //uncomment below and update the code to test getAccounts
+ //instance.getAccounts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postAccounts', function() {
+ it('should call postAccounts successfully', function(done) {
+ //uncomment below and update the code to test postAccounts
+ //instance.postAccounts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putAccount', function() {
+ it('should call putAccount successfully', function(done) {
+ //uncomment below and update the code to test putAccount
+ //instance.putAccount(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/ClustersApi.spec.js b/client/sf-gate/test/api/ClustersApi.spec.js
new file mode 100644
index 0000000..4a8a7b0
--- /dev/null
+++ b/client/sf-gate/test/api/ClustersApi.spec.js
@@ -0,0 +1,83 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ClustersApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClustersApi', function() {
+ describe('getClusters', function() {
+ it('should call getClusters successfully', function(done) {
+ //uncomment below and update the code to test getClusters
+ //instance.getClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postClusters', function() {
+ it('should call postClusters successfully', function(done) {
+ //uncomment below and update the code to test postClusters
+ //instance.postClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putClusters', function() {
+ it('should call putClusters successfully', function(done) {
+ //uncomment below and update the code to test putClusters
+ //instance.putClusters(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/ContactsApi.spec.js b/client/sf-gate/test/api/ContactsApi.spec.js
new file mode 100644
index 0000000..df47cb9
--- /dev/null
+++ b/client/sf-gate/test/api/ContactsApi.spec.js
@@ -0,0 +1,73 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContactsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactsApi', function() {
+ describe('getContacts', function() {
+ it('should call getContacts successfully', function(done) {
+ //uncomment below and update the code to test getContacts
+ //instance.getContacts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postContacts', function() {
+ it('should call postContacts successfully', function(done) {
+ //uncomment below and update the code to test postContacts
+ //instance.postContacts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/ContractsApi.spec.js b/client/sf-gate/test/api/ContractsApi.spec.js
new file mode 100644
index 0000000..6bf401e
--- /dev/null
+++ b/client/sf-gate/test/api/ContractsApi.spec.js
@@ -0,0 +1,73 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContractsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractsApi', function() {
+ describe('getContracts', function() {
+ it('should call getContracts successfully', function(done) {
+ //uncomment below and update the code to test getContracts
+ //instance.getContracts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postContracts', function() {
+ it('should call postContracts successfully', function(done) {
+ //uncomment below and update the code to test postContracts
+ //instance.postContracts(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/DatabasesApi.spec.js b/client/sf-gate/test/api/DatabasesApi.spec.js
new file mode 100644
index 0000000..c132ca2
--- /dev/null
+++ b/client/sf-gate/test/api/DatabasesApi.spec.js
@@ -0,0 +1,83 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.DatabasesApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabasesApi', function() {
+ describe('getDatabases', function() {
+ it('should call getDatabases successfully', function(done) {
+ //uncomment below and update the code to test getDatabases
+ //instance.getDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('postDatabases', function() {
+ it('should call postDatabases successfully', function(done) {
+ //uncomment below and update the code to test postDatabases
+ //instance.postDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putDatabases', function() {
+ it('should call putDatabases successfully', function(done) {
+ //uncomment below and update the code to test putDatabases
+ //instance.putDatabases(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/RolesApi.spec.js b/client/sf-gate/test/api/RolesApi.spec.js
new file mode 100644
index 0000000..41b1a26
--- /dev/null
+++ b/client/sf-gate/test/api/RolesApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.RolesApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RolesApi', function() {
+ describe('getRoles', function() {
+ it('should call getRoles successfully', function(done) {
+ //uncomment below and update the code to test getRoles
+ //instance.getRoles(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/TemplatesApi.spec.js b/client/sf-gate/test/api/TemplatesApi.spec.js
new file mode 100644
index 0000000..37d45c9
--- /dev/null
+++ b/client/sf-gate/test/api/TemplatesApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TemplatesApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TemplatesApi', function() {
+ describe('getTemplates', function() {
+ it('should call getTemplates successfully', function(done) {
+ //uncomment below and update the code to test getTemplates
+ //instance.getTemplates(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/TenantsApi.spec.js b/client/sf-gate/test/api/TenantsApi.spec.js
new file mode 100644
index 0000000..bf09f98
--- /dev/null
+++ b/client/sf-gate/test/api/TenantsApi.spec.js
@@ -0,0 +1,83 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TenantsApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantsApi', function() {
+ describe('getTenants', function() {
+ it('should call getTenants successfully', function(done) {
+ //uncomment below and update the code to test getTenants
+ //instance.getTenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('putTenants', function() {
+ it('should call putTenants successfully', function(done) {
+ //uncomment below and update the code to test putTenants
+ //instance.putTenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ describe('tenants', function() {
+ it('should call tenants successfully', function(done) {
+ //uncomment below and update the code to test tenants
+ //instance.tenants(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/api/UsersApi.spec.js b/client/sf-gate/test/api/UsersApi.spec.js
new file mode 100644
index 0000000..9bf86df
--- /dev/null
+++ b/client/sf-gate/test/api/UsersApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.UsersApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UsersApi', function() {
+ describe('getUsers', function() {
+ it('should call getUsers successfully', function(done) {
+ //uncomment below and update the code to test getUsers
+ //instance.getUsers(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Account.spec.js b/client/sf-gate/test/model/Account.spec.js
new file mode 100644
index 0000000..4031dc0
--- /dev/null
+++ b/client/sf-gate/test/model/Account.spec.js
@@ -0,0 +1,587 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Account();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Account', function() {
+ it('should create an instance of Account', function() {
+ // uncomment below and update the code to test Account
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be.a(SfGate.Account);
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountnumber (base name: "accountnumber")', function() {
+ // uncomment below and update the code to test the property accountnumber
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountsource (base name: "accountsource")', function() {
+ // uncomment below and update the code to test the property accountsource
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property administrativelevel (base name: "administrativelevel")', function() {
+ // uncomment below and update the code to test the property administrativelevel
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amount (base name: "amount")', function() {
+ // uncomment below and update the code to test the property amount
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountinvoiced (base name: "amountinvoiced")', function() {
+ // uncomment below and update the code to test the property amountinvoiced
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property amountpaid (base name: "amountpaid")', function() {
+ // uncomment below and update the code to test the property amountpaid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property annualrevenue (base name: "annualrevenue")', function() {
+ // uncomment below and update the code to test the property annualrevenue
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property balance (base name: "balance")', function() {
+ // uncomment below and update the code to test the property balance
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingaddress (base name: "billingaddress")', function() {
+ // uncomment below and update the code to test the property billingaddress
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingcontactid (base name: "billingcontactid")', function() {
+ // uncomment below and update the code to test the property billingcontactid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingpreference (base name: "billingpreference")', function() {
+ // uncomment below and update the code to test the property billingpreference
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property businessaddress (base name: "businessaddress")', function() {
+ // uncomment below and update the code to test the property businessaddress
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property cannabiscustomer (base name: "cannabiscustomer")', function() {
+ // uncomment below and update the code to test the property cannabiscustomer
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelprogramlevelname (base name: "channelprogramlevelname")', function() {
+ // uncomment below and update the code to test the property channelprogramlevelname
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property channelprogramname (base name: "channelprogramname")', function() {
+ // uncomment below and update the code to test the property channelprogramname
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientenddate (base name: "clientenddate")', function() {
+ // uncomment below and update the code to test the property clientenddate
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clientstartdate (base name: "clientstartdate")', function() {
+ // uncomment below and update the code to test the property clientstartdate
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyid (base name: "companyid")', function() {
+ // uncomment below and update the code to test the property companyid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property coordinateid (base name: "coordinateid")', function() {
+ // uncomment below and update the code to test the property coordinateid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerid (base name: "customerid")', function() {
+ // uncomment below and update the code to test the property customerid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerpriority (base name: "customerpriority")', function() {
+ // uncomment below and update the code to test the property customerpriority
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dandbcompanyid (base name: "dandbcompanyid")', function() {
+ // uncomment below and update the code to test the property dandbcompanyid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dba (base name: "dba")', function() {
+ // uncomment below and update the code to test the property dba
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultaddress (base name: "defaultaddress")', function() {
+ // uncomment below and update the code to test the property defaultaddress
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultbackendid (base name: "defaultbackendid")', function() {
+ // uncomment below and update the code to test the property defaultbackendid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultdeliverycontactid (base name: "defaultdeliverycontactid")', function() {
+ // uncomment below and update the code to test the property defaultdeliverycontactid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultenduserid (base name: "defaultenduserid")', function() {
+ // uncomment below and update the code to test the property defaultenduserid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dunsnumber (base name: "dunsnumber")', function() {
+ // uncomment below and update the code to test the property dunsnumber
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ein (base name: "ein")', function() {
+ // uncomment below and update the code to test the property ein
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentstatus (base name: "enrollmentstatus")', function() {
+ // uncomment below and update the code to test the property enrollmentstatus
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property industry (base name: "industry")', function() {
+ // uncomment below and update the code to test the property industry
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property iscustomerportal (base name: "iscustomerportal")', function() {
+ // uncomment below and update the code to test the property iscustomerportal
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ispartner (base name: "ispartner")', function() {
+ // uncomment below and update the code to test the property ispartner
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ispcustomer (base name: "ispcustomer")', function() {
+ // uncomment below and update the code to test the property ispcustomer
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property jigsaw (base name: "jigsaw")', function() {
+ // uncomment below and update the code to test the property jigsaw
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mspcustomer (base name: "mspcustomer")', function() {
+ // uncomment below and update the code to test the property mspcustomer
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property naicscode (base name: "naicscode")', function() {
+ // uncomment below and update the code to test the property naicscode
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property naicsdesc (base name: "naicsdesc")', function() {
+ // uncomment below and update the code to test the property naicsdesc
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberofemployees (base name: "numberofemployees")', function() {
+ // uncomment below and update the code to test the property numberofemployees
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property numberoflocations (base name: "numberoflocations")', function() {
+ // uncomment below and update the code to test the property numberoflocations
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property opencharges (base name: "opencharges")', function() {
+ // uncomment below and update the code to test the property opencharges
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ordercontactid (base name: "ordercontactid")', function() {
+ // uncomment below and update the code to test the property ordercontactid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property orderemail (base name: "orderemail")', function() {
+ // uncomment below and update the code to test the property orderemail
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerid (base name: "ownerid")', function() {
+ // uncomment below and update the code to test the property ownerid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownership (base name: "ownership")', function() {
+ // uncomment below and update the code to test the property ownership
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentfk (base name: "parentfk")', function() {
+ // uncomment below and update the code to test the property parentfk
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentid (base name: "parentid")', function() {
+ // uncomment below and update the code to test the property parentid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property placeid (base name: "placeid")', function() {
+ // uncomment below and update the code to test the property placeid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property preparerid (base name: "preparerid")', function() {
+ // uncomment below and update the code to test the property preparerid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property rating (base name: "rating")', function() {
+ // uncomment below and update the code to test the property rating
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ratingengineid (base name: "ratingengineid")', function() {
+ // uncomment below and update the code to test the property ratingengineid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenuebase (base name: "revenuebase")', function() {
+ // uncomment below and update the code to test the property revenuebase
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenuenet (base name: "revenuenet")', function() {
+ // uncomment below and update the code to test the property revenuenet
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property revenuenottaxable (base name: "revenuenottaxable")', function() {
+ // uncomment below and update the code to test the property revenuenottaxable
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingaddress (base name: "shippingaddress")', function() {
+ // uncomment below and update the code to test the property shippingaddress
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingcensustract (base name: "shippingcensustract")', function() {
+ // uncomment below and update the code to test the property shippingcensustract
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingcounty (base name: "shippingcounty")', function() {
+ // uncomment below and update the code to test the property shippingcounty
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingcontactid (base name: "shippingcontactid")', function() {
+ // uncomment below and update the code to test the property shippingcontactid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sic (base name: "sic")', function() {
+ // uncomment below and update the code to test the property sic
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sicdesc (base name: "sicdesc")', function() {
+ // uncomment below and update the code to test the property sicdesc
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property site (base name: "site")', function() {
+ // uncomment below and update the code to test the property site
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxexemption (base name: "taxexemption")', function() {
+ // uncomment below and update the code to test the property taxexemption
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxontax (base name: "taxontax")', function() {
+ // uncomment below and update the code to test the property taxontax
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property telecomcustomer (base name: "telecomcustomer")', function() {
+ // uncomment below and update the code to test the property telecomcustomer
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tickersymbol (base name: "tickersymbol")', function() {
+ // uncomment below and update the code to test the property tickersymbol
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tradestyle (base name: "tradestyle")', function() {
+ // uncomment below and update the code to test the property tradestyle
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unappliedpayments (base name: "unappliedpayments")', function() {
+ // uncomment below and update the code to test the property unappliedpayments
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property unitbase (base name: "unitbase")', function() {
+ // uncomment below and update the code to test the property unitbase
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property upsellopportunity (base name: "upsellopportunity")', function() {
+ // uncomment below and update the code to test the property upsellopportunity
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property website (base name: "website")', function() {
+ // uncomment below and update the code to test the property website
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property whmcsclientid (base name: "whmcsclientid")', function() {
+ // uncomment below and update the code to test the property whmcsclientid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property xerocontactid (base name: "xerocontactid")', function() {
+ // uncomment below and update the code to test the property xerocontactid
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property yearstarted (base name: "yearstarted")', function() {
+ // uncomment below and update the code to test the property yearstarted
+ //var instance = new SfGate.Account();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/AccountRequest.spec.js b/client/sf-gate/test/model/AccountRequest.spec.js
new file mode 100644
index 0000000..4c43ebf
--- /dev/null
+++ b/client/sf-gate/test/model/AccountRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.AccountRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountRequest', function() {
+ it('should create an instance of AccountRequest', function() {
+ // uncomment below and update the code to test AccountRequest
+ //var instance = new SfGate.AccountRequest();
+ //expect(instance).to.be.a(SfGate.AccountRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.AccountRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.AccountRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/AccountResponse.spec.js b/client/sf-gate/test/model/AccountResponse.spec.js
new file mode 100644
index 0000000..a588f66
--- /dev/null
+++ b/client/sf-gate/test/model/AccountResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.AccountResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('AccountResponse', function() {
+ it('should create an instance of AccountResponse', function() {
+ // uncomment below and update the code to test AccountResponse
+ //var instance = new SfGate.AccountResponse();
+ //expect(instance).to.be.a(SfGate.AccountResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.AccountResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.AccountResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Address.spec.js b/client/sf-gate/test/model/Address.spec.js
new file mode 100644
index 0000000..ed42e47
--- /dev/null
+++ b/client/sf-gate/test/model/Address.spec.js
@@ -0,0 +1,101 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Address();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Address', function() {
+ it('should create an instance of Address', function() {
+ // uncomment below and update the code to test Address
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be.a(SfGate.Address);
+ });
+
+ it('should have the property city (base name: "city")', function() {
+ // uncomment below and update the code to test the property city
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property country (base name: "country")', function() {
+ // uncomment below and update the code to test the property country
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property countrycode (base name: "countrycode")', function() {
+ // uncomment below and update the code to test the property countrycode
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property postalcode (base name: "postalcode")', function() {
+ // uncomment below and update the code to test the property postalcode
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property state (base name: "state")', function() {
+ // uncomment below and update the code to test the property state
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property statecode (base name: "statecode")', function() {
+ // uncomment below and update the code to test the property statecode
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property street (base name: "street")', function() {
+ // uncomment below and update the code to test the property street
+ //var instance = new SfGate.Address();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Cluster.spec.js b/client/sf-gate/test/model/Cluster.spec.js
new file mode 100644
index 0000000..bf9fc0d
--- /dev/null
+++ b/client/sf-gate/test/model/Cluster.spec.js
@@ -0,0 +1,161 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Cluster();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Cluster', function() {
+ it('should create an instance of Cluster', function() {
+ // uncomment below and update the code to test Cluster
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be.a(SfGate.Cluster);
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property gateway (base name: "gateway")', function() {
+ // uncomment below and update the code to test the property gateway
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ipAddress (base name: "ip_address")', function() {
+ // uncomment below and update the code to test the property ipAddress
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerid (base name: "ownerid")', function() {
+ // uncomment below and update the code to test the property ownerid
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property subnet (base name: "subnet")', function() {
+ // uncomment below and update the code to test the property subnet
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property zone (base name: "zone")', function() {
+ // uncomment below and update the code to test the property zone
+ //var instance = new SfGate.Cluster();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ClusterRequest.spec.js b/client/sf-gate/test/model/ClusterRequest.spec.js
new file mode 100644
index 0000000..f95374a
--- /dev/null
+++ b/client/sf-gate/test/model/ClusterRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ClusterRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClusterRequest', function() {
+ it('should create an instance of ClusterRequest', function() {
+ // uncomment below and update the code to test ClusterRequest
+ //var instance = new SfGate.ClusterRequest();
+ //expect(instance).to.be.a(SfGate.ClusterRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ClusterRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.ClusterRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ClusterResponse.spec.js b/client/sf-gate/test/model/ClusterResponse.spec.js
new file mode 100644
index 0000000..c38025e
--- /dev/null
+++ b/client/sf-gate/test/model/ClusterResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ClusterResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ClusterResponse', function() {
+ it('should create an instance of ClusterResponse', function() {
+ // uncomment below and update the code to test ClusterResponse
+ //var instance = new SfGate.ClusterResponse();
+ //expect(instance).to.be.a(SfGate.ClusterResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ClusterResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.ClusterResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Contact.spec.js b/client/sf-gate/test/model/Contact.spec.js
new file mode 100644
index 0000000..66b7f68
--- /dev/null
+++ b/client/sf-gate/test/model/Contact.spec.js
@@ -0,0 +1,329 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Contact();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Contact', function() {
+ it('should create an instance of Contact', function() {
+ // uncomment below and update the code to test Contact
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be.a(SfGate.Contact);
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountid (base name: "accountid")', function() {
+ // uncomment below and update the code to test the property accountid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantname (base name: "assistantname")', function() {
+ // uncomment below and update the code to test the property assistantname
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property assistantphone (base name: "assistantphone")', function() {
+ // uncomment below and update the code to test the property assistantphone
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property birthdate (base name: "birthdate")', function() {
+ // uncomment below and update the code to test the property birthdate
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property donotcall (base name: "donotcall")', function() {
+ // uncomment below and update the code to test the property donotcall
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailbounceddate (base name: "emailbounceddate")', function() {
+ // uncomment below and update the code to test the property emailbounceddate
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property emailbouncedreason (base name: "emailbouncedreason")', function() {
+ // uncomment below and update the code to test the property emailbouncedreason
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property enrollmentstatus (base name: "enrollmentstatus")', function() {
+ // uncomment below and update the code to test the property enrollmentstatus
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstname (base name: "firstname")', function() {
+ // uncomment below and update the code to test the property firstname
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasoptedoutofemail (base name: "hasoptedoutofemail")', function() {
+ // uncomment below and update the code to test the property hasoptedoutofemail
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hasoptedoutoffax (base name: "hasoptedoutoffax")', function() {
+ // uncomment below and update the code to test the property hasoptedoutoffax
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property homephone (base name: "homephone")', function() {
+ // uncomment below and update the code to test the property homephone
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isemailbounced (base name: "isemailbounced")', function() {
+ // uncomment below and update the code to test the property isemailbounced
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isprovisioned (base name: "isprovisioned")', function() {
+ // uncomment below and update the code to test the property isprovisioned
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastname (base name: "lastname")', function() {
+ // uncomment below and update the code to test the property lastname
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property leadsource (base name: "leadsource")', function() {
+ // uncomment below and update the code to test the property leadsource
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property level (base name: "level")', function() {
+ // uncomment below and update the code to test the property level
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property linkedin (base name: "linkedin")', function() {
+ // uncomment below and update the code to test the property linkedin
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailingaddress (base name: "mailingaddress")', function() {
+ // uncomment below and update the code to test the property mailingaddress
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mailinglists (base name: "mailinglists")', function() {
+ // uncomment below and update the code to test the property mailinglists
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilephone (base name: "mobilephone")', function() {
+ // uncomment below and update the code to test the property mobilephone
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otheraddress (base name: "otheraddress")', function() {
+ // uncomment below and update the code to test the property otheraddress
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property otherphone (base name: "otherphone")', function() {
+ // uncomment below and update the code to test the property otherphone
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerid (base name: "ownerid")', function() {
+ // uncomment below and update the code to test the property ownerid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property personalemail (base name: "personalemail")', function() {
+ // uncomment below and update the code to test the property personalemail
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property photourl (base name: "photourl")', function() {
+ // uncomment below and update the code to test the property photourl
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recruitingstatus (base name: "recruitingstatus")', function() {
+ // uncomment below and update the code to test the property recruitingstatus
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property reportstoid (base name: "reportstoid")', function() {
+ // uncomment below and update the code to test the property reportstoid
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property salutation (base name: "salutation")', function() {
+ // uncomment below and update the code to test the property salutation
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Contact();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ContactRequest.spec.js b/client/sf-gate/test/model/ContactRequest.spec.js
new file mode 100644
index 0000000..aa085e8
--- /dev/null
+++ b/client/sf-gate/test/model/ContactRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContactRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactRequest', function() {
+ it('should create an instance of ContactRequest', function() {
+ // uncomment below and update the code to test ContactRequest
+ //var instance = new SfGate.ContactRequest();
+ //expect(instance).to.be.a(SfGate.ContactRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ContactRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.ContactRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ContactResponse.spec.js b/client/sf-gate/test/model/ContactResponse.spec.js
new file mode 100644
index 0000000..3f80f2a
--- /dev/null
+++ b/client/sf-gate/test/model/ContactResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContactResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContactResponse', function() {
+ it('should create an instance of ContactResponse', function() {
+ // uncomment below and update the code to test ContactResponse
+ //var instance = new SfGate.ContactResponse();
+ //expect(instance).to.be.a(SfGate.ContactResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ContactResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.ContactResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Contract.spec.js b/client/sf-gate/test/model/Contract.spec.js
new file mode 100644
index 0000000..252ae97
--- /dev/null
+++ b/client/sf-gate/test/model/Contract.spec.js
@@ -0,0 +1,239 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Contract();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Contract', function() {
+ it('should create an instance of Contract', function() {
+ // uncomment below and update the code to test Contract
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be.a(SfGate.Contract);
+ });
+
+ it('should have the property accountID (base name: "AccountID")', function() {
+ // uncomment below and update the code to test the property accountID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property activatedByID (base name: "ActivatedByID")', function() {
+ // uncomment below and update the code to test the property activatedByID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property activatedDate (base name: "ActivatedDate")', function() {
+ // uncomment below and update the code to test the property activatedDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingAddress (base name: "BillingAddress")', function() {
+ // uncomment below and update the code to test the property billingAddress
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property billingContactID (base name: "BillingContactID")', function() {
+ // uncomment below and update the code to test the property billingContactID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companySignedDate (base name: "CompanySignedDate")', function() {
+ // uncomment below and update the code to test the property companySignedDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companySignedID (base name: "CompanySignedID")', function() {
+ // uncomment below and update the code to test the property companySignedID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contractNumber (base name: "ContractNumber")', function() {
+ // uncomment below and update the code to test the property contractNumber
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contractTerm (base name: "ContractTerm")', function() {
+ // uncomment below and update the code to test the property contractTerm
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedDate (base name: "CustomerSignedDate")', function() {
+ // uncomment below and update the code to test the property customerSignedDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedID (base name: "CustomerSignedID")', function() {
+ // uncomment below and update the code to test the property customerSignedID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property customerSignedTitle (base name: "CustomerSignedTitle")', function() {
+ // uncomment below and update the code to test the property customerSignedTitle
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property defaultEndUserID (base name: "DefaultEndUserID")', function() {
+ // uncomment below and update the code to test the property defaultEndUserID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endDate (base name: "EndDate")', function() {
+ // uncomment below and update the code to test the property endDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property hourlyRate (base name: "HourlyRate")', function() {
+ // uncomment below and update the code to test the property hourlyRate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentMethodID (base name: "PaymentMethodID")', function() {
+ // uncomment below and update the code to test the property paymentMethodID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property paymentTerms (base name: "PaymentTerms")', function() {
+ // uncomment below and update the code to test the property paymentTerms
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property perpetual (base name: "Perpetual")', function() {
+ // uncomment below and update the code to test the property perpetual
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingAddress (base name: "ShippingAddress")', function() {
+ // uncomment below and update the code to test the property shippingAddress
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property shippingContactID (base name: "ShippingContactID")', function() {
+ // uncomment below and update the code to test the property shippingContactID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startDate (base name: "StartDate")', function() {
+ // uncomment below and update the code to test the property startDate
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "Status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantID (base name: "TenantID")', function() {
+ // uncomment below and update the code to test the property tenantID
+ //var instance = new SfGate.Contract();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ContractRequest.spec.js b/client/sf-gate/test/model/ContractRequest.spec.js
new file mode 100644
index 0000000..9b93529
--- /dev/null
+++ b/client/sf-gate/test/model/ContractRequest.spec.js
@@ -0,0 +1,65 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContractRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractRequest', function() {
+ it('should create an instance of ContractRequest', function() {
+ // uncomment below and update the code to test ContractRequest
+ //var instance = new SfGate.ContractRequest();
+ //expect(instance).to.be.a(SfGate.ContractRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ContractRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ContractResponse.spec.js b/client/sf-gate/test/model/ContractResponse.spec.js
new file mode 100644
index 0000000..c591815
--- /dev/null
+++ b/client/sf-gate/test/model/ContractResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ContractResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ContractResponse', function() {
+ it('should create an instance of ContractResponse', function() {
+ // uncomment below and update the code to test ContractResponse
+ //var instance = new SfGate.ContractResponse();
+ //expect(instance).to.be.a(SfGate.ContractResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.ContractResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.ContractResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Database.spec.js b/client/sf-gate/test/model/Database.spec.js
new file mode 100644
index 0000000..d1e2dce
--- /dev/null
+++ b/client/sf-gate/test/model/Database.spec.js
@@ -0,0 +1,137 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Database();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Database', function() {
+ it('should create an instance of Database', function() {
+ // uncomment below and update the code to test Database
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be.a(SfGate.Database);
+ });
+
+ it('should have the property active (base name: "active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property clusterid (base name: "clusterid")', function() {
+ // uncomment below and update the code to test the property clusterid
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databasename (base name: "databasename")', function() {
+ // uncomment below and update the code to test the property databasename
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property dsn (base name: "dsn")', function() {
+ // uncomment below and update the code to test the property dsn
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property microservices (base name: "microservices")', function() {
+ // uncomment below and update the code to test the property microservices
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Database();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/DatabaseRequest.spec.js b/client/sf-gate/test/model/DatabaseRequest.spec.js
new file mode 100644
index 0000000..4b82bc8
--- /dev/null
+++ b/client/sf-gate/test/model/DatabaseRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.DatabaseRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabaseRequest', function() {
+ it('should create an instance of DatabaseRequest', function() {
+ // uncomment below and update the code to test DatabaseRequest
+ //var instance = new SfGate.DatabaseRequest();
+ //expect(instance).to.be.a(SfGate.DatabaseRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.DatabaseRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.DatabaseRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/DatabaseResponse.spec.js b/client/sf-gate/test/model/DatabaseResponse.spec.js
new file mode 100644
index 0000000..27b1f9c
--- /dev/null
+++ b/client/sf-gate/test/model/DatabaseResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.DatabaseResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DatabaseResponse', function() {
+ it('should create an instance of DatabaseResponse', function() {
+ // uncomment below and update the code to test DatabaseResponse
+ //var instance = new SfGate.DatabaseResponse();
+ //expect(instance).to.be.a(SfGate.DatabaseResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.DatabaseResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.DatabaseResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/DeleteResponse.spec.js b/client/sf-gate/test/model/DeleteResponse.spec.js
new file mode 100644
index 0000000..9f9ab7e
--- /dev/null
+++ b/client/sf-gate/test/model/DeleteResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.DeleteResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DeleteResponse', function() {
+ it('should create an instance of DeleteResponse', function() {
+ // uncomment below and update the code to test DeleteResponse
+ //var instance = new SfGate.DeleteResponse();
+ //expect(instance).to.be.a(SfGate.DeleteResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.DeleteResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Error.spec.js b/client/sf-gate/test/model/Error.spec.js
new file mode 100644
index 0000000..eb913a0
--- /dev/null
+++ b/client/sf-gate/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new SfGate.Error();
+ //expect(instance).to.be.a(SfGate.Error);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new SfGate.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new SfGate.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new SfGate.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/InvalidError.spec.js b/client/sf-gate/test/model/InvalidError.spec.js
new file mode 100644
index 0000000..f9ec2a5
--- /dev/null
+++ b/client/sf-gate/test/model/InvalidError.spec.js
@@ -0,0 +1,83 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.InvalidError();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidError', function() {
+ it('should create an instance of InvalidError', function() {
+ // uncomment below and update the code to test InvalidError
+ //var instance = new SfGate.InvalidError();
+ //expect(instance).to.be.a(SfGate.InvalidError);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new SfGate.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new SfGate.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new SfGate.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new SfGate.InvalidError();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/InvalidErrorAllOf.spec.js b/client/sf-gate/test/model/InvalidErrorAllOf.spec.js
new file mode 100644
index 0000000..f8fba47
--- /dev/null
+++ b/client/sf-gate/test/model/InvalidErrorAllOf.spec.js
@@ -0,0 +1,65 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.InvalidErrorAllOf();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('InvalidErrorAllOf', function() {
+ it('should create an instance of InvalidErrorAllOf', function() {
+ // uncomment below and update the code to test InvalidErrorAllOf
+ //var instance = new SfGate.InvalidErrorAllOf();
+ //expect(instance).to.be.a(SfGate.InvalidErrorAllOf);
+ });
+
+ it('should have the property details (base name: "details")', function() {
+ // uncomment below and update the code to test the property details
+ //var instance = new SfGate.InvalidErrorAllOf();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Message.spec.js b/client/sf-gate/test/model/Message.spec.js
new file mode 100644
index 0000000..f2e0795
--- /dev/null
+++ b/client/sf-gate/test/model/Message.spec.js
@@ -0,0 +1,77 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Message();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Message', function() {
+ it('should create an instance of Message', function() {
+ // uncomment below and update the code to test Message
+ //var instance = new SfGate.Message();
+ //expect(instance).to.be.a(SfGate.Message);
+ });
+
+ it('should have the property message (base name: "message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new SfGate.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new SfGate.Message();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Message();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Pagination.spec.js b/client/sf-gate/test/model/Pagination.spec.js
new file mode 100644
index 0000000..c647947
--- /dev/null
+++ b/client/sf-gate/test/model/Pagination.spec.js
@@ -0,0 +1,83 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Pagination();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Pagination', function() {
+ it('should create an instance of Pagination', function() {
+ // uncomment below and update the code to test Pagination
+ //var instance = new SfGate.Pagination();
+ //expect(instance).to.be.a(SfGate.Pagination);
+ });
+
+ it('should have the property limit (base name: "limit")', function() {
+ // uncomment below and update the code to test the property limit
+ //var instance = new SfGate.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagesize (base name: "pagesize")', function() {
+ // uncomment below and update the code to test the property pagesize
+ //var instance = new SfGate.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property poffset (base name: "poffset")', function() {
+ // uncomment below and update the code to test the property poffset
+ //var instance = new SfGate.Pagination();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property setsize (base name: "setsize")', function() {
+ // uncomment below and update the code to test the property setsize
+ //var instance = new SfGate.Pagination();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/RequestMeta.spec.js b/client/sf-gate/test/model/RequestMeta.spec.js
new file mode 100644
index 0000000..1c4110c
--- /dev/null
+++ b/client/sf-gate/test/model/RequestMeta.spec.js
@@ -0,0 +1,65 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.RequestMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RequestMeta', function() {
+ it('should create an instance of RequestMeta', function() {
+ // uncomment below and update the code to test RequestMeta
+ //var instance = new SfGate.RequestMeta();
+ //expect(instance).to.be.a(SfGate.RequestMeta);
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new SfGate.RequestMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/ResponseMeta.spec.js b/client/sf-gate/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..6e56588
--- /dev/null
+++ b/client/sf-gate/test/model/ResponseMeta.spec.js
@@ -0,0 +1,131 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be.a(SfGate.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property pagination (base name: "Pagination")', function() {
+ // uncomment below and update the code to test the property pagination
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new SfGate.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Role.spec.js b/client/sf-gate/test/model/Role.spec.js
new file mode 100644
index 0000000..c1ad9ae
--- /dev/null
+++ b/client/sf-gate/test/model/Role.spec.js
@@ -0,0 +1,113 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Role();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Role', function() {
+ it('should create an instance of Role', function() {
+ // uncomment below and update the code to test Role
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be.a(SfGate.Role);
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0roleid (base name: "auth0roleid")', function() {
+ // uncomment below and update the code to test the property auth0roleid
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property rolename (base name: "rolename")', function() {
+ // uncomment below and update the code to test the property rolename
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Role();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/RoleRequest.spec.js b/client/sf-gate/test/model/RoleRequest.spec.js
new file mode 100644
index 0000000..00536c5
--- /dev/null
+++ b/client/sf-gate/test/model/RoleRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.RoleRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RoleRequest', function() {
+ it('should create an instance of RoleRequest', function() {
+ // uncomment below and update the code to test RoleRequest
+ //var instance = new SfGate.RoleRequest();
+ //expect(instance).to.be.a(SfGate.RoleRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.RoleRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.RoleRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/RoleResponse.spec.js b/client/sf-gate/test/model/RoleResponse.spec.js
new file mode 100644
index 0000000..abfdec8
--- /dev/null
+++ b/client/sf-gate/test/model/RoleResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.RoleResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RoleResponse', function() {
+ it('should create an instance of RoleResponse', function() {
+ // uncomment below and update the code to test RoleResponse
+ //var instance = new SfGate.RoleResponse();
+ //expect(instance).to.be.a(SfGate.RoleResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.RoleResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.RoleResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Template.spec.js b/client/sf-gate/test/model/Template.spec.js
new file mode 100644
index 0000000..e160a34
--- /dev/null
+++ b/client/sf-gate/test/model/Template.spec.js
@@ -0,0 +1,155 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Template();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Template', function() {
+ it('should create an instance of Template', function() {
+ // uncomment below and update the code to test Template
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be.a(SfGate.Template);
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyID (base name: "CompanyID")', function() {
+ // uncomment below and update the code to test the property companyID
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdByID (base name: "CreatedByID")', function() {
+ // uncomment below and update the code to test the property createdByID
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdDate (base name: "CreatedDate")', function() {
+ // uncomment below and update the code to test the property createdDate
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property HTML (base name: "HTML")', function() {
+ // uncomment below and update the code to test the property HTML
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isActive (base name: "IsActive")', function() {
+ // uncomment below and update the code to test the property isActive
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isMaster (base name: "IsMaster")', function() {
+ // uncomment below and update the code to test the property isMaster
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedByID (base name: "LastModifiedByID")', function() {
+ // uncomment below and update the code to test the property lastModifiedByID
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastModifiedDate (base name: "LastModifiedDate")', function() {
+ // uncomment below and update the code to test the property lastModifiedDate
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "Name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property objectType (base name: "ObjectType")', function() {
+ // uncomment below and update the code to test the property objectType
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property recordTypeName (base name: "RecordTypeName")', function() {
+ // uncomment below and update the code to test the property recordTypeName
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "Type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property URL (base name: "URL")', function() {
+ // uncomment below and update the code to test the property URL
+ //var instance = new SfGate.Template();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/TemplateResponse.spec.js b/client/sf-gate/test/model/TemplateResponse.spec.js
new file mode 100644
index 0000000..2a7c1a7
--- /dev/null
+++ b/client/sf-gate/test/model/TemplateResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TemplateResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TemplateResponse', function() {
+ it('should create an instance of TemplateResponse', function() {
+ // uncomment below and update the code to test TemplateResponse
+ //var instance = new SfGate.TemplateResponse();
+ //expect(instance).to.be.a(SfGate.TemplateResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.TemplateResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.TemplateResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/Tenant.spec.js b/client/sf-gate/test/model/Tenant.spec.js
new file mode 100644
index 0000000..ddbc8ff
--- /dev/null
+++ b/client/sf-gate/test/model/Tenant.spec.js
@@ -0,0 +1,143 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.Tenant();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Tenant', function() {
+ it('should create an instance of Tenant', function() {
+ // uncomment below and update the code to test Tenant
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be.a(SfGate.Tenant);
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountid (base name: "accountid")', function() {
+ // uncomment below and update the code to test the property accountid
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property active (base name: "active")', function() {
+ // uncomment below and update the code to test the property active
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property status (base name: "status")', function() {
+ // uncomment below and update the code to test the property status
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantname (base name: "tenantname")', function() {
+ // uncomment below and update the code to test the property tenantname
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property type (base name: "type")', function() {
+ // uncomment below and update the code to test the property type
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property version (base name: "version")', function() {
+ // uncomment below and update the code to test the property version
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property databases (base name: "databases")', function() {
+ // uncomment below and update the code to test the property databases
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roles (base name: "roles")', function() {
+ // uncomment below and update the code to test the property roles
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantusers (base name: "tenantusers")', function() {
+ // uncomment below and update the code to test the property tenantusers
+ //var instance = new SfGate.Tenant();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/TenantRequest.spec.js b/client/sf-gate/test/model/TenantRequest.spec.js
new file mode 100644
index 0000000..75e8b6d
--- /dev/null
+++ b/client/sf-gate/test/model/TenantRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TenantRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantRequest', function() {
+ it('should create an instance of TenantRequest', function() {
+ // uncomment below and update the code to test TenantRequest
+ //var instance = new SfGate.TenantRequest();
+ //expect(instance).to.be.a(SfGate.TenantRequest);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.TenantRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.TenantRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/TenantResponse.spec.js b/client/sf-gate/test/model/TenantResponse.spec.js
new file mode 100644
index 0000000..599620e
--- /dev/null
+++ b/client/sf-gate/test/model/TenantResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TenantResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantResponse', function() {
+ it('should create an instance of TenantResponse', function() {
+ // uncomment below and update the code to test TenantResponse
+ //var instance = new SfGate.TenantResponse();
+ //expect(instance).to.be.a(SfGate.TenantResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.TenantResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.TenantResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/TenantUser.spec.js b/client/sf-gate/test/model/TenantUser.spec.js
new file mode 100644
index 0000000..daa5a83
--- /dev/null
+++ b/client/sf-gate/test/model/TenantUser.spec.js
@@ -0,0 +1,77 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.TenantUser();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('TenantUser', function() {
+ it('should create an instance of TenantUser', function() {
+ // uncomment below and update the code to test TenantUser
+ //var instance = new SfGate.TenantUser();
+ //expect(instance).to.be.a(SfGate.TenantUser);
+ });
+
+ it('should have the property accesslevel (base name: "accesslevel")', function() {
+ // uncomment below and update the code to test the property accesslevel
+ //var instance = new SfGate.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userid (base name: "userid")', function() {
+ // uncomment below and update the code to test the property userid
+ //var instance = new SfGate.TenantUser();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/User.spec.js b/client/sf-gate/test/model/User.spec.js
new file mode 100644
index 0000000..11adc1e
--- /dev/null
+++ b/client/sf-gate/test/model/User.spec.js
@@ -0,0 +1,407 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.User();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('User', function() {
+ it('should create an instance of User', function() {
+ // uncomment below and update the code to test User
+ //var instance = new SfGate.User();
+ //expect(instance).to.be.a(SfGate.User);
+ });
+
+ it('should have the property tenantid (base name: "tenantid")', function() {
+ // uncomment below and update the code to test the property tenantid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property aboutme (base name: "aboutme")', function() {
+ // uncomment below and update the code to test the property aboutme
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property accountid (base name: "accountid")', function() {
+ // uncomment below and update the code to test the property accountid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property address (base name: "address")', function() {
+ // uncomment below and update the code to test the property address
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property alias (base name: "alias")', function() {
+ // uncomment below and update the code to test the property alias
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property apikey (base name: "apikey")', function() {
+ // uncomment below and update the code to test the property apikey
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0userid (base name: "auth0userid")', function() {
+ // uncomment below and update the code to test the property auth0userid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property communitynickname (base name: "communitynickname")', function() {
+ // uncomment below and update the code to test the property communitynickname
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property companyname (base name: "companyname")', function() {
+ // uncomment below and update the code to test the property companyname
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property contactid (base name: "contactid")', function() {
+ // uncomment below and update the code to test the property contactid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createdbyid (base name: "createdbyid")', function() {
+ // uncomment below and update the code to test the property createdbyid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property createddate (base name: "createddate")', function() {
+ // uncomment below and update the code to test the property createddate
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property delegatedapproverid (base name: "delegatedapproverid")', function() {
+ // uncomment below and update the code to test the property delegatedapproverid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property department (base name: "department")', function() {
+ // uncomment below and update the code to test the property department
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property division (base name: "division")', function() {
+ // uncomment below and update the code to test the property division
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property email (base name: "email")', function() {
+ // uncomment below and update the code to test the property email
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property employeenumber (base name: "employeenumber")', function() {
+ // uncomment below and update the code to test the property employeenumber
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property endday (base name: "endday")', function() {
+ // uncomment below and update the code to test the property endday
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property environment (base name: "environment")', function() {
+ // uncomment below and update the code to test the property environment
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property extension (base name: "extension")', function() {
+ // uncomment below and update the code to test the property extension
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fabricapikey (base name: "fabricapikey")', function() {
+ // uncomment below and update the code to test the property fabricapikey
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fax (base name: "fax")', function() {
+ // uncomment below and update the code to test the property fax
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property firstname (base name: "firstname")', function() {
+ // uncomment below and update the code to test the property firstname
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property forecastenabled (base name: "forecastenabled")', function() {
+ // uncomment below and update the code to test the property forecastenabled
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fullphotourl (base name: "fullphotourl")', function() {
+ // uncomment below and update the code to test the property fullphotourl
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property id (base name: "id")', function() {
+ // uncomment below and update the code to test the property id
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isactive (base name: "isactive")', function() {
+ // uncomment below and update the code to test the property isactive
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isportalenabled (base name: "isportalenabled")', function() {
+ // uncomment below and update the code to test the property isportalenabled
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property isprofilephotoactive (base name: "isprofilephotoactive")', function() {
+ // uncomment below and update the code to test the property isprofilephotoactive
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property issystemcontrolled (base name: "issystemcontrolled")', function() {
+ // uncomment below and update the code to test the property issystemcontrolled
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastip (base name: "lastip")', function() {
+ // uncomment below and update the code to test the property lastip
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastlogin (base name: "lastlogin")', function() {
+ // uncomment below and update the code to test the property lastlogin
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifiedbyid (base name: "lastmodifiedbyid")', function() {
+ // uncomment below and update the code to test the property lastmodifiedbyid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastmodifieddate (base name: "lastmodifieddate")', function() {
+ // uncomment below and update the code to test the property lastmodifieddate
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastname (base name: "lastname")', function() {
+ // uncomment below and update the code to test the property lastname
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property logincount (base name: "logincount")', function() {
+ // uncomment below and update the code to test the property logincount
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property managerid (base name: "managerid")', function() {
+ // uncomment below and update the code to test the property managerid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property mobilephone (base name: "mobilephone")', function() {
+ // uncomment below and update the code to test the property mobilephone
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property outofofficemessage (base name: "outofofficemessage")', function() {
+ // uncomment below and update the code to test the property outofofficemessage
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property phone (base name: "phone")', function() {
+ // uncomment below and update the code to test the property phone
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property portalrole (base name: "portalrole")', function() {
+ // uncomment below and update the code to test the property portalrole
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property profileid (base name: "profileid")', function() {
+ // uncomment below and update the code to test the property profileid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesadmininfoemails (base name: "receivesadmininfoemails")', function() {
+ // uncomment below and update the code to test the property receivesadmininfoemails
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property receivesinfoemails (base name: "receivesinfoemails")', function() {
+ // uncomment below and update the code to test the property receivesinfoemails
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property senderemail (base name: "senderemail")', function() {
+ // uncomment below and update the code to test the property senderemail
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sendername (base name: "sendername")', function() {
+ // uncomment below and update the code to test the property sendername
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property signature (base name: "signature")', function() {
+ // uncomment below and update the code to test the property signature
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property smallphotourl (base name: "smallphotourl")', function() {
+ // uncomment below and update the code to test the property smallphotourl
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property startday (base name: "startday")', function() {
+ // uncomment below and update the code to test the property startday
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusaccount (base name: "taxnexusaccount")', function() {
+ // uncomment below and update the code to test the property taxnexusaccount
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property timezonesidkey (base name: "timezonesidkey")', function() {
+ // uncomment below and update the code to test the property timezonesidkey
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property username (base name: "username")', function() {
+ // uncomment below and update the code to test the property username
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userroleid (base name: "userroleid")', function() {
+ // uncomment below and update the code to test the property userroleid
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property usertype (base name: "usertype")', function() {
+ // uncomment below and update the code to test the property usertype
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userroles (base name: "userroles")', function() {
+ // uncomment below and update the code to test the property userroles
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property tenantusers (base name: "tenantusers")', function() {
+ // uncomment below and update the code to test the property tenantusers
+ //var instance = new SfGate.User();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/UserResponse.spec.js b/client/sf-gate/test/model/UserResponse.spec.js
new file mode 100644
index 0000000..c316afc
--- /dev/null
+++ b/client/sf-gate/test/model/UserResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.UserResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserResponse', function() {
+ it('should create an instance of UserResponse', function() {
+ // uncomment below and update the code to test UserResponse
+ //var instance = new SfGate.UserResponse();
+ //expect(instance).to.be.a(SfGate.UserResponse);
+ });
+
+ it('should have the property data (base name: "data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new SfGate.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new SfGate.UserResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/sf-gate/test/model/UserRole.spec.js b/client/sf-gate/test/model/UserRole.spec.js
new file mode 100644
index 0000000..2681a18
--- /dev/null
+++ b/client/sf-gate/test/model/UserRole.spec.js
@@ -0,0 +1,89 @@
+/**
+ * sf-gate
+ * Customer Information Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.SfGate);
+ }
+}(this, function(expect, SfGate) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new SfGate.UserRole();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('UserRole', function() {
+ it('should create an instance of UserRole', function() {
+ // uncomment below and update the code to test UserRole
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be.a(SfGate.UserRole);
+ });
+
+ it('should have the property description (base name: "description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property roleid (base name: "roleid")', function() {
+ // uncomment below and update the code to test the property roleid
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property userid (base name: "userid")', function() {
+ // uncomment below and update the code to test the property userid
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property name (base name: "name")', function() {
+ // uncomment below and update the code to test the property name
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property auth0roleid (base name: "auth0roleid")', function() {
+ // uncomment below and update the code to test the property auth0roleid
+ //var instance = new SfGate.UserRole();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/.babelrc b/client/stash/.babelrc
new file mode 100644
index 0000000..c73df9d
--- /dev/null
+++ b/client/stash/.babelrc
@@ -0,0 +1,33 @@
+{
+ "presets": [
+ "@babel/preset-env"
+ ],
+ "plugins": [
+ "@babel/plugin-syntax-dynamic-import",
+ "@babel/plugin-syntax-import-meta",
+ "@babel/plugin-proposal-class-properties",
+ "@babel/plugin-proposal-json-strings",
+ [
+ "@babel/plugin-proposal-decorators",
+ {
+ "legacy": true
+ }
+ ],
+ "@babel/plugin-proposal-function-sent",
+ "@babel/plugin-proposal-export-namespace-from",
+ "@babel/plugin-proposal-numeric-separator",
+ "@babel/plugin-proposal-throw-expressions",
+ "@babel/plugin-proposal-export-default-from",
+ "@babel/plugin-proposal-logical-assignment-operators",
+ "@babel/plugin-proposal-optional-chaining",
+ [
+ "@babel/plugin-proposal-pipeline-operator",
+ {
+ "proposal": "minimal"
+ }
+ ],
+ "@babel/plugin-proposal-nullish-coalescing-operator",
+ "@babel/plugin-proposal-do-expressions",
+ "@babel/plugin-proposal-function-bind"
+ ]
+}
diff --git a/client/stash/.gitignore b/client/stash/.gitignore
new file mode 100644
index 0000000..e920c16
--- /dev/null
+++ b/client/stash/.gitignore
@@ -0,0 +1,33 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+node_modules
+
+# Optional npm cache directory
+.npm
+
+# Optional REPL history
+.node_repl_history
diff --git a/client/stash/.openapi-generator-ignore b/client/stash/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/client/stash/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/client/stash/.openapi-generator/FILES b/client/stash/.openapi-generator/FILES
new file mode 100644
index 0000000..4615489
--- /dev/null
+++ b/client/stash/.openapi-generator/FILES
@@ -0,0 +1,34 @@
+.babelrc
+.gitignore
+.openapi-generator-ignore
+.travis.yml
+README.md
+docs/Document.md
+docs/DocumentResponse.md
+docs/Error.md
+docs/NewPDF.md
+docs/PDFRequest.md
+docs/RequestMeta.md
+docs/ResponseMeta.md
+docs/StashPdfApi.md
+git_push.sh
+mocha.opts
+package.json
+src/ApiClient.js
+src/api/StashPdfApi.js
+src/index.js
+src/model/Document.js
+src/model/DocumentResponse.js
+src/model/Error.js
+src/model/NewPDF.js
+src/model/PDFRequest.js
+src/model/RequestMeta.js
+src/model/ResponseMeta.js
+test/api/StashPdfApi.spec.js
+test/model/Document.spec.js
+test/model/DocumentResponse.spec.js
+test/model/Error.spec.js
+test/model/NewPDF.spec.js
+test/model/PDFRequest.spec.js
+test/model/RequestMeta.spec.js
+test/model/ResponseMeta.spec.js
diff --git a/client/stash/.openapi-generator/VERSION b/client/stash/.openapi-generator/VERSION
new file mode 100644
index 0000000..6d54bbd
--- /dev/null
+++ b/client/stash/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.0.1
\ No newline at end of file
diff --git a/client/stash/.travis.yml b/client/stash/.travis.yml
new file mode 100644
index 0000000..0968f7a
--- /dev/null
+++ b/client/stash/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+cache: npm
+node_js:
+ - "6"
+ - "6.1"
diff --git a/client/stash/README.md b/client/stash/README.md
new file mode 100644
index 0000000..75981ad
--- /dev/null
+++ b/client/stash/README.md
@@ -0,0 +1,153 @@
+# stash
+
+Stash - JavaScript client for stash
+PDF Storage Microservice
+This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.0.2
+- Package version: 0.0.2
+- Build package: org.openapitools.codegen.languages.JavascriptClientCodegen
+
+## Installation
+
+### For [Node.js](https://nodejs.org/)
+
+#### npm
+
+To publish the library as a [npm](https://www.npmjs.com/), please follow the procedure in ["Publishing npm packages"](https://docs.npmjs.com/getting-started/publishing-npm-packages).
+
+Then install it via:
+
+```shell
+npm install stash --save
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+##### Local development
+
+To use the library locally without publishing to a remote npm registry, first install the dependencies by changing into the directory containing `package.json` (and this README). Let's call this `JAVASCRIPT_CLIENT_DIR`. Then run:
+
+```shell
+npm install
+```
+
+Next, [link](https://docs.npmjs.com/cli/link) it globally in npm with the following, also from `JAVASCRIPT_CLIENT_DIR`:
+
+```shell
+npm link
+```
+
+To use the link you just defined in your project, switch to the directory you want to use your stash from, and run:
+
+```shell
+npm link /path/to/
+```
+
+Finally, you need to build the module:
+
+```shell
+npm run build
+```
+
+#### git
+
+If the library is hosted at a git repository, e.g.https://github.com/GIT_USER_ID/GIT_REPO_ID
+then install it via:
+
+```shell
+ npm install GIT_USER_ID/GIT_REPO_ID --save
+```
+
+### For browser
+
+The library also works in the browser environment via npm and [browserify](http://browserify.org/). After following
+the above steps with Node.js and installing browserify with `npm install -g browserify`,
+perform the following (assuming *main.js* is your entry file):
+
+```shell
+browserify main.js > bundle.js
+```
+
+Then include *bundle.js* in the HTML pages.
+
+### Webpack Configuration
+
+Using Webpack you may encounter the following error: "Module not found: Error:
+Cannot resolve module", most certainly you should disable AMD loader. Add/merge
+the following section to your webpack config:
+
+```javascript
+module: {
+ rules: [
+ {
+ parser: {
+ amd: false
+ }
+ }
+ ]
+}
+```
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following JS code:
+
+```javascript
+var Stash = require('stash');
+
+var defaultClient = Stash.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+var ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = "YOUR API KEY"
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix['X-API-Key'] = "Token"
+
+var api = new Stash.StashPdfApi()
+var pDFRequest = new Stash.PDFRequest(); // {PDFRequest} An array of new PDF records
+var callback = function(error, data, response) {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+};
+api.postPdfs(pDFRequest, callback);
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://stash.vernonkeenan.com:8080/v1*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*Stash.StashPdfApi* | [**postPdfs**](docs/StashPdfApi.md#postPdfs) | **POST** /pdfs | Create new PDFs
+
+
+## Documentation for Models
+
+ - [Stash.Document](docs/Document.md)
+ - [Stash.DocumentResponse](docs/DocumentResponse.md)
+ - [Stash.Error](docs/Error.md)
+ - [Stash.NewPDF](docs/NewPDF.md)
+ - [Stash.PDFRequest](docs/PDFRequest.md)
+ - [Stash.RequestMeta](docs/RequestMeta.md)
+ - [Stash.ResponseMeta](docs/ResponseMeta.md)
+
+
+## Documentation for Authorization
+
+
+
+### ApiKeyAuth
+
+
+- **Type**: API key
+- **API key parameter name**: X-API-Key
+- **Location**: HTTP header
+
diff --git a/client/stash/docs/Document.md b/client/stash/docs/Document.md
new file mode 100644
index 0000000..9c9e936
--- /dev/null
+++ b/client/stash/docs/Document.md
@@ -0,0 +1,14 @@
+# Stash.Document
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**filename** | **String** | | [optional]
+**ID** | **String** | | [optional]
+**sagaType** | **String** | | [optional]
+**parentID** | **String** | | [optional]
+**title** | **String** | | [optional]
+**URI** | **String** | | [optional]
+
+
diff --git a/client/stash/docs/DocumentResponse.md b/client/stash/docs/DocumentResponse.md
new file mode 100644
index 0000000..506beed
--- /dev/null
+++ b/client/stash/docs/DocumentResponse.md
@@ -0,0 +1,10 @@
+# Stash.DocumentResponse
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[Document]**](Document.md) | | [optional]
+**meta** | [**ResponseMeta**](ResponseMeta.md) | | [optional]
+
+
diff --git a/client/stash/docs/Error.md b/client/stash/docs/Error.md
new file mode 100644
index 0000000..b60dab6
--- /dev/null
+++ b/client/stash/docs/Error.md
@@ -0,0 +1,11 @@
+# Stash.Error
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Number** | | [optional]
+**fields** | **String** | | [optional]
+**message** | **String** | | [optional]
+
+
diff --git a/client/stash/docs/NewPDF.md b/client/stash/docs/NewPDF.md
new file mode 100644
index 0000000..9b27dae
--- /dev/null
+++ b/client/stash/docs/NewPDF.md
@@ -0,0 +1,17 @@
+# Stash.NewPDF
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**description** | **String** | Description | [optional]
+**filename** | **String** | Filename only | [optional]
+**HTML** | **String** | The HTML data in text format | [optional]
+**lastAccessedByID** | **String** | Last Accessed By | [optional]
+**objectType** | **String** | This document's financial object origination | [optional]
+**ownerID** | **String** | User who created the PDF | [optional]
+**parentID** | **String** | ID of the record that owns this PDF | [optional]
+**ref** | **String** | External reference if any | [optional]
+**title** | **String** | Document descriptive title | [optional]
+
+
diff --git a/client/stash/docs/PDFRequest.md b/client/stash/docs/PDFRequest.md
new file mode 100644
index 0000000..0891a73
--- /dev/null
+++ b/client/stash/docs/PDFRequest.md
@@ -0,0 +1,10 @@
+# Stash.PDFRequest
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**[NewPDF]**](NewPDF.md) | | [optional]
+**meta** | [**RequestMeta**](RequestMeta.md) | | [optional]
+
+
diff --git a/client/stash/docs/RequestMeta.md b/client/stash/docs/RequestMeta.md
new file mode 100644
index 0000000..8bc5714
--- /dev/null
+++ b/client/stash/docs/RequestMeta.md
@@ -0,0 +1,9 @@
+# Stash.RequestMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**taxnexusAccount** | **String** | Taxnexus Account Number of the Reseller or OEM |
+
+
diff --git a/client/stash/docs/ResponseMeta.md b/client/stash/docs/ResponseMeta.md
new file mode 100644
index 0000000..4c7ae5a
--- /dev/null
+++ b/client/stash/docs/ResponseMeta.md
@@ -0,0 +1,19 @@
+# Stash.ResponseMeta
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**contact** | **String** | Microservice Contact Info | [optional]
+**copyright** | **String** | Copyright Info | [optional]
+**license** | **String** | License Information and Restrictions | [optional]
+**operationID** | **String** | Operation ID | [optional]
+**requestIP** | **String** | Request IP Address | [optional]
+**requestType** | **String** | Request Type | [optional]
+**requestURL** | **String** | Request URL | [optional]
+**serverInfo** | **String** | Data Server Info | [optional]
+**serverResponseTime** | **String** | Data Server Response Time (ms) | [optional]
+**serverTimestamp** | **String** | Backend Server Timestamp | [optional]
+**taxnexusAccount** | **String** | Taxnexus Account Number used for recording transactions | [optional]
+
+
diff --git a/client/stash/docs/StashPdfApi.md b/client/stash/docs/StashPdfApi.md
new file mode 100644
index 0000000..e9f8090
--- /dev/null
+++ b/client/stash/docs/StashPdfApi.md
@@ -0,0 +1,60 @@
+# Stash.StashPdfApi
+
+All URIs are relative to *http://stash.vernonkeenan.com:8080/v1*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**postPdfs**](StashPdfApi.md#postPdfs) | **POST** /pdfs | Create new PDFs
+
+
+
+## postPdfs
+
+> DocumentResponse postPdfs(pDFRequest)
+
+Create new PDFs
+
+Store new PDFs
+
+### Example
+
+```javascript
+import Stash from 'stash';
+let defaultClient = Stash.ApiClient.instance;
+// Configure API key authorization: ApiKeyAuth
+let ApiKeyAuth = defaultClient.authentications['ApiKeyAuth'];
+ApiKeyAuth.apiKey = 'YOUR API KEY';
+// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+//ApiKeyAuth.apiKeyPrefix = 'Token';
+
+let apiInstance = new Stash.StashPdfApi();
+let pDFRequest = new Stash.PDFRequest(); // PDFRequest | An array of new PDF records
+apiInstance.postPdfs(pDFRequest, (error, data, response) => {
+ if (error) {
+ console.error(error);
+ } else {
+ console.log('API called successfully. Returned data: ' + data);
+ }
+});
+```
+
+### Parameters
+
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pDFRequest** | [**PDFRequest**](PDFRequest.md)| An array of new PDF records |
+
+### Return type
+
+[**DocumentResponse**](DocumentResponse.md)
+
+### Authorization
+
+[ApiKeyAuth](../README.md#ApiKeyAuth)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
diff --git a/client/stash/git_push.sh b/client/stash/git_push.sh
new file mode 100644
index 0000000..f53a75d
--- /dev/null
+++ b/client/stash/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/client/stash/mocha.opts b/client/stash/mocha.opts
new file mode 100644
index 0000000..9070118
--- /dev/null
+++ b/client/stash/mocha.opts
@@ -0,0 +1 @@
+--timeout 10000
diff --git a/client/stash/package.json b/client/stash/package.json
new file mode 100644
index 0000000..d0b53fa
--- /dev/null
+++ b/client/stash/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "stash",
+ "version": "0.0.2",
+ "description": "PDF_Storage_Microservice",
+ "license": "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc.",
+ "main": "dist/index.js",
+ "scripts": {
+ "build": "babel src -d dist",
+ "prepare": "npm run build",
+ "test": "mocha --require @babel/register --recursive"
+ },
+ "browser": {
+ "fs": false
+ },
+ "dependencies": {
+ "@babel/cli": "^7.0.0",
+ "superagent": "^5.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@babel/plugin-proposal-class-properties": "^7.0.0",
+ "@babel/plugin-proposal-decorators": "^7.0.0",
+ "@babel/plugin-proposal-do-expressions": "^7.0.0",
+ "@babel/plugin-proposal-export-default-from": "^7.0.0",
+ "@babel/plugin-proposal-export-namespace-from": "^7.0.0",
+ "@babel/plugin-proposal-function-bind": "^7.0.0",
+ "@babel/plugin-proposal-function-sent": "^7.0.0",
+ "@babel/plugin-proposal-json-strings": "^7.0.0",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
+ "@babel/plugin-proposal-numeric-separator": "^7.0.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.0.0",
+ "@babel/plugin-proposal-pipeline-operator": "^7.0.0",
+ "@babel/plugin-proposal-throw-expressions": "^7.0.0",
+ "@babel/plugin-syntax-dynamic-import": "^7.0.0",
+ "@babel/plugin-syntax-import-meta": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "@babel/register": "^7.0.0",
+ "expect.js": "^0.3.1",
+ "mocha": "^8.0.1",
+ "sinon": "^7.2.0"
+ },
+ "files": [
+ "dist"
+ ]
+}
diff --git a/client/stash/src/ApiClient.js b/client/stash/src/ApiClient.js
new file mode 100644
index 0000000..afcd91a
--- /dev/null
+++ b/client/stash/src/ApiClient.js
@@ -0,0 +1,692 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import superagent from "superagent";
+import querystring from "querystring";
+
+/**
+* @module ApiClient
+* @version 0.0.2
+*/
+
+/**
+* Manages low level client-server communications, parameter marshalling, etc. There should not be any need for an
+* application to use this class directly - the *Api and model classes provide the public API for the service. The
+* contents of this file should be regarded as internal but are documented for completeness.
+* @alias module:ApiClient
+* @class
+*/
+class ApiClient {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * Overrides the default value set in spec file if present
+ * @param {String} basePath
+ */
+ constructor(basePath = 'http://stash.vernonkeenan.com:8080/v1') {
+ /**
+ * The base URL against which to resolve every API call's (relative) path.
+ * @type {String}
+ * @default http://stash.vernonkeenan.com:8080/v1
+ */
+ this.basePath = basePath.replace(/\/+$/, '');
+
+ /**
+ * The authentication methods to be included for all API calls.
+ * @type {Array.}
+ */
+ this.authentications = {
+ 'ApiKeyAuth': {type: 'apiKey', 'in': 'header', name: 'X-API-Key'}
+ }
+
+ /**
+ * The default HTTP headers to be included for all API calls.
+ * @type {Array.}
+ * @default {}
+ */
+ this.defaultHeaders = {
+ 'User-Agent': 'OpenAPI-Generator/0.0.2/Javascript'
+ };
+
+ /**
+ * The default HTTP timeout for all API calls.
+ * @type {Number}
+ * @default 60000
+ */
+ this.timeout = 60000;
+
+ /**
+ * If set to false an additional timestamp parameter is added to all API GET calls to
+ * prevent browser caching
+ * @type {Boolean}
+ * @default true
+ */
+ this.cache = true;
+
+ /**
+ * If set to true, the client will save the cookies from each server
+ * response, and return them in the next request.
+ * @default false
+ */
+ this.enableCookies = false;
+
+ /*
+ * Used to save and return cookies in a node.js (non-browser) setting,
+ * if this.enableCookies is set to true.
+ */
+ if (typeof window === 'undefined') {
+ this.agent = new superagent.agent();
+ }
+
+ /*
+ * Allow user to override superagent agent
+ */
+ this.requestAgent = null;
+
+ /*
+ * Allow user to add superagent plugins
+ */
+ this.plugins = null;
+
+ }
+
+ /**
+ * Returns a string representation for an actual parameter.
+ * @param param The actual parameter.
+ * @returns {String} The string representation of param
.
+ */
+ paramToString(param) {
+ if (param == undefined || param == null) {
+ return '';
+ }
+ if (param instanceof Date) {
+ return param.toJSON();
+ }
+ if (ApiClient.canBeJsonified(param)) {
+ return JSON.stringify(param);
+ }
+
+ return param.toString();
+ }
+
+ /**
+ * Returns a boolean indicating if the parameter could be JSON.stringified
+ * @param param The actual parameter
+ * @returns {Boolean} Flag indicating if param
can be JSON.stringified
+ */
+ static canBeJsonified(str) {
+ if (typeof str !== 'string' && typeof str !== 'object') return false;
+ try {
+ const type = str.toString();
+ return type === '[object Object]'
+ || type === '[object Array]';
+ } catch (err) {
+ return false;
+ }
+ };
+
+ /**
+ * Builds full URL by appending the given path to the base URL and replacing path parameter place-holders with parameter values.
+ * NOTE: query parameters are not handled here.
+ * @param {String} path The path to append to the base URL.
+ * @param {Object} pathParams The parameter values to append.
+ * @param {String} apiBasePath Base path defined in the path, operation level to override the default one
+ * @returns {String} The encoded path with parameter values substituted.
+ */
+ buildUrl(path, pathParams, apiBasePath) {
+ if (!path.match(/^\//)) {
+ path = '/' + path;
+ }
+
+ var url = this.basePath + path;
+
+ // use API (operation, path) base path if defined
+ if (apiBasePath !== null && apiBasePath !== undefined) {
+ url = apiBasePath + path;
+ }
+
+ url = url.replace(/\{([\w-\.]+)\}/g, (fullMatch, key) => {
+ var value;
+ if (pathParams.hasOwnProperty(key)) {
+ value = this.paramToString(pathParams[key]);
+ } else {
+ value = fullMatch;
+ }
+
+ return encodeURIComponent(value);
+ });
+
+ return url;
+ }
+
+ /**
+ * Checks whether the given content type represents JSON.
+ * JSON content type examples:
+ *
+ * - application/json
+ * - application/json; charset=UTF8
+ * - APPLICATION/JSON
+ *
+ * @param {String} contentType The MIME content type to check.
+ * @returns {Boolean} true
if contentType
represents JSON, otherwise false
.
+ */
+ isJsonMime(contentType) {
+ return Boolean(contentType != null && contentType.match(/^application\/json(;.*)?$/i));
+ }
+
+ /**
+ * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.
+ * @param {Array.} contentTypes
+ * @returns {String} The chosen content type, preferring JSON.
+ */
+ jsonPreferredMime(contentTypes) {
+ for (var i = 0; i < contentTypes.length; i++) {
+ if (this.isJsonMime(contentTypes[i])) {
+ return contentTypes[i];
+ }
+ }
+
+ return contentTypes[0];
+ }
+
+ /**
+ * Checks whether the given parameter value represents file-like content.
+ * @param param The parameter to check.
+ * @returns {Boolean} true
if param
represents a file.
+ */
+ isFileParam(param) {
+ // fs.ReadStream in Node.js and Electron (but not in runtime like browserify)
+ if (typeof require === 'function') {
+ let fs;
+ try {
+ fs = require('fs');
+ } catch (err) {}
+ if (fs && fs.ReadStream && param instanceof fs.ReadStream) {
+ return true;
+ }
+ }
+
+ // Buffer in Node.js
+ if (typeof Buffer === 'function' && param instanceof Buffer) {
+ return true;
+ }
+
+ // Blob in browser
+ if (typeof Blob === 'function' && param instanceof Blob) {
+ return true;
+ }
+
+ // File in browser (it seems File object is also instance of Blob, but keep this for safe)
+ if (typeof File === 'function' && param instanceof File) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Normalizes parameter values:
+ *
+ * - remove nils
+ * - keep files and arrays
+ * - format to string with `paramToString` for other cases
+ *
+ * @param {Object.} params The parameters as object properties.
+ * @returns {Object.} normalized parameters.
+ */
+ normalizeParams(params) {
+ var newParams = {};
+ for (var key in params) {
+ if (params.hasOwnProperty(key) && params[key] != undefined && params[key] != null) {
+ var value = params[key];
+ if (this.isFileParam(value) || Array.isArray(value)) {
+ newParams[key] = value;
+ } else {
+ newParams[key] = this.paramToString(value);
+ }
+ }
+ }
+
+ return newParams;
+ }
+
+ /**
+ * Builds a string representation of an array-type actual parameter, according to the given collection format.
+ * @param {Array} param An array parameter.
+ * @param {module:ApiClient.CollectionFormatEnum} collectionFormat The array element separator strategy.
+ * @returns {String|Array} A string representation of the supplied collection, using the specified delimiter. Returns
+ * param
as is if collectionFormat
is multi
.
+ */
+ buildCollectionParam(param, collectionFormat) {
+ if (param == null) {
+ return null;
+ }
+ switch (collectionFormat) {
+ case 'csv':
+ return param.map(this.paramToString, this).join(',');
+ case 'ssv':
+ return param.map(this.paramToString, this).join(' ');
+ case 'tsv':
+ return param.map(this.paramToString, this).join('\t');
+ case 'pipes':
+ return param.map(this.paramToString, this).join('|');
+ case 'multi':
+ //return the array directly as SuperAgent will handle it as expected
+ return param.map(this.paramToString, this);
+ case 'passthrough':
+ return param;
+ default:
+ throw new Error('Unknown collection format: ' + collectionFormat);
+ }
+ }
+
+ /**
+ * Applies authentication headers to the request.
+ * @param {Object} request The request object created by a superagent()
call.
+ * @param {Array.} authNames An array of authentication method names.
+ */
+ applyAuthToRequest(request, authNames) {
+ authNames.forEach((authName) => {
+ var auth = this.authentications[authName];
+ switch (auth.type) {
+ case 'basic':
+ if (auth.username || auth.password) {
+ request.auth(auth.username || '', auth.password || '');
+ }
+
+ break;
+ case 'bearer':
+ if (auth.accessToken) {
+ var localVarBearerToken = typeof auth.accessToken === 'function'
+ ? auth.accessToken()
+ : auth.accessToken
+ request.set({'Authorization': 'Bearer ' + localVarBearerToken});
+ }
+
+ break;
+ case 'apiKey':
+ if (auth.apiKey) {
+ var data = {};
+ if (auth.apiKeyPrefix) {
+ data[auth.name] = auth.apiKeyPrefix + ' ' + auth.apiKey;
+ } else {
+ data[auth.name] = auth.apiKey;
+ }
+
+ if (auth['in'] === 'header') {
+ request.set(data);
+ } else {
+ request.query(data);
+ }
+ }
+
+ break;
+ case 'oauth2':
+ if (auth.accessToken) {
+ request.set({'Authorization': 'Bearer ' + auth.accessToken});
+ }
+
+ break;
+ default:
+ throw new Error('Unknown authentication type: ' + auth.type);
+ }
+ });
+ }
+
+ /**
+ * Deserializes an HTTP response body into a value of the specified type.
+ * @param {Object} response A SuperAgent response object.
+ * @param {(String|Array.|Object.|Function)} returnType The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns A value of the specified type.
+ */
+ deserialize(response, returnType) {
+ if (response == null || returnType == null || response.status == 204) {
+ return null;
+ }
+
+ // Rely on SuperAgent for parsing response body.
+ // See http://visionmedia.github.io/superagent/#parsing-response-bodies
+ var data = response.body;
+ if (data == null || (typeof data === 'object' && typeof data.length === 'undefined' && !Object.keys(data).length)) {
+ // SuperAgent does not always produce a body; use the unparsed response as a fallback
+ data = response.text;
+ }
+
+ return ApiClient.convertToType(data, returnType);
+ }
+
+ /**
+ * Callback function to receive the result of the operation.
+ * @callback module:ApiClient~callApiCallback
+ * @param {String} error Error message, if any.
+ * @param data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Invokes the REST service using the supplied settings and parameters.
+ * @param {String} path The base URL to invoke.
+ * @param {String} httpMethod The HTTP method to use.
+ * @param {Object.} pathParams A map of path parameters and their values.
+ * @param {Object.} queryParams A map of query parameters and their values.
+ * @param {Object.} headerParams A map of header parameters and their values.
+ * @param {Object.} formParams A map of form parameters and their values.
+ * @param {Object} bodyParam The value to pass as the request body.
+ * @param {Array.} authNames An array of authentication type names.
+ * @param {Array.} contentTypes An array of request MIME types.
+ * @param {Array.} accepts An array of acceptable response MIME types.
+ * @param {(String|Array|ObjectFunction)} returnType The required type to return; can be a string for simple types or the
+ * constructor for a complex type.
+ * @param {String} apiBasePath base path defined in the operation/path level to override the default one
+ * @param {module:ApiClient~callApiCallback} callback The callback function.
+ * @returns {Object} The SuperAgent request object.
+ */
+ callApi(path, httpMethod, pathParams,
+ queryParams, headerParams, formParams, bodyParam, authNames, contentTypes, accepts,
+ returnType, apiBasePath, callback) {
+
+ var url = this.buildUrl(path, pathParams, apiBasePath);
+ var request = superagent(httpMethod, url);
+
+ if (this.plugins !== null) {
+ for (var index in this.plugins) {
+ if (this.plugins.hasOwnProperty(index)) {
+ request.use(this.plugins[index])
+ }
+ }
+ }
+
+ // apply authentications
+ this.applyAuthToRequest(request, authNames);
+
+ // set query parameters
+ if (httpMethod.toUpperCase() === 'GET' && this.cache === false) {
+ queryParams['_'] = new Date().getTime();
+ }
+
+ request.query(this.normalizeParams(queryParams));
+
+ // set header parameters
+ request.set(this.defaultHeaders).set(this.normalizeParams(headerParams));
+
+ // set requestAgent if it is set by user
+ if (this.requestAgent) {
+ request.agent(this.requestAgent);
+ }
+
+ // set request timeout
+ request.timeout(this.timeout);
+
+ var contentType = this.jsonPreferredMime(contentTypes);
+ if (contentType) {
+ // Issue with superagent and multipart/form-data (https://github.com/visionmedia/superagent/issues/746)
+ if(contentType != 'multipart/form-data') {
+ request.type(contentType);
+ }
+ }
+
+ if (contentType === 'application/x-www-form-urlencoded') {
+ request.send(querystring.stringify(this.normalizeParams(formParams)));
+ } else if (contentType == 'multipart/form-data') {
+ var _formParams = this.normalizeParams(formParams);
+ for (var key in _formParams) {
+ if (_formParams.hasOwnProperty(key)) {
+ let _formParamsValue = _formParams[key];
+ if (this.isFileParam(_formParamsValue)) {
+ // file field
+ request.attach(key, _formParamsValue);
+ } else if (Array.isArray(_formParamsValue) && _formParamsValue.length
+ && this.isFileParam(_formParamsValue[0])) {
+ // multiple files
+ _formParamsValue.forEach(file => request.attach(key, file));
+ } else {
+ request.field(key, _formParamsValue);
+ }
+ }
+ }
+ } else if (bodyParam !== null && bodyParam !== undefined) {
+ if (!request.header['Content-Type']) {
+ request.type('application/json');
+ }
+ request.send(bodyParam);
+ }
+
+ var accept = this.jsonPreferredMime(accepts);
+ if (accept) {
+ request.accept(accept);
+ }
+
+ if (returnType === 'Blob') {
+ request.responseType('blob');
+ } else if (returnType === 'String') {
+ request.responseType('text');
+ }
+
+ // Attach previously saved cookies, if enabled
+ if (this.enableCookies){
+ if (typeof window === 'undefined') {
+ this.agent._attachCookies(request);
+ }
+ else {
+ request.withCredentials();
+ }
+ }
+
+ request.end((error, response) => {
+ if (callback) {
+ var data = null;
+ if (!error) {
+ try {
+ data = this.deserialize(response, returnType);
+ if (this.enableCookies && typeof window === 'undefined'){
+ this.agent._saveCookies(response);
+ }
+ } catch (err) {
+ error = err;
+ }
+ }
+
+ callback(error, data, response);
+ }
+ });
+
+ return request;
+ }
+
+ /**
+ * Parses an ISO-8601 string representation or epoch representation of a date value.
+ * @param {String} str The date value as a string.
+ * @returns {Date} The parsed date object.
+ */
+ static parseDate(str) {
+ if (isNaN(str)) {
+ return new Date(str.replace(/(\d)(T)(\d)/i, '$1 $3'));
+ }
+ return new Date(+str);
+ }
+
+ /**
+ * Converts a value to the specified type.
+ * @param {(String|Object)} data The data to convert, as a string or object.
+ * @param {(String|Array.|Object.|Function)} type The type to return. Pass a string for simple types
+ * or the constructor function for a complex type. Pass an array containing the type name to return an array of that type. To
+ * return an object, pass an object with one property whose name is the key type and whose value is the corresponding value type:
+ * all properties on data will be converted to this type.
+ * @returns An instance of the specified type or null or undefined if data is null or undefined.
+ */
+ static convertToType(data, type) {
+ if (data === null || data === undefined)
+ return data
+
+ switch (type) {
+ case 'Boolean':
+ return Boolean(data);
+ case 'Integer':
+ return parseInt(data, 10);
+ case 'Number':
+ return parseFloat(data);
+ case 'String':
+ return String(data);
+ case 'Date':
+ return ApiClient.parseDate(String(data));
+ case 'Blob':
+ return data;
+ default:
+ if (type === Object) {
+ // generic object, return directly
+ return data;
+ } else if (typeof type.constructFromObject === 'function') {
+ // for model type like User and enum class
+ return type.constructFromObject(data);
+ } else if (Array.isArray(type)) {
+ // for array type like: ['String']
+ var itemType = type[0];
+
+ return data.map((item) => {
+ return ApiClient.convertToType(item, itemType);
+ });
+ } else if (typeof type === 'object') {
+ // for plain object type like: {'String': 'Integer'}
+ var keyType, valueType;
+ for (var k in type) {
+ if (type.hasOwnProperty(k)) {
+ keyType = k;
+ valueType = type[k];
+ break;
+ }
+ }
+
+ var result = {};
+ for (var k in data) {
+ if (data.hasOwnProperty(k)) {
+ var key = ApiClient.convertToType(k, keyType);
+ var value = ApiClient.convertToType(data[k], valueType);
+ result[key] = value;
+ }
+ }
+
+ return result;
+ } else {
+ // for unknown type, return the data directly
+ return data;
+ }
+ }
+ }
+
+ /**
+ * Gets an array of host settings
+ * @returns An array of host settings
+ */
+ hostSettings() {
+ return [
+ {
+ 'url': "http://stash.vernonkeenan.com:8080/v1",
+ 'description': "No description provided",
+ }
+ ];
+ }
+
+ getBasePathFromSettings(index, variables={}) {
+ var servers = this.hostSettings();
+
+ // check array index out of bound
+ if (index < 0 || index >= servers.length) {
+ throw new Error("Invalid index " + index + " when selecting the host settings. Must be less than " + servers.length);
+ }
+
+ var server = servers[index];
+ var url = server['url'];
+
+ // go through variable and assign a value
+ for (var variable_name in server['variables']) {
+ if (variable_name in variables) {
+ let variable = server['variables'][variable_name];
+ if ( !('enum_values' in variable) || variable['enum_values'].includes(variables[variable_name]) ) {
+ url = url.replace("{" + variable_name + "}", variables[variable_name]);
+ } else {
+ throw new Error("The variable `" + variable_name + "` in the host URL has invalid value " + variables[variable_name] + ". Must be " + server['variables'][variable_name]['enum_values'] + ".");
+ }
+ } else {
+ // use default value
+ url = url.replace("{" + variable_name + "}", server['variables'][variable_name]['default_value'])
+ }
+ }
+ return url;
+ }
+
+ /**
+ * Constructs a new map or array model from REST data.
+ * @param data {Object|Array} The REST data.
+ * @param obj {Object|Array} The target object or array.
+ */
+ static constructFromObject(data, obj, itemType) {
+ if (Array.isArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (data.hasOwnProperty(i))
+ obj[i] = ApiClient.convertToType(data[i], itemType);
+ }
+ } else {
+ for (var k in data) {
+ if (data.hasOwnProperty(k))
+ obj[k] = ApiClient.convertToType(data[k], itemType);
+ }
+ }
+ };
+}
+
+/**
+ * Enumeration of collection format separator strategies.
+ * @enum {String}
+ * @readonly
+ */
+ApiClient.CollectionFormatEnum = {
+ /**
+ * Comma-separated values. Value: csv
+ * @const
+ */
+ CSV: ',',
+
+ /**
+ * Space-separated values. Value: ssv
+ * @const
+ */
+ SSV: ' ',
+
+ /**
+ * Tab-separated values. Value: tsv
+ * @const
+ */
+ TSV: '\t',
+
+ /**
+ * Pipe(|)-separated values. Value: pipes
+ * @const
+ */
+ PIPES: '|',
+
+ /**
+ * Native array. Value: multi
+ * @const
+ */
+ MULTI: 'multi'
+};
+
+/**
+* The default API client implementation.
+* @type {module:ApiClient}
+*/
+ApiClient.instance = new ApiClient();
+export default ApiClient;
diff --git a/client/stash/src/api/StashPdfApi.js b/client/stash/src/api/StashPdfApi.js
new file mode 100644
index 0000000..9a84b1e
--- /dev/null
+++ b/client/stash/src/api/StashPdfApi.js
@@ -0,0 +1,82 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from "../ApiClient";
+import DocumentResponse from '../model/DocumentResponse';
+import Error from '../model/Error';
+import PDFRequest from '../model/PDFRequest';
+
+/**
+* StashPdf service.
+* @module api/StashPdfApi
+* @version 0.0.2
+*/
+export default class StashPdfApi {
+
+ /**
+ * Constructs a new StashPdfApi.
+ * @alias module:api/StashPdfApi
+ * @class
+ * @param {module:ApiClient} [apiClient] Optional API client implementation to use,
+ * default to {@link module:ApiClient#instance} if unspecified.
+ */
+ constructor(apiClient) {
+ this.apiClient = apiClient || ApiClient.instance;
+ }
+
+
+ /**
+ * Callback function to receive the result of the postPdfs operation.
+ * @callback module:api/StashPdfApi~postPdfsCallback
+ * @param {String} error Error message, if any.
+ * @param {module:model/DocumentResponse} data The data returned by the service call.
+ * @param {String} response The complete HTTP response.
+ */
+
+ /**
+ * Create new PDFs
+ * Store new PDFs
+ * @param {module:model/PDFRequest} pDFRequest An array of new PDF records
+ * @param {module:api/StashPdfApi~postPdfsCallback} callback The callback function, accepting three arguments: error, data, response
+ * data is of type: {@link module:model/DocumentResponse}
+ */
+ postPdfs(pDFRequest, callback) {
+ let postBody = pDFRequest;
+ // verify the required parameter 'pDFRequest' is set
+ if (pDFRequest === undefined || pDFRequest === null) {
+ throw new Error("Missing the required parameter 'pDFRequest' when calling postPdfs");
+ }
+
+ let pathParams = {
+ };
+ let queryParams = {
+ };
+ let headerParams = {
+ };
+ let formParams = {
+ };
+
+ let authNames = ['ApiKeyAuth'];
+ let contentTypes = ['application/json'];
+ let accepts = ['application/json'];
+ let returnType = DocumentResponse;
+ return this.apiClient.callApi(
+ '/pdfs', 'POST',
+ pathParams, queryParams, headerParams, formParams, postBody,
+ authNames, contentTypes, accepts, returnType, null, callback
+ );
+ }
+
+
+}
diff --git a/client/stash/src/index.js b/client/stash/src/index.js
new file mode 100644
index 0000000..a0914b5
--- /dev/null
+++ b/client/stash/src/index.js
@@ -0,0 +1,111 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+
+import ApiClient from './ApiClient';
+import Document from './model/Document';
+import DocumentResponse from './model/DocumentResponse';
+import Error from './model/Error';
+import NewPDF from './model/NewPDF';
+import PDFRequest from './model/PDFRequest';
+import RequestMeta from './model/RequestMeta';
+import ResponseMeta from './model/ResponseMeta';
+import StashPdfApi from './api/StashPdfApi';
+
+
+/**
+* PDF_Storage_Microservice.
+* The index
module provides access to constructors for all the classes which comprise the public API.
+*
+* An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
+*
+* var Stash = require('index'); // See note below*.
+* var xxxSvc = new Stash.XxxApi(); // Allocate the API class we're going to use.
+* var yyyModel = new Stash.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+* *NOTE: For a top-level AMD script, use require(['index'], function(){...})
+* and put the application logic within the callback function.
+*
+*
+* A non-AMD browser application (discouraged) might do something like this:
+*
+* var xxxSvc = new Stash.XxxApi(); // Allocate the API class we're going to use.
+* var yyy = new Stash.Yyy(); // Construct a model instance.
+* yyyModel.someProperty = 'someValue';
+* ...
+* var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
+* ...
+*
+*
+* @module index
+* @version 0.0.2
+*/
+export {
+ /**
+ * The ApiClient constructor.
+ * @property {module:ApiClient}
+ */
+ ApiClient,
+
+ /**
+ * The Document model constructor.
+ * @property {module:model/Document}
+ */
+ Document,
+
+ /**
+ * The DocumentResponse model constructor.
+ * @property {module:model/DocumentResponse}
+ */
+ DocumentResponse,
+
+ /**
+ * The Error model constructor.
+ * @property {module:model/Error}
+ */
+ Error,
+
+ /**
+ * The NewPDF model constructor.
+ * @property {module:model/NewPDF}
+ */
+ NewPDF,
+
+ /**
+ * The PDFRequest model constructor.
+ * @property {module:model/PDFRequest}
+ */
+ PDFRequest,
+
+ /**
+ * The RequestMeta model constructor.
+ * @property {module:model/RequestMeta}
+ */
+ RequestMeta,
+
+ /**
+ * The ResponseMeta model constructor.
+ * @property {module:model/ResponseMeta}
+ */
+ ResponseMeta,
+
+ /**
+ * The StashPdfApi service constructor.
+ * @property {module:api/StashPdfApi}
+ */
+ StashPdfApi
+};
diff --git a/client/stash/src/model/Document.js b/client/stash/src/model/Document.js
new file mode 100644
index 0000000..61c9ef9
--- /dev/null
+++ b/client/stash/src/model/Document.js
@@ -0,0 +1,111 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Document model module.
+ * @module model/Document
+ * @version 0.0.2
+ */
+class Document {
+ /**
+ * Constructs a new Document
.
+ * @alias module:model/Document
+ */
+ constructor() {
+
+ Document.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Document
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Document} obj Optional instance to populate.
+ * @return {module:model/Document} The populated Document
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Document();
+
+ if (data.hasOwnProperty('Filename')) {
+ obj['Filename'] = ApiClient.convertToType(data['Filename'], 'String');
+ }
+ if (data.hasOwnProperty('ID')) {
+ obj['ID'] = ApiClient.convertToType(data['ID'], 'String');
+ }
+ if (data.hasOwnProperty('SagaType')) {
+ obj['SagaType'] = ApiClient.convertToType(data['SagaType'], 'String');
+ }
+ if (data.hasOwnProperty('ParentID')) {
+ obj['ParentID'] = ApiClient.convertToType(data['ParentID'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ if (data.hasOwnProperty('URI')) {
+ obj['URI'] = ApiClient.convertToType(data['URI'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {String} Filename
+ */
+Document.prototype['Filename'] = undefined;
+
+/**
+ * @member {String} ID
+ */
+Document.prototype['ID'] = undefined;
+
+/**
+ * @member {String} SagaType
+ */
+Document.prototype['SagaType'] = undefined;
+
+/**
+ * @member {String} ParentID
+ */
+Document.prototype['ParentID'] = undefined;
+
+/**
+ * @member {String} Title
+ */
+Document.prototype['Title'] = undefined;
+
+/**
+ * @member {String} URI
+ */
+Document.prototype['URI'] = undefined;
+
+
+
+
+
+
+export default Document;
+
diff --git a/client/stash/src/model/DocumentResponse.js b/client/stash/src/model/DocumentResponse.js
new file mode 100644
index 0000000..b553702
--- /dev/null
+++ b/client/stash/src/model/DocumentResponse.js
@@ -0,0 +1,82 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import Document from './Document';
+import ResponseMeta from './ResponseMeta';
+
+/**
+ * The DocumentResponse model module.
+ * @module model/DocumentResponse
+ * @version 0.0.2
+ */
+class DocumentResponse {
+ /**
+ * Constructs a new DocumentResponse
.
+ * An array of rendered documents
+ * @alias module:model/DocumentResponse
+ */
+ constructor() {
+
+ DocumentResponse.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a DocumentResponse
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/DocumentResponse} obj Optional instance to populate.
+ * @return {module:model/DocumentResponse} The populated DocumentResponse
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new DocumentResponse();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [Document]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = ResponseMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+DocumentResponse.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/ResponseMeta} Meta
+ */
+DocumentResponse.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default DocumentResponse;
+
diff --git a/client/stash/src/model/Error.js b/client/stash/src/model/Error.js
new file mode 100644
index 0000000..2d494d7
--- /dev/null
+++ b/client/stash/src/model/Error.js
@@ -0,0 +1,87 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The Error model module.
+ * @module model/Error
+ * @version 0.0.2
+ */
+class Error {
+ /**
+ * Constructs a new Error
.
+ * @alias module:model/Error
+ */
+ constructor() {
+
+ Error.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a Error
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/Error} obj Optional instance to populate.
+ * @return {module:model/Error} The populated Error
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new Error();
+
+ if (data.hasOwnProperty('Code')) {
+ obj['Code'] = ApiClient.convertToType(data['Code'], 'Number');
+ }
+ if (data.hasOwnProperty('Fields')) {
+ obj['Fields'] = ApiClient.convertToType(data['Fields'], 'String');
+ }
+ if (data.hasOwnProperty('Message')) {
+ obj['Message'] = ApiClient.convertToType(data['Message'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Number} Code
+ */
+Error.prototype['Code'] = undefined;
+
+/**
+ * @member {String} Fields
+ */
+Error.prototype['Fields'] = undefined;
+
+/**
+ * @member {String} Message
+ */
+Error.prototype['Message'] = undefined;
+
+
+
+
+
+
+export default Error;
+
diff --git a/client/stash/src/model/NewPDF.js b/client/stash/src/model/NewPDF.js
new file mode 100644
index 0000000..26ce791
--- /dev/null
+++ b/client/stash/src/model/NewPDF.js
@@ -0,0 +1,144 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The NewPDF model module.
+ * @module model/NewPDF
+ * @version 0.0.2
+ */
+class NewPDF {
+ /**
+ * Constructs a new NewPDF
.
+ * @alias module:model/NewPDF
+ */
+ constructor() {
+
+ NewPDF.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a NewPDF
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/NewPDF} obj Optional instance to populate.
+ * @return {module:model/NewPDF} The populated NewPDF
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new NewPDF();
+
+ if (data.hasOwnProperty('Description')) {
+ obj['Description'] = ApiClient.convertToType(data['Description'], 'String');
+ }
+ if (data.hasOwnProperty('Filename')) {
+ obj['Filename'] = ApiClient.convertToType(data['Filename'], 'String');
+ }
+ if (data.hasOwnProperty('HTML')) {
+ obj['HTML'] = ApiClient.convertToType(data['HTML'], 'String');
+ }
+ if (data.hasOwnProperty('LastAccessedByID')) {
+ obj['LastAccessedByID'] = ApiClient.convertToType(data['LastAccessedByID'], 'String');
+ }
+ if (data.hasOwnProperty('ObjectType')) {
+ obj['ObjectType'] = ApiClient.convertToType(data['ObjectType'], 'String');
+ }
+ if (data.hasOwnProperty('OwnerID')) {
+ obj['OwnerID'] = ApiClient.convertToType(data['OwnerID'], 'String');
+ }
+ if (data.hasOwnProperty('ParentID')) {
+ obj['ParentID'] = ApiClient.convertToType(data['ParentID'], 'String');
+ }
+ if (data.hasOwnProperty('Ref')) {
+ obj['Ref'] = ApiClient.convertToType(data['Ref'], 'String');
+ }
+ if (data.hasOwnProperty('Title')) {
+ obj['Title'] = ApiClient.convertToType(data['Title'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Description
+ * @member {String} Description
+ */
+NewPDF.prototype['Description'] = undefined;
+
+/**
+ * Filename only
+ * @member {String} Filename
+ */
+NewPDF.prototype['Filename'] = undefined;
+
+/**
+ * The HTML data in text format
+ * @member {String} HTML
+ */
+NewPDF.prototype['HTML'] = undefined;
+
+/**
+ * Last Accessed By
+ * @member {String} LastAccessedByID
+ */
+NewPDF.prototype['LastAccessedByID'] = undefined;
+
+/**
+ * This document's financial object origination
+ * @member {String} ObjectType
+ */
+NewPDF.prototype['ObjectType'] = undefined;
+
+/**
+ * User who created the PDF
+ * @member {String} OwnerID
+ */
+NewPDF.prototype['OwnerID'] = undefined;
+
+/**
+ * ID of the record that owns this PDF
+ * @member {String} ParentID
+ */
+NewPDF.prototype['ParentID'] = undefined;
+
+/**
+ * External reference if any
+ * @member {String} Ref
+ */
+NewPDF.prototype['Ref'] = undefined;
+
+/**
+ * Document descriptive title
+ * @member {String} Title
+ */
+NewPDF.prototype['Title'] = undefined;
+
+
+
+
+
+
+export default NewPDF;
+
diff --git a/client/stash/src/model/PDFRequest.js b/client/stash/src/model/PDFRequest.js
new file mode 100644
index 0000000..b1b5d92
--- /dev/null
+++ b/client/stash/src/model/PDFRequest.js
@@ -0,0 +1,81 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+import NewPDF from './NewPDF';
+import RequestMeta from './RequestMeta';
+
+/**
+ * The PDFRequest model module.
+ * @module model/PDFRequest
+ * @version 0.0.2
+ */
+class PDFRequest {
+ /**
+ * Constructs a new PDFRequest
.
+ * @alias module:model/PDFRequest
+ */
+ constructor() {
+
+ PDFRequest.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a PDFRequest
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/PDFRequest} obj Optional instance to populate.
+ * @return {module:model/PDFRequest} The populated PDFRequest
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new PDFRequest();
+
+ if (data.hasOwnProperty('Data')) {
+ obj['Data'] = ApiClient.convertToType(data['Data'], [NewPDF]);
+ }
+ if (data.hasOwnProperty('Meta')) {
+ obj['Meta'] = RequestMeta.constructFromObject(data['Meta']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * @member {Array.} Data
+ */
+PDFRequest.prototype['Data'] = undefined;
+
+/**
+ * @member {module:model/RequestMeta} Meta
+ */
+PDFRequest.prototype['Meta'] = undefined;
+
+
+
+
+
+
+export default PDFRequest;
+
diff --git a/client/stash/src/model/RequestMeta.js b/client/stash/src/model/RequestMeta.js
new file mode 100644
index 0000000..f567e0c
--- /dev/null
+++ b/client/stash/src/model/RequestMeta.js
@@ -0,0 +1,74 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The RequestMeta model module.
+ * @module model/RequestMeta
+ * @version 0.0.2
+ */
+class RequestMeta {
+ /**
+ * Constructs a new RequestMeta
.
+ * @alias module:model/RequestMeta
+ * @param taxnexusAccount {String} Taxnexus Account Number of the Reseller or OEM
+ */
+ constructor(taxnexusAccount) {
+
+ RequestMeta.initialize(this, taxnexusAccount);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj, taxnexusAccount) {
+ obj['TaxnexusAccount'] = taxnexusAccount;
+ }
+
+ /**
+ * Constructs a RequestMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/RequestMeta} obj Optional instance to populate.
+ * @return {module:model/RequestMeta} The populated RequestMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new RequestMeta();
+
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Taxnexus Account Number of the Reseller or OEM
+ * @member {String} TaxnexusAccount
+ */
+RequestMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default RequestMeta;
+
diff --git a/client/stash/src/model/ResponseMeta.js b/client/stash/src/model/ResponseMeta.js
new file mode 100644
index 0000000..581fba4
--- /dev/null
+++ b/client/stash/src/model/ResponseMeta.js
@@ -0,0 +1,162 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+import ApiClient from '../ApiClient';
+
+/**
+ * The ResponseMeta model module.
+ * @module model/ResponseMeta
+ * @version 0.0.2
+ */
+class ResponseMeta {
+ /**
+ * Constructs a new ResponseMeta
.
+ * @alias module:model/ResponseMeta
+ */
+ constructor() {
+
+ ResponseMeta.initialize(this);
+ }
+
+ /**
+ * Initializes the fields of this object.
+ * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
+ * Only for internal use.
+ */
+ static initialize(obj) {
+ }
+
+ /**
+ * Constructs a ResponseMeta
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/ResponseMeta} obj Optional instance to populate.
+ * @return {module:model/ResponseMeta} The populated ResponseMeta
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new ResponseMeta();
+
+ if (data.hasOwnProperty('Contact')) {
+ obj['Contact'] = ApiClient.convertToType(data['Contact'], 'String');
+ }
+ if (data.hasOwnProperty('Copyright')) {
+ obj['Copyright'] = ApiClient.convertToType(data['Copyright'], 'String');
+ }
+ if (data.hasOwnProperty('License')) {
+ obj['License'] = ApiClient.convertToType(data['License'], 'String');
+ }
+ if (data.hasOwnProperty('OperationID')) {
+ obj['OperationID'] = ApiClient.convertToType(data['OperationID'], 'String');
+ }
+ if (data.hasOwnProperty('RequestIP')) {
+ obj['RequestIP'] = ApiClient.convertToType(data['RequestIP'], 'String');
+ }
+ if (data.hasOwnProperty('RequestType')) {
+ obj['RequestType'] = ApiClient.convertToType(data['RequestType'], 'String');
+ }
+ if (data.hasOwnProperty('RequestURL')) {
+ obj['RequestURL'] = ApiClient.convertToType(data['RequestURL'], 'String');
+ }
+ if (data.hasOwnProperty('ServerInfo')) {
+ obj['ServerInfo'] = ApiClient.convertToType(data['ServerInfo'], 'String');
+ }
+ if (data.hasOwnProperty('ServerResponseTime')) {
+ obj['ServerResponseTime'] = ApiClient.convertToType(data['ServerResponseTime'], 'String');
+ }
+ if (data.hasOwnProperty('ServerTimestamp')) {
+ obj['ServerTimestamp'] = ApiClient.convertToType(data['ServerTimestamp'], 'String');
+ }
+ if (data.hasOwnProperty('TaxnexusAccount')) {
+ obj['TaxnexusAccount'] = ApiClient.convertToType(data['TaxnexusAccount'], 'String');
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * Microservice Contact Info
+ * @member {String} Contact
+ */
+ResponseMeta.prototype['Contact'] = undefined;
+
+/**
+ * Copyright Info
+ * @member {String} Copyright
+ */
+ResponseMeta.prototype['Copyright'] = undefined;
+
+/**
+ * License Information and Restrictions
+ * @member {String} License
+ */
+ResponseMeta.prototype['License'] = undefined;
+
+/**
+ * Operation ID
+ * @member {String} OperationID
+ */
+ResponseMeta.prototype['OperationID'] = undefined;
+
+/**
+ * Request IP Address
+ * @member {String} RequestIP
+ */
+ResponseMeta.prototype['RequestIP'] = undefined;
+
+/**
+ * Request Type
+ * @member {String} RequestType
+ */
+ResponseMeta.prototype['RequestType'] = undefined;
+
+/**
+ * Request URL
+ * @member {String} RequestURL
+ */
+ResponseMeta.prototype['RequestURL'] = undefined;
+
+/**
+ * Data Server Info
+ * @member {String} ServerInfo
+ */
+ResponseMeta.prototype['ServerInfo'] = undefined;
+
+/**
+ * Data Server Response Time (ms)
+ * @member {String} ServerResponseTime
+ */
+ResponseMeta.prototype['ServerResponseTime'] = undefined;
+
+/**
+ * Backend Server Timestamp
+ * @member {String} ServerTimestamp
+ */
+ResponseMeta.prototype['ServerTimestamp'] = undefined;
+
+/**
+ * Taxnexus Account Number used for recording transactions
+ * @member {String} TaxnexusAccount
+ */
+ResponseMeta.prototype['TaxnexusAccount'] = undefined;
+
+
+
+
+
+
+export default ResponseMeta;
+
diff --git a/client/stash/test/api/StashPdfApi.spec.js b/client/stash/test/api/StashPdfApi.spec.js
new file mode 100644
index 0000000..7ab0050
--- /dev/null
+++ b/client/stash/test/api/StashPdfApi.spec.js
@@ -0,0 +1,63 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.StashPdfApi();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('StashPdfApi', function() {
+ describe('postPdfs', function() {
+ it('should call postPdfs successfully', function(done) {
+ //uncomment below and update the code to test postPdfs
+ //instance.postPdfs(function(error) {
+ // if (error) throw error;
+ //expect().to.be();
+ //});
+ done();
+ });
+ });
+ });
+
+}));
diff --git a/client/stash/test/model/Document.spec.js b/client/stash/test/model/Document.spec.js
new file mode 100644
index 0000000..e343143
--- /dev/null
+++ b/client/stash/test/model/Document.spec.js
@@ -0,0 +1,95 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.Document();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Document', function() {
+ it('should create an instance of Document', function() {
+ // uncomment below and update the code to test Document
+ //var instance = new Stash.Document();
+ //expect(instance).to.be.a(Stash.Document);
+ });
+
+ it('should have the property filename (base name: "Filename")', function() {
+ // uncomment below and update the code to test the property filename
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ID (base name: "ID")', function() {
+ // uncomment below and update the code to test the property ID
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property sagaType (base name: "SagaType")', function() {
+ // uncomment below and update the code to test the property sagaType
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentID (base name: "ParentID")', function() {
+ // uncomment below and update the code to test the property parentID
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property URI (base name: "URI")', function() {
+ // uncomment below and update the code to test the property URI
+ //var instance = new Stash.Document();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/DocumentResponse.spec.js b/client/stash/test/model/DocumentResponse.spec.js
new file mode 100644
index 0000000..cd53dd6
--- /dev/null
+++ b/client/stash/test/model/DocumentResponse.spec.js
@@ -0,0 +1,71 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.DocumentResponse();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('DocumentResponse', function() {
+ it('should create an instance of DocumentResponse', function() {
+ // uncomment below and update the code to test DocumentResponse
+ //var instance = new Stash.DocumentResponse();
+ //expect(instance).to.be.a(Stash.DocumentResponse);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Stash.DocumentResponse();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Stash.DocumentResponse();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/Error.spec.js b/client/stash/test/model/Error.spec.js
new file mode 100644
index 0000000..104166f
--- /dev/null
+++ b/client/stash/test/model/Error.spec.js
@@ -0,0 +1,77 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.Error();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('Error', function() {
+ it('should create an instance of Error', function() {
+ // uncomment below and update the code to test Error
+ //var instance = new Stash.Error();
+ //expect(instance).to.be.a(Stash.Error);
+ });
+
+ it('should have the property code (base name: "Code")', function() {
+ // uncomment below and update the code to test the property code
+ //var instance = new Stash.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property fields (base name: "Fields")', function() {
+ // uncomment below and update the code to test the property fields
+ //var instance = new Stash.Error();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property message (base name: "Message")', function() {
+ // uncomment below and update the code to test the property message
+ //var instance = new Stash.Error();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/NewPDF.spec.js b/client/stash/test/model/NewPDF.spec.js
new file mode 100644
index 0000000..ee77353
--- /dev/null
+++ b/client/stash/test/model/NewPDF.spec.js
@@ -0,0 +1,113 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.NewPDF();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('NewPDF', function() {
+ it('should create an instance of NewPDF', function() {
+ // uncomment below and update the code to test NewPDF
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be.a(Stash.NewPDF);
+ });
+
+ it('should have the property description (base name: "Description")', function() {
+ // uncomment below and update the code to test the property description
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property filename (base name: "Filename")', function() {
+ // uncomment below and update the code to test the property filename
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property HTML (base name: "HTML")', function() {
+ // uncomment below and update the code to test the property HTML
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property lastAccessedByID (base name: "LastAccessedByID")', function() {
+ // uncomment below and update the code to test the property lastAccessedByID
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property objectType (base name: "ObjectType")', function() {
+ // uncomment below and update the code to test the property objectType
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ownerID (base name: "OwnerID")', function() {
+ // uncomment below and update the code to test the property ownerID
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property parentID (base name: "ParentID")', function() {
+ // uncomment below and update the code to test the property parentID
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property ref (base name: "Ref")', function() {
+ // uncomment below and update the code to test the property ref
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property title (base name: "Title")', function() {
+ // uncomment below and update the code to test the property title
+ //var instance = new Stash.NewPDF();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/PDFRequest.spec.js b/client/stash/test/model/PDFRequest.spec.js
new file mode 100644
index 0000000..93fc0ad
--- /dev/null
+++ b/client/stash/test/model/PDFRequest.spec.js
@@ -0,0 +1,71 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.PDFRequest();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('PDFRequest', function() {
+ it('should create an instance of PDFRequest', function() {
+ // uncomment below and update the code to test PDFRequest
+ //var instance = new Stash.PDFRequest();
+ //expect(instance).to.be.a(Stash.PDFRequest);
+ });
+
+ it('should have the property data (base name: "Data")', function() {
+ // uncomment below and update the code to test the property data
+ //var instance = new Stash.PDFRequest();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property meta (base name: "Meta")', function() {
+ // uncomment below and update the code to test the property meta
+ //var instance = new Stash.PDFRequest();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/RequestMeta.spec.js b/client/stash/test/model/RequestMeta.spec.js
new file mode 100644
index 0000000..bd7a02e
--- /dev/null
+++ b/client/stash/test/model/RequestMeta.spec.js
@@ -0,0 +1,65 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.RequestMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('RequestMeta', function() {
+ it('should create an instance of RequestMeta', function() {
+ // uncomment below and update the code to test RequestMeta
+ //var instance = new Stash.RequestMeta();
+ //expect(instance).to.be.a(Stash.RequestMeta);
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Stash.RequestMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/client/stash/test/model/ResponseMeta.spec.js b/client/stash/test/model/ResponseMeta.spec.js
new file mode 100644
index 0000000..7ea433a
--- /dev/null
+++ b/client/stash/test/model/ResponseMeta.spec.js
@@ -0,0 +1,125 @@
+/**
+ * stash
+ * PDF Storage Microservice
+ *
+ * The version of the OpenAPI document: 0.0.2
+ * Contact: noc@taxnexus.net
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ *
+ */
+
+(function(root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD.
+ define(['expect.js', process.cwd()+'/src/index'], factory);
+ } else if (typeof module === 'object' && module.exports) {
+ // CommonJS-like environments that support module.exports, like Node.
+ factory(require('expect.js'), require(process.cwd()+'/src/index'));
+ } else {
+ // Browser globals (root is window)
+ factory(root.expect, root.Stash);
+ }
+}(this, function(expect, Stash) {
+ 'use strict';
+
+ var instance;
+
+ beforeEach(function() {
+ instance = new Stash.ResponseMeta();
+ });
+
+ var getProperty = function(object, getter, property) {
+ // Use getter method if present; otherwise, get the property directly.
+ if (typeof object[getter] === 'function')
+ return object[getter]();
+ else
+ return object[property];
+ }
+
+ var setProperty = function(object, setter, property, value) {
+ // Use setter method if present; otherwise, set the property directly.
+ if (typeof object[setter] === 'function')
+ object[setter](value);
+ else
+ object[property] = value;
+ }
+
+ describe('ResponseMeta', function() {
+ it('should create an instance of ResponseMeta', function() {
+ // uncomment below and update the code to test ResponseMeta
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be.a(Stash.ResponseMeta);
+ });
+
+ it('should have the property contact (base name: "Contact")', function() {
+ // uncomment below and update the code to test the property contact
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property copyright (base name: "Copyright")', function() {
+ // uncomment below and update the code to test the property copyright
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property license (base name: "License")', function() {
+ // uncomment below and update the code to test the property license
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property operationID (base name: "OperationID")', function() {
+ // uncomment below and update the code to test the property operationID
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestIP (base name: "RequestIP")', function() {
+ // uncomment below and update the code to test the property requestIP
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestType (base name: "RequestType")', function() {
+ // uncomment below and update the code to test the property requestType
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property requestURL (base name: "RequestURL")', function() {
+ // uncomment below and update the code to test the property requestURL
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverInfo (base name: "ServerInfo")', function() {
+ // uncomment below and update the code to test the property serverInfo
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverResponseTime (base name: "ServerResponseTime")', function() {
+ // uncomment below and update the code to test the property serverResponseTime
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property serverTimestamp (base name: "ServerTimestamp")', function() {
+ // uncomment below and update the code to test the property serverTimestamp
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ it('should have the property taxnexusAccount (base name: "TaxnexusAccount")', function() {
+ // uncomment below and update the code to test the property taxnexusAccount
+ //var instance = new Stash.ResponseMeta();
+ //expect(instance).to.be();
+ });
+
+ });
+
+}));
diff --git a/openapitools.json b/openapitools.json
new file mode 100644
index 0000000..061a772
--- /dev/null
+++ b/openapitools.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
+ "spaces": 2,
+ "generator-cli": {
+ "version": "6.0.1"
+ }
+}