/**
 * Forge SDK
 * The Forge Platform contains an expanding collection of web service components that can be used with Autodesk cloud-based products or your own technologies. Take advantage of Autodesk’s expertise in design and engineering.
 *
 * Contact: forge.help@autodesk.com
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/*jshint esversion: 9 */

module.exports = (function () {
	'use strict';

	var ApiClient = require('../ApiClient');

	/**
	* Webhooks service.
	* @module api/WebhooksApi
	*/

	/**
	 * Constructs a new WebhooksApi.
	 * @alias module:api/WebhooksApi
	 * @class
	 * @param {module:ApiClient} apiClient Optional API client implementation to use,
	 * default to {@link module:ApiClient#instance} if unspecified.
	 */
	var exports = function (apiClient, region) {
		this.apiClient = apiClient || ApiClient.instance;
		this.region = region || 'US'; // US is default

		/**
		 * Returns hooks.
		 * @param {Object} opts Optional parameters
		 * @param {String} opts.acceptEncoding If specified with `gzip` or `*`, content will be compressed and returned in a GZIP format.
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {StatusEnum} opts.status Status of the hooks. Options: ‘active’, ‘inactive’ - Default to ‘active’
		 * @param {String} opts.pageState Base64 encoded string used to return the next page of the list of webhooks.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.GetHooks = function (opts, oauth2client, credentials) {
			opts = opts || {};
			var postBody = null;

			var pathParams = {
			};
			var queryParams = {
				status: opts.status || /*StatusEnum.Active*/'active',
				pageState: opts.pageState,
				//region
			};
			var headerParams = {
				'Accept-Encoding': opts.acceptEncoding,
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/hooks', 'GET',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Returns hooks for systems.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {Object} opts Optional parameters
		 * @param {String} opts.acceptEncoding If specified with `gzip` or `*`, content will be compressed and returned in a GZIP format.
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {StatusEnum} opts.status Status of the hooks. Options: ‘active’, ‘inactive’ - Default to ‘active’
		 * @param {String} opts.pageState Base64 encoded string used to return the next page of the list of webhooks.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.GetSystemHooks = function (webhooksSystem, opts, oauth2client, credentials) {
			opts = opts || {};
			var postBody = null;

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling GetSystemHooks");

			var pathParams = {
				'webhooksSystem': webhooksSystem,
			};
			var queryParams = {
				status: opts.status || /*StatusEnum.Active*/'active',
				pageState: opts.pageState,
				//region
			};
			var headerParams = {
				'Accept-Encoding': opts.acceptEncoding,
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/hooks', 'GET',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Returns hooks for systems' events.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {WebhookEventEnum} eventType The webhook event type to get hooks for.
		 * @param {Object} opts Optional parameters
		 * @param {String} opts.acceptEncoding If specified with `gzip` or `*`, content will be compressed and returned in a GZIP format.
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {StatusEnum} opts.status Status of the hooks. Options: ‘active’, ‘inactive’ - Default to ‘active’
		 * @param {String} opts.pageState Base64 encoded string used to return the next page of the list of webhooks.
		 * @param {String} opts.scopeName Scope name used to create hook. For example : folder
		 * @param {String} opts.scopeValue Scope value used to create hook. If scopeValue is present then scopeName must be present, otherwise scopeValue would be ignored.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.GetSystemEventsHooks = function (webhooksSystem, eventType, opts, oauth2client, credentials) {
			opts = opts || {};
			var postBody = null;

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling GetSystemEventsHooks");
			// verify the required parameter 'eventType' is set
			if (eventType == undefined || eventType == null)
				return Promise.reject("Missing the required parameter 'eventType' when calling GetSystemEventsHooks");

			var pathParams = {
				'webhooksSystem': webhooksSystem,
				'eventType': eventType
			};
			var queryParams = {
				status: opts.status || /*StatusEnum.Active*/'active',
				pageState: opts.pageState,
				scopeName: opts.scopeName,
				scopeValue: opts.scopeValue,
				//region
			};
			var headerParams = {
				'Accept-Encoding': opts.acceptEncoding,
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/events/{eventType}/hooks', 'GET',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Returns hooks for model derivate events.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {WebhookEventEnum} eventType The webhook event type to get hooks for.
		 * @param {String} hookId The GUID of the hook to delete.
		 * @param {Object} opts Optional parameters
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.GetHook = function (webhooksSystem, eventType, hookId, opts, oauth2client, credentials) {
			opts = opts || {};
			var postBody = null;

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling GetHook");
			// verify the required parameter 'eventType' is set
			if (eventType == undefined || eventType == null)
				return Promise.reject("Missing the required parameter 'eventType' when calling GetHook");
			// verify the required parameter 'hookId' is set
			if (hookId == undefined || hookId == null)
				return Promise.reject("Missing the required parameter 'hookId' when calling GetHook");

			var pathParams = {
				'webhooksSystem': webhooksSystem,
				'eventType': eventType,
				'hookId': hookId
			};
			var queryParams = {
				//region
			};
			var headerParams = {
				'Accept-Encoding': opts.acceptEncoding,
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/events/{eventType}/hooks/{hookId}', 'GET',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Add new webhooks to receive the notification on all the events.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {String} callbackUrl Callback URL registered for the webhook.
		 * @param {Object} scope An object that represents the extent to where the event is monitored.
		 * @param {Object} opts Optional parameters
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {Object} opts.hookAttribute A user-defined JSON object, which you can use to store/set some custom information.
		 * @param {String} opts.tenant The tenant that the event is from. If the tenant is specified on the hook, then either the tenant or the scopeValue of the event must match the tenant of the hook.
		 * @param {String} opts.filter JsonPath expression to filter the callbacks you receive
		 * @param {String} opts.hubId Optional field which should be provided if the user is a member of a large number of projects. This hub ID corresponds to an account ID in the BIM 360 API, prefixed by “b.”
		 * @param {String} opts.projectId Optional field which should be provided if the user is a member of a large number of projects. This project ID corresponds to the project ID in the BIM 360 API, prefixed by “b.”
		 * @param {Boolean} opts.autoReactivateHook Optional. Flag to enable the hook for the automatic reactivation flow. Please see Event Delivery Guarantees for more details.
		 * @param {String} opts.hookExpiry Optional. ISO8601 formatted date and time when the hook should expire and automatically be deleted. Not providing this parameter means the hook never expires.
		 * @param {Boolean} opts.callbackWithEventPayloadOnly Optional. If “true”, the callback request payload only contains the event payload, without additional information on the hook. Hook attributes will not be accessible if this is “true”. Defaults to “false”.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.CreateSystemHook = function (webhooksSystem, callbackUrl, scope, opts, oauth2client, credentials) {
			opts = opts || {};

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling CreateSystemHook");
			// verify the required parameter 'callbackUrl' is set
			if (callbackUrl == undefined || callbackUrl == null)
				return Promise.reject("Missing the required parameter 'callbackUrl' when calling CreateSystemHook");
			// verify the required parameter 'scope' is set
			if (scope == undefined || scope == null)
				return Promise.reject("Missing the required parameter 'scope' when calling CreateSystemHook");

			var postBody = {
				callbackUrl: callbackUrl,
				scope: scope,
			};
			if (opts.hookAttribute != undefined && opts.hookAttribute != null)
				postBody.hookAttribute = opts.hookAttribute;
			if (opts.tenant != undefined && opts.tenant != null)
				postBody.tenant = opts.tenant;
			if (opts.filter != undefined && opts.filter != null)
				postBody.filter = opts.filter;
			if (opts.hubId != undefined && opts.hubId != null)
				postBody.hubId = opts.hubId;
			if (opts.projectId != undefined && opts.projectId != null)
				postBody.projectId = opts.projectId;
			if (opts.autoReactivateHook != undefined && opts.autoReactivateHook != null)
				postBody.autoReactivateHook = opts.autoReactivateHook;
			if (opts.hookExpiry != undefined && opts.hookExpiry != null)
				postBody.hookExpiry = opts.hookExpiry;
			if (opts.callbackWithEventPayloadOnly != undefined && opts.callbackWithEventPayloadOnly != null)
				postBody.callbackWithEventPayloadOnly = opts.callbackWithEventPayloadOnly;

			var pathParams = {
				'webhooksSystem': webhooksSystem,
			};
			var queryParams = {
				//region
			};
			var headerParams = {
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/hooks', 'POST',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Add new webhook to receive the notification on a specified event.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {WebhookEventEnum} eventType The webhook event type to create hool for.
		 * @param {String} callbackUrl Callback URL registered for the webhook.
		 * @param {Object} scope An object that represents the extent to where the event is monitored.
		 * @param {Object} opts Optional parameters
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {Object} opts.hookAttribute A user-defined JSON object, which you can use to store/set some custom information.
		 * @param {String} opts.tenant The tenant that the event is from. If the tenant is specified on the hook, then either the tenant or the scopeValue of the event must match the tenant of the hook.
		 * @param {String} opts.filter JsonPath expression to filter the callbacks you receive
		 * @param {String} opts.hubId Optional field which should be provided if the user is a member of a large number of projects. This hub ID corresponds to an account ID in the BIM 360 API, prefixed by “b.”
		 * @param {String} opts.projectId Optional field which should be provided if the user is a member of a large number of projects. This project ID corresponds to the project ID in the BIM 360 API, prefixed by “b.”
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.CreateSystemEventHook = function (webhooksSystem, eventType, callbackUrl, scope, opts, oauth2client, credentials) {
			opts = opts || {};

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling CreateSystemEventHook");
			// verify the required parameter 'eventType' is set
			if (eventType == undefined || eventType == null)
				return Promise.reject("Missing the required parameter 'eventType' when calling CreateSystemEventHook");
			// verify the required parameter 'callbackUrl' is set
			if (callbackUrl == undefined || callbackUrl == null)
				return Promise.reject("Missing the required parameter 'callbackUrl' when calling CreateSystemEventHook");
			// verify the required parameter 'scope' is set
			if (scope == undefined || scope == null)
				return Promise.reject("Missing the required parameter 'scope' when calling CreateSystemEventHook");

			var postBody = {
				callbackUrl: callbackUrl,
				scope: scope,
			};
			if (opts.hookAttribute != undefined && opts.hookAttribute != null)
				postBody.hookAttribute = opts.hookAttribute;
			if (opts.tenant != undefined && opts.tenant != null)
				postBody.tenant = opts.tenant;
			if (opts.filter != undefined && opts.filter != null)
				postBody.filter = opts.filter;
			if (opts.hubId != undefined && opts.hubId != null)
				postBody.hubId = opts.hubId;
			if (opts.projectId != undefined && opts.projectId != null)
				postBody.projectId = opts.projectId;

			var pathParams = {
				'webhooksSystem': webhooksSystem,
				'eventType': eventType
			};
			var queryParams = {
				//region
			};
			var headerParams = {
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/events/{eventType}/hooks', 'POST',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Partially update a webhook based on its webhook ID. The only fields that may be updated are: status, filter, and hookAttribute.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {WebhookEventEnum} eventType The webhook event type to create hool for.
		 * @param {String} hookId The GUID of the hook to modify.
		 * @param {String} payload An object that represents the modifications.
		 * @param {Object} opts Optional parameters
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.UpdateSystemEventHook = function (webhooksSystem, eventType, hookId, payload, opts, oauth2client, credentials) {
			opts = opts || {};

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling UpdateSystemEventHook");
			// verify the required parameter 'eventType' is set
			if (eventType == undefined || eventType == null)
				return Promise.reject("Missing the required parameter 'eventType' when calling UpdateSystemEventHook");
			// verify the required parameter 'hookId' is set
			if (hookId == undefined || hookId == null)
				return Promise.reject("Missing the required parameter 'hookId' when calling UpdateSystemEventHook");
			// verify the required parameter 'payload' is set
			if (payload == undefined || payload == null)
				return Promise.reject("Missing the required parameter 'payload' when calling UpdateSystemEventHook");

			var postBody = payload;
			var pathParams = {
				'webhooksSystem': webhooksSystem,
				'eventType': eventType,
				'hookId': hookId,
			};
			var queryParams = {
				//region
			};
			var headerParams = {
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/events/{eventType}/hooks/{hookId}', 'PATCH',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

		/**
		 * Deletes the webhook with the given GUID for the given model derivative event.
		 * @param {WebhooksSystemEnum} webhooksSystem A system for example: data, for Data Management
		 * @param {WebhookEventEnum} eventType The webhook event type to delete hook for.
		 * @param {String} hookId The GUID of the hook to delete.
		 * @param {Object} opts Optional parameters
		 * @param {RegionEnum} opts.xAdsRegion Specifies the region the request will be run in. Currently the regions that are supported are: ‘EMEA’, ‘US’. Default is US.
		 * @param {Object} oauth2client oauth2client for the call
		 * @param {Object} credentials credentials for the call
		 */
		this.DeleteHook = function (webhooksSystem, eventType, hookId, opts, oauth2client, credentials) {
			opts = opts || {};
			var postBody = null;

			// verify the required parameter 'webhooksSystem' is set
			if (webhooksSystem == undefined || webhooksSystem == null)
				return Promise.reject("Missing the required parameter 'webhooksSystem' when calling DeleteHook");
			// verify the required parameter 'eventType' is set
			if (eventType == undefined || eventType == null)
				return Promise.reject("Missing the required parameter 'eventType' when calling DeleteHook");
			// verify the required parameter 'hookId' is set
			if (hookId == undefined || hookId == null)
				return Promise.reject("Missing the required parameter 'hookId' when calling DeleteHook");

			var pathParams = {
				'webhooksSystem': webhooksSystem,
				'eventType': eventType,
				'hookId': hookId
			};
			var queryParams = {
				//region
			};
			var headerParams = {
				'x-ads-region': opts.xAdsRegion || this.region
			};
			var formParams = {};

			var contentTypes = ['application/json'];
			var accepts = ['application/vnd.api+json', 'application/json'];
			var returnType = Object;

			return this.apiClient.callApi(
				'/webhooks/v1/systems/{webhooksSystem}/events/{eventType}/hooks/{hookId}', 'DELETE',
				pathParams, queryParams, headerParams, formParams, postBody,
				contentTypes, accepts, returnType, oauth2client, credentials
			);
		};

	};

	/**
	 * Allowed values for the <code>export.DerivativeWebhookEvent</code> property.
	 * @enum {String}
	 * @readonly
	 */
	exports.WebhooksSystemEnum = {
		/**
		 * value: "derivative"
		 * @const
		 */
		"derivative": "derivative",
		/**
		 * value: "data"
		 * @const
		 */
		"data": "data",
		/**
		 * value: "adsk.c4r"
		 * @const
		 */
		'c4r': 'adsk.c4r',

	};

	/**
	 * Allowed values for the <code>export.WebhookEventEnum</code> property.
	 * @enum {String}
	 * @readonly
	 */
	exports.WebhookEventEnum = {
		// Data Management

		/**
		 * value: "VersionAdded"
		 * @const
		 */
		"VersionAdded": "dm.version.added",
		/**
		 * value: "VersionModified"
		 * @const
		 */
		"VersionModified": "dm.version.modified",
		/**
		 * value: "VersionDeleted"
		 * @const
		 */
		"VersionDeleted": "dm.version.deleted",
		/**
		 * value: "VersionMoved"
		 * @const
		 */
		"VersionMoved": "dm.version.moved",
		/**
		 * value: "VersionCopied"
		 * @const
		 */
		"VersionCopied": "dm.version.copied",
		/**
		 * value: "FolderAdded"
		 * @const
		 */
		"FolderAdded": "dm.folder.added",
		/**
		 * value: "FolderModified"
		 * @const
		 */
		"FolderModified": "dm.folder.modified",
		/**
		 * value: "FolderDeleted"
		 * @const
		 */
		"FolderDeleted": "dm.folder.deleted",
		/**
		 * value: "FolderMoved"
		 * @const
		 */
		"FolderMoved": "dm.folder.moved",
		/**
		 * value: "FolderCopied"
		 * @const
		 */
		"FolderCopied": "dm.folder.copied",

		// Model Derivatives

		/**
		 * value: "ExtractionFinished"
		 * @const
		 */
		"ExtractionFinished": "extraction.finished",
		/**
		 * value: "ExtractionUpdated"
		 * @const
		 */
		"ExtractionUpdated": "extraction.updated",

		// Revit Cloud Worksharing

		/**
		 * value: "ModelSync"
		 * @const
		 */
		"ModelSync": "model.sync",
		/**
		 * value: "ModelPublish"
		 * @const
		 */
		"ModelPublish": "model.publish",

		// Fusion Lifecycle
		/**
		 * value: "ItemClone"
		 * @const
		 */
		"ItemClone": "item.clone",
		/**
		 * value: "ItemCreate"
		 * @const
		 */
		"ItemCreate": "item.create",
		/**
		 * value: "ItemLock"
		 * @const
		 */
		"ItemLock": "item.lock",
		/**
		 * value: "ItemRelease"
		 * @const
		 */
		"ItemRelease": "item.release",
		/**
		 * value: "ItemUnlock"
		 * @const
		 */
		"ItemUnlock": "item.unlock",
		/**
		 * value: "ItemUpdate"
		 * @const
		 */
		"ItemUpdate": "item.update",
		/**
		 * value: "WorkflowTransition"
		 * @const
		 */
		"WorkflowTransition": "workflow.transition",

	};

	/**
	 * Allowed values for the <code>region</code> property.
	 * @enum {String}
	 * @readonly
	 */
	exports.RegionEnum = {
		/**
		 * value: "US"
		 * @const
		 */
		"US": "US",
		/**
		 * value: "EMEA"
		 * @const
		 */
		"EMEA": "EMEA",
		/**
		 * value: "EU"
		 * @const
		 */
		"EU": "EMEA",

	};

	/**
	 * Allowed values for the <code>export.StatusEnum</code> property.
	 * @enum {String}
	 * @readonly
	 */
	exports.StatusEnum = {
		/**
		 * value: "Active"
		 * @const
		 */
		'Active': 'active',
		/**
		 * value: "Inactive"
		 * @const
		 */
		'Inactive': 'inactive',

	};

	return exports;
}());